6
Where it standsProducts live, build in progress
The brief came from the products
San's Bag sells handcrafted bags, and the design constraint followed from that rather than from a moodboard: nothing on the page competes with the bag. No rotating offer banners, no badges, no countdown timers. Photograph, name, price.
The catalogue is arranged as three collections, Lumina, Aura and Nova, so someone can browse by feel rather than scroll one long grid.
What is behind it
It is a Next.js storefront on its own PostgreSQL database rather than a rented shop platform. A rented platform charges a slice of every sale for as long as the shop exists, and this catalogue is meant to grow.
Products, collections, categories, orders, addresses and discount codes are all real records, so a discount has rules rather than being a price typed over by hand. Payment goes through Paystack, which covers cards and mobile money in one integration. Photography is served through Cloudinary at the size each screen needs. Customers sign in and see their own order history.
The half of the build that decides whether a shop survives
The admin is usually the part that gets left until last and then never finished. It was built alongside the shop here.
It adds and edits products, manages the collections, creates discounts and works through orders. A price drop is shown as a price drop rather than a number that quietly changed. Payment notifications are verified before anything is written to the database, so an order cannot be faked by anyone who finds the address.
Where it is now, honestly
Six products are live. That is not a technical limit and it is not a staged launch. The shop can only list what has been photographed, and the photography is still being worked through.
Everything around that is finished: browsing, cart, checkout, order confirmation, customer accounts and the admin. It is waiting on the rest of the catalogue and on its own domain, and the number on this page goes up as the pictures come in.


