- Commits, March to October 2026
- 735
- Background job queues
- 9
- Lighthouse accessibility, mobile
- 100
The brief
Anglers collect gear: rods, reels, bivvies, alarms, boxes of terminal tackle. Most of it still works, and most of it sits in a garage. The usual places to sell it weren't made for tackle. Auctions are slow and take a cut, and classified groups offer no protection to either side.
Purple Lane Holdings wanted a marketplace made for anglers. Sellers open a shop and list their gear. Buyers can browse by tackle category or fishing style, make an offer, buy several items from one seller in a single order, and message the seller as they go. Purple Lane needed it to take real payments without ever holding the money, and to be run by a small team from one admin console.
We've been building it since early 2026. The platform is running in production, and it's in the final stretch before a public launch.
Buying and selling
A listing carries photos, condition, brand, category, delivery options and a dispatch time. Buyers can save favourites and follow shops.

The shop pages filter by seller type, price, category, condition, fishing discipline and brand, with the filtering done on the server so it stays quick as the catalogue grows.

Bundles
Anglers buy in sets, so Netted lets a buyer bundle several items from the same seller into one order with one delivery charge. From a listing, "Bundle with more from this seller" opens the seller's shop in bundle mode. You tick what you want, and a bar along the bottom keeps the running total. Postage follows the seller's own rules: a flat charge, free, or free above a spend they set.

Offers and messages
A buyer can offer less than the asking price. The seller accepts or declines, the buyer can withdraw, and an offer that nobody answers expires on its own. An accepted offer goes straight to checkout at the agreed price.
Buyers and sellers message each other in real time, with typing indicators and attachments. A new message, offer or order shows up in the app straight away and as a push notification on the phone, without an app to install. Offers and orders also come by email, from order confirmations to dispatch reminders.

The admin console
The team runs Netted from a separate admin app: users, shops, listings, orders, offers, categories, blog posts, help pages and platform settings. People can report a listing, a seller or a user. Each report goes into a queue where someone can pick it up, keep notes and record what they did, from a warning to a ban. Admin actions are written to an audit log.

Suspending a seller is handled carefully. Their unshipped orders are cancelled, paid ones are refunded, open offers are declined and the buyers are told. Orders that are already in the post are left to complete.
The site also has a directory of 894 fishing venues across the UK and a blog, so anglers have a reason to visit between purchases.
How it works underneath
- Two buyers, one item. Second-hand gear is usually one of a kind. When someone checks out, the database locks that listing. If a second buyer arrives in the same instant, they're told straight away that it's gone rather than being charged for it. A repeated click can't create a second order either.
- Netted never holds the money. Payments run through Stripe Connect as direct charges. The buyer pays the seller's own Stripe account, and Netted's fee is taken from the payment as it happens. The platform never holds anyone's funds, which is the safer model for a small team.
- Jobs that happen later. Nine background queues handle what happens after a sale: chasing a seller who hasn't dispatched, giving the buyer time after delivery to raise a problem before the order completes, retrying refunds, sending email. Each job checks the order again when it runs, so nobody gets a reminder about something they've already done.
- Photos from any phone. Uploads up to 20 MB are accepted, including iPhone HEIC. Each photo is turned the right way up, has its location data and other metadata removed, and is saved in three sizes of WebP.
- Live updates across servers. Messages and notifications go over WebSockets through Redis, so they still arrive when more than one API server is running.
- Privacy built in. Users can download everything Netted holds about them, or delete their account themselves. Optional cookies wait for consent.
- Launching in stages. An admin switch turns buying on or off for the whole platform without a deploy. That let Purple Lane open for sellers first and switch buying on later. Admins can still buy while it's off, so the team could test real purchases on production first.
The stack and the deploys
Three apps share one codebase: the shop in Next.js, the API in NestJS, and the admin app in Next.js. Data is in PostgreSQL, photos are in MinIO, and Redis runs the queues. It all runs in Docker behind Caddy. Types are generated from the API, so the apps can't disagree about what it sends.
Merging to the production branch builds the images, deploys them and runs any database migrations. The new containers have to pass a health check before the old images are removed. The server's disk is small, so the deploy stops if space is too low rather than filling it.
Where it is now
The platform is running in production ahead of a public launch. The main domain carries a "coming soon" page where anglers can register their interest. The live home page scores 100 for accessibility and 100 for best practices in Lighthouse on mobile (three runs, 30 October 2026).
The listing, browse page and left-hand phone are from the live site. The bundle, the conversation and the admin console are from a copy of the platform running its built-in demo data, so no real customer's messages or details are shown.
Why it's on this site
Netted is the biggest build we've done: a two-sided marketplace with payments, messaging, moderation and an admin team behind it. When something goes wrong in a business like this, it costs someone money, so a lot of the work went into the parts nobody sees. If you need a system that holds up when real people and real money are involved, tell us what you're working around.
