Skip to content

Project

Chart Chic

Production e-commerce site — Stripe fulfilment, signed-URL delivery, admin CMS

Role
Sole engineer — architecture, payments, security, SEO
Status
Live
The Chart Chic storefront: a serif hero reading 'Patterns that make your hoop feel like home', a watercolour illustration of a woman embroidering, and pattern category pills.
RLS bypass
found and fixed in a Postgres view pre-launch
Signed URLs
download gating tied to fulfilled orders
Verified
reviews restricted to actual purchasers

What it is

A production e-commerce site selling digital cross-stitch patterns for a small business. Digital goods make the delivery problem the whole problem: once a file leaves the server, nothing can un-send it.

Payments and delivery

Stripe Checkout with webhook-driven order fulfilment, and downloads gated behind signed URLs issued only against a fulfilled order. The webhook is the source of truth for whether an order is paid — never the browser's return trip, which a customer can close, refresh or forge.

An admin CMS covers product, category and review management, and reviews are restricted to verified purchasers so the ratings mean something.

The bug worth mentioning

During the build I found a live Row-Level Security bypass in a Postgres view. Views do not automatically inherit the policies of the tables beneath them, which is the sort of detail that is obvious once you have been bitten and invisible until then.

It was caught before launch because I went looking for it rather than waiting for it. That is the whole argument for treating security as part of schema design instead of a pass at the end.

Being found

SEO implemented end to end: structured data, a generated sitemap, and dynamic Open Graph images. For a small shop, the difference between existing and being found is most of the business.

Built with

  • Next.js
  • Supabase
  • Stripe Checkout
  • Vercel

Next

Live conversational-avatar platform — multi-provider AI agents, real-time voice and video