Three Foundations in Three Days: Storehouse, Facade and Footing
Between Sunday afternoon and Tuesday night, I shipped three things to version 1.0. None of them is a product you can sign up for, and that’s on purpose.
They’re the foundations that every future GraceSoft product will stand on:
- GraceSoft Storehouse: one home for my content, served as a small JSON API.
- GraceSoft Facade: one design system, so every product looks and behaves like it belongs to the same family.
- GraceSoft Footing: one Laravel starting point, with sign-in, security, billing and your-data controls already built.
Why build foundations at all?
Every time I start a new product, the same jobs come back. Sign-up and sign-in. Two-factor authentication. A theme toggle. Favicons. A privacy policy page. “Export my data.” “Delete my account.” Email templates that don’t look like a ransom note.
None of these is the reason anyone uses a product. But if any of them is missing or done badly, people notice. And when you’re a one-person studio, doing them from scratch every time means less time for the part that actually helps people.
So I stopped rebuilding them.
What shipped, in order
Sunday 19 October: Storehouse. The public-domain Proverbs (KJV, ASV and WEB) and my original quips moved out of individual apps and into one versioned API. The Proverbs web app, my Telegram bots and the Chuckle page on this site now read from the same source. By the evening it was on v1.1.0, with four new quips and a proper production branch.
Sunday night to Tuesday morning: Facade. Design tokens, self-hosted fonts, light and dark themes, components, icons, brand assets, accessibility tests and a linter that catches off-brand code. It ships as one package, with optional Blade components for Laravel.
Monday evening: Footing. A Laravel 12 starter built on Facade. Passkeys, authenticator apps, email sign-in codes, teams, Stripe billing, an activity log, data export, account deletion with a grace period, and a “Send feedback” dialog powered by GraceSoft Capture. It reached v1.0.0 just before midnight.
How it went this fast
Honestly? Preparation, and a lot of help.
Each project started with spec documents I wrote first: a design document, a milestone list and a test checklist. Then I worked through the milestones with Claude Code, reviewing each one, running the tests and fixing what broke. You can see it in the commit history: M0, M1, M2, all the way to release.
The speed came from deciding things before writing code, not from skipping the checks. Every project runs linting, type checks, tests and security scans in CI before anything reaches production.
What this means if you use GraceSoft products
Mostly, things you shouldn’t have to think about:
- A consistent experience. Buttons, forms, dialogs and themes work the same way in every product.
- Accessibility as a baseline. Facade is tested against WCAG 2.2 AA in both light and dark mode.
- Privacy by default. No Google Fonts, no third-party scripts, no tracking cookies in the foundations.
- Security by default. Passkeys, rate limits, a strict Content Security Policy and re-confirmation before sensitive changes, in every new product from day one.
- Your data, your call. Export everything as a ZIP, or delete your account with a 14-day window to change your mind.
Over the next few days I’ll write about each one in more detail. Next up: Storehouse, and why a handful of puns needed an OpenAPI contract.