B Squared2
←  All work

Netted: a marketplace for anglers' tackle

A marketplace for buying and selling fishing tackle, with bundles, offers, live messaging, Stripe payouts and a full admin console. Built since early 2026; launching soon.

Client
Netted (Purple Lane Holdings)
Role
Platform build
Year
2026
Status
In development
Stack
Next.js, NestJS, TypeScript, PostgreSQL, Redis, BullMQ, MinIO, Stripe Connect, Socket.IO, Docker, Caddy, Marketplace
The Netted home page on a deep green header, with the headline "From One Setup to the Next", buttons for Shop the marketplace and Start selling, and a tablet and phone showing the shop beside it
Commits, March to October 2026
735Commits, March to October 2026
Background job queues
9Background job queues
Lighthouse accessibility, mobile
100Lighthouse accessibility, mobile

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.

A live Netted listing for a Korum Day Fishing Shelter Lite at £90.00: a large product photo with four thumbnails beneath, the breadcrumb All products, Bivvies, a New condition badge and the full description

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.

The All products page on the live site: filters down the left for seller type, price range, category, condition, discipline and brand, and six listings with photos and prices. Seller names are blurred

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.

A seller's shop in bundle mode: four of eight items ticked, including a Nash Titan bivvy and a Fox rod pod, with a bar at the foot reading "4 items £587.95" and a Checkout Bundle button

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.

Three phone screens: the live Korum shelter listing with its photo strip, a shop in bundle mode with two items ticked and a Checkout Bundle bar, and a conversation where buyer and seller agree a price before the buyer sends an offer

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.

A moderation report in the admin console titled "Harassment or abuse": the reported user, the reporter's description of abusive messages after a declined offer, a reference number, and a status of Investigating with an Assign to me button

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.

Something like this, for your business.

Tell us what you're working around at the moment and we'll tell you how we'd approach it.

00Cookies

This site uses Google Analytics to count visits and see which pages get read. It sets cookies, so it stays switched off unless you say yes. Nothing else is tracked, nothing is sold, and there is no advertising. What this means

00Analytics

We count visits with Google Analytics, which sets two cookies, to see which pages get read and improve the site. Google only processes it for us: no advertising, no data sharing, no profiles. You can turn it off now or any time from Cookie settings in the footer. The details