Taylor Made Hookbaits
Ecommerce
Taylor Made Hookbaits have been rolling carp baits by hand in small batches since 1984, and selling them the way a lot of small brands do: a Facebook post when a batch is ready, then messages back and forth to take the order. That works until it doesn’t. It has no stock control, no record of who bought what, and it asks the customer to wait for a reply before they can spend any money.
We built them a shop. The catalogue lives in Postgres, the storefront reads from it and the admin writes to it, so the range is a database record rather than something hard-coded. Checkout captures delivery details, re-prices every line on the server from the catalogue rather than trusting whatever the browser sent, writes the order, and hands the customer to Stripe’s own hosted page. A signed webhook is what marks the order paid, moves the stock and queues the receipt, so nobody can mark their own order paid by tampering with a redirect.
The part that matters commercially is that the shop can be run without us. Refunds go to Stripe and are only recorded here if Stripe accepts them, so the books cannot drift from the money. Orders print a picking list. Discount codes come off the goods and never the postage, which is how the deals for the lakes Jim supplies actually work. Postage and a shop-closed notice are settings, not a deploy. And because a product type is data rather than a code path, adding a new line grows a shop tab, a card, a product page, a cart line and a priced checkout without anyone touching the code.
// Project Scope
Catalogue as Data, Not Code
Product types are rows, not code paths. Adding a new kind of product is done in the admin and grows a shop tab, a card, a product page, a cart line and a priced checkout with no deploy.
Server-Priced Stripe Checkout
Every line is re-priced on the server from the catalogue before an order is written, and only a signature-verified webhook marks it paid, moves stock and queues the receipt.
Accounts Built for Re-ordering
The account area is a Buy it again list, one row per product ever bought, because anglers run out of a single flavour rather than wanting last spring’s basket repeated. Guest checkout is never gated.
An Admin That Runs the Shop
Refunds through Stripe, receipts re-sent, picking lists printed, discount codes off the goods and never the postage, plus postage price and a shop-closed notice as settings rather than a developer job.
Order Email That Cannot Fail a Sale
Receipts are queued in the database and sent by a retrying worker, so a mail outage delays an email instead of breaking somebody’s order.
Locked Down by Default
Per-user staff logins with server-side sessions and an audit log, no self-service staff signup by design, and a content security policy with no third-party origins at all.
// Inside the Build
A look at the product.
Want a project like this?
Tell us about your project and we'll get back to you within one working day.
Start a Project