I got tired of Claude Code picking slightly different implementations of Postgres or whatever else each time I started a project. And when I'd forget to mention Fly.io for deployment, it'd have to redo a bunch of work later. So I made a starter repo that standardises all of it.
What's in it
- Docker Compose
- Node.js
- Local Postgres (not in Docker — running Postgres in Docker is just too annoying)
- Each project gets a randomly assigned local port based on the project name
- A
/healthendpoint Claude Code can curl to confirm things are working, including the Postgres connection - Deployment config for Fly.io, using their managed Postgres instance (one instance across all my projects to keep costs down)
Documentation files
Claude Code relies on these to stay on track:
| File | Purpose |
|---|---|
README.md |
Entry point that points Claude Code to the other docs |
SPEC.md |
Project overview. First instruction is to overwrite the starter repo description with whatever the new project actually does |
CLAUDE.md |
Behavioural rules for Claude Code |
CHANGELOG.md |
Updated as Claude Code makes changes |
GOTCHAS.md |
Tracks bugs and traps, e.g. Claude forgetting Postgres runs locally and looking for it in Docker |
Deployment
Fly.io deployment is essentially one command. The repo includes instructions for creating projects within Fly, configuring them, all of it.
Git workflow
Claude Code uses Git but won't push or deploy without me saying so. I check its work on my dev machine, then handle GitHub pushes and deployments myself.
I've tweaked this repo a lot over the months. It saves me a lot of ramp-up time per project.