/ E-COMMERCE

SoapBizz

A zero-JS-by-default storefront that the shop owner can manage without touching code.

AstroReactKeystatic CMSNeon (Postgres)JoseBcryptjs
SoapBizz interface
0
Mobile load time
0
Lighthouse score
0
JS on landing page
0
Admin dependency

01 / CONTEXT

Overview

THE CHALLENGE

A small handmade soap business needed an online presence but had no technical background. Shopify was too expensive for their scale; a bespoke CMS was overkill. They needed something fast, affordable, and manageable through a friendly admin UI.

THE SOLUTION

Built with Astro for maximum performance and Keystatic CMS for a Git-backed admin interface. The shop owner edits products, prices, and content directly in the Keystatic UI, changes commit to the repo and trigger a rebuild automatically. Neon's serverless Postgres handles orders and contact leads.

THE OUTCOME

The site loads in under a second on mobile with a perfect Lighthouse score. The owner updates products weekly without any developer involvement.

02 / WHAT IT DOES

Key features

Keystatic CMS

A Git-backed content management interface that works without a database. The shop owner edits products and pages through a Notion-like UI; changes are committed directly to the repository.

Serverless Postgres

Neon's serverless Postgres stores order inquiries and contact leads. The connection scales to zero between requests, no idle compute cost for a small business.

Astro Islands

The product gallery and cart widget are React islands, only the interactive parts ship JavaScript. The rest of the site is pure HTML, giving instant load times.

Secure Auth

The admin area is protected with a JWT-based session (jose) and bcrypt-hashed passwords, no third-party auth service needed, keeping infrastructure costs at zero.

03 / STACK

Tech decisions

Tap any item to see why it earned a place.

04 / PROCESS

How it came together

05 / HARD PARTS

Challenges & solutions

The challenge was making content editing feel as natural as writing a document. Keystatic's Notion-like UI was a great fit, but I also wrote a one-page quick-start guide with screenshots tailored to their specific workflow.

The cart needed to persist across page navigations without a backend cart session. I implemented it as a Nanostores atom that serialises to localStorage, keeping the pattern simple and the server stateless.

LET'S BUILD SOMETHING TOGETHER

I'm always open to discussing new projects, partnerships, or just a good idea.