Kennedy Wambua
← All work Case study · Solo build · 2026

Signature Closet

An online store and admin workspace for the fashion label Signature The Brand. I built it alone, from database to storefront.

Role
Sole developer
Stack
Next.js 16, React 19, Supabase, PostgreSQL, Cloudflare
Status
Pre-launch
Links
thesignaturecloset.co ↗
Signature Closet storefront home page with a pyjamas campaign banner and collection tiles
The storefront (pre-launch, sample catalogue and imagery)
The problem

A small fashion label needs a store that looks as good as its clothes, and a back office the team can run without a developer.

With small stock counts, selling the same last piece to two people is a real risk.

My part

I'm the only developer. I designed the database, built the storefront and the admin, and set up deployment.

What I built

Problems I solved, and how

  1. Stock that can't be oversold

    Problem
    Two shoppers checking out at the same moment could both buy the last item.
    Approach
    Placing an order runs as one Postgres transaction that locks the inventory rows and reserves the stock. Rows are locked in a fixed order, so two checkouts can't deadlock each other. A trigger releases the reservation when an order is cancelled or expires.
  2. A safe first-admin setup

    Problem
    On a fresh install, someone has to become the first admin, and two people trying at once must not both win.
    Approach
    Claiming the first admin takes a transaction-level advisory lock. Permissions such as managing products or the team are database functions used by the row-level security rules, so the UI can't grant more than the database allows.
  3. An admin the team can actually run

    Problem
    The brand's team needs to manage the shop without asking a developer.
    Approach
    The admin workspace has 14 sections, from products and orders to returns and team members.
  4. Next.js on Cloudflare

    Problem
    Cloudflare Workers are cheap and fast, but Next.js doesn't run there out of the box, and Workers reject any single asset over 25 MiB.
    Approach
    The app is built with OpenNext and deployed from version tags. A CI step fails the build if any asset is over the limit, so a heavy image can't break a release.
More work
← Back to all work Get in touch →