
About this app
A full-stack demo web shop for handmade Norwegian crafts. It covers the whole path of an order: browsing, cart, Stripe payment, order history and cancellation with refund.
Payments run in Stripe test mode, so no real money is charged and no orders are shipped. Create an account, add something to your cart and pay with the test card 4242 4242 4242 4242, any future expiry date and any CVC.
Order totals are calculated on the server. Stripe webhooks are verified with their signature before an order is marked as paid.
Refreshing or retrying checkout reuses the existing payment intent instead of creating duplicate orders or charges.
Unpaid orders cancel their payment intent, paid orders are refunded through Stripe, and reserved stock is returned.
Customers only reach their own profile, cart and orders. The customer id always comes from the token, never from the request.
Product name, price and VAT are copied into each order line, so later price changes do not rewrite past orders.
Colors are defined as design tokens, so the whole interface switches theme from one place.