GraceSoftGraceSoft

GraceSoft Storehouse: One Home for Proverbs and Puns

Davina LeongOctober 22, 20262 min read

Over the years I’ve written a lot of quips. I also read a chapter of Proverbs a day. Both ended up powering side projects: a Proverbs web app, a Proverbs Telegram bot, the Chuckle jokes bot, and the Chuckle page on this site.

The trouble was that each one kept its own copy of the content. Fix a typo in one place, and it stayed wrong in three others.

GraceSoft Storehouse fixes that. It’s one place for the content, and one small API for all of them to read from. The Chuckle page already does.

How it works

The content lives as plain Markdown files in a Git repository: the book of Proverbs in three public-domain translations (KJV, ASV and WEB), and my original quips.

A build step checks every file against a schema, then turns it into static JSON. There’s no database and no server to keep alive for most requests. A small function handles the two endpoints that change: today’s Proverbs chapter, and a random quip.

Adding a new joke is a Markdown file and a pull request. On 19 October, that’s how quips 72 to 75 arrived, including the tragedy of Earl Cold.

Built like a real API, even though it’s a small one

It would have been easy to throw some JSON in a folder and call it done. I didn’t, because four different apps are meant to depend on this, and I want them to keep working when I change things.

  • An OpenAPI 3.1 contract. The API is described in a spec, and tests check that the real responses match it.
  • A typed client. My apps use a small client generated from that spec. If Storehouse is unreachable, it serves the last good response instead of breaking the page.
  • Versioned URLs. Everything lives under /v1, so future changes don’t surprise existing apps.
  • A short CORS allowlist. Browsers only accept responses on the GraceSoft sites that are meant to use it.
  • No API keys to leak. Everything served is public-domain scripture or content I’m happy to share, so there’s nothing secret to guard.
  • Checks on every change. Linting, type checks, content validation, spec linting, a dependency audit and Gitleaks secret scanning all run in CI.

A change of hosting on day one

Storehouse started on Cloudflare Pages. By the afternoon I’d moved it to Vercel, next to the Proverbs app, with hosting costs that stay negligible. Production now deploys only from a dedicated production branch. Everything on main becomes a preview first.

Why it matters

None of this is visible when you tap “Another one” on the Chuckle page. That’s the goal. The joke loads, the Proverbs chapter is correct everywhere, and when I fix a typo, I fix it once.

Next up: GraceSoft Facade, the design system behind the look of every future GraceSoft product.

Share this post

← Back to Blog