Skip to content

Project

Chart Chic

E-commerce site for a small business selling digital cross-stitch patterns

Feel free to share my work. I'd really appreciate it, because I don't tend to share it enough myself.

Role
Mine end to end: the architecture, payments and security decisions, and testing every section
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 live online shop selling digital cross-stitch patterns for a small business. With digital products, delivery is the hard part, because once someone has the file you can't take it back.

Payments and downloads

It uses Stripe Checkout, with orders fulfilled through Stripe's webhooks, and downloads are protected by links that only work for paid orders. Whether an order is paid is decided by the webhook, not by the customer's browser coming back to the site, because a browser can be closed, refreshed or faked.

There's an admin area for managing products, categories and reviews, and only people who've actually bought a pattern can leave a review, so the ratings mean something.

A security bug I caught

While building it I found a security hole in a Postgres view. Views don't automatically follow the security rules of the tables underneath them, which is easy to miss unless you've been caught by it before.

I found it before launch because I went looking for it.

Getting found

I also handled the SEO: structured data, an automatic sitemap, and generated images for when the site is shared on social media.

Built with

  • Next.js
  • Supabase
  • Stripe Checkout
  • Vercel

Next

A live 3D map of London drawn as holograms, built on Ordnance Survey and open data