Store, understood
For Developers, integrators and product people who will build, operate or answer for a store, and who keep finding that the interesting bugs live between the parts rather than inside them. · 16 days · Tech
The days
- 0Build the smallest store that breaksBy the end you can create `store.db` with products, prices and one order, and show that the order remembers a price the catalogue has forgotten.
- 1Separate what you sell from what you chargeBy the end you can explain why a product, its code and its price are three separate things, and query a catalogue where one product carries two prices.
- 2Treat availability as a promiseBy the end you can explain why a stock count is not an answer to "can I sell this", and hold stock for an order without overselling.
- 3Own the cart as stateBy the end you can store a cart as rows keyed to a shopper, add the same item twice without duplicating it, and say what a cart is not.
- 4Show a price you can honourBy the end you can serve a catalogue from a cache and re-check the price at the moment of acceptance, and explain why those are two different reads.
- 5Freeze the order at the moment of acceptanceBy the end you can write the checkout step that turns a cart into an order, and name every value it must copy rather than reference.
- 6Ask for tax, do not invent itBy the end you can list the facts a store must supply for tax to be determined, and store the resulting tax on the order as its own line.
- 7Separate authorised money from captured moneyBy the end you can model a payment through authorised, captured and settled, and explain why an order may be paid and unfunded at the same time.
- 8Give the order one state machineBy the end you can express an order's life as a small set of named states with legal transitions, and reject an illegal one in the database.
- 9Deliver the thing you promisedBy the end you can separate what the buyer is owed from what they were billed, and record fulfilment as its own fact.
- 10Reconcile the store against the moneyBy the end you can produce the three-way comparison between orders, payments and fulfilments, and name what each kind of mismatch means.
- 11Weigh a fraud rule against the customers it blocksBy the end you can compute how many good orders a fraud rule blocks per bad one it catches, and explain why a highly accurate rule can still be a bad one.
- 12Return the goods and the money togetherBy the end you can record a partial return that reverses the right amount of tax, and explain why a refund is not a negative sale.
- 13Refuse the price the client sends youBy the end you can demonstrate a price-tampering attempt and block it by deriving every money figure on the server.
- 14Report conversion without flattering itBy the end you can state the denominator behind a conversion rate and show how two defensible definitions produce different numbers.
- 15Follow one order across six disciplinesBy the end you can trace a single order through catalogue, checkout, tax, payment, fulfilment and reporting, naming which discipline owns each step and what breaks at each handoff.