Tagline
Django e-commerce, sustainable products.
Tech Stack
Python, Django, React, JavaScript, PostgreSQL, TailwindCSS

Django e-commerce, sustainable products.
Python, Django, React, JavaScript, PostgreSQL, TailwindCSS
A Django storefront for sustainable goods, with the usual operator side (inventory, orders, customers) running on PostgreSQL behind a React front end.
Sustainability-first product catalogue managed via Django admin — each item carries carbon-impact, source, and certification metadata alongside the usual SKU fields.
Django · PostgreSQL
tap a step to explore →
A sustainability-focused seller needed more than a generic storefront. Buyers of these products care about provenance — carbon impact, sourcing, certifications — so that information had to sit alongside every product, not in a separate 'about' page, while the shop still had to handle checkout and fulfilment reliably.
A Django storefront with a React front end. The Django admin manages a catalogue where each item carries sustainability metadata beside the usual SKU fields; the React side has server-rendered category pages, faceted search, and wishlist/compare drawers. Checkout runs on Stripe Elements with 3D-Secure, and a webhook fires order confirmation into a fulfilment queue backed by PostgreSQL.
The decision that shaped the UX was cart persistence: keep it client-side in localStorage, or sync it to the backend. Client-only is trivial but the cart evaporates when someone switches from phone to laptop mid-shop — common for considered purchases. I chose backend-synced carts tied to the user session, accepting the extra API traffic and complexity so the cart follows the buyer across devices. Stock is decremented atomically on payment capture to prevent overselling.
Atomic capture stopped oversell, and the synced cart made multi-device shopping seamless. The tradeoff is that checkout is now coupled to Stripe's webhooks, so the robustness work I'd prioritise next is idempotency keys on webhook handling and a reconciliation job to catch the occasional retry or dropped event.


