FastAPI, React 19 and Postgres with auth, CRUD and 200+ end‑to‑end tests. Mocks and untested routes fail the build, so your agent can't fake a green check.
FastAPI with OpenAPI docs out of the box, and errors your frontend can rely on.
Every error is {detail, error_code}
Unique and foreign-key violations become clean 400s
422s map to messages on the right form field
One structured log event per request, secrets redacted
Sentry wired in, with personal data stripped
localhost:9095/docs
One command to run, ready to ship
Docker Compose starts Postgres, the API and the app with health checks.
Multi-stage Dockerfiles with pinned uv and Bun images
Backend runs as a non-root user
Migrations run on boot
About 60 make targets, make ci checks everything
GitHub Actions for backend, frontend and the generator
ai-fsr init shipyard
Initializing project: shipyard
Project 'shipyard' created successfully
Next steps:
cd shipyard
cp .env.example .env
docker compose up -d
The application will be available at:
- Backend API: http://localhost:9095
- Frontend: http://localhost:3000
- API Docs: http://localhost:9095/docsApplied substitutions to 6 file(s)
What's included
Production defaults, not boilerplate
Guards that catch shortcuts
The build fails on a mock, on a route no test calls, on a page no spec opens, and on a model change without a migration. Your agent can't skip the hard part.
A mock import
A route no test calls
A page no spec opens
A model without a migration
E2E route coverage: every app route needs at least one successful request. GET /items/export/summary: never requested
router.pyservice.pyrepository.py
Clean architecture
Router, service and repository layers. A new repository is three lines.
search=desk
ilikeingteorder_by
Filters and pagination
Search, ilike, in, gte, sort and page-size limits on every list.
One structured event per request, with a request ID and secrets redacted.
exact pin
7+ days old
no critical / high CVE
Supply-chain rules
Exact pins only. Packages at least 7 days old with no open critical or high CVE.
For coding agents
Your agent reads the rules, then the tests check them
Agents are fast and confident, and they love a mock that makes a test pass. This template gives them clear instructions and takes the shortcuts away.
Nested AGENTS.md files for the repo, backend and frontend
A project-standards skill with step-by-step recipes for new entities and pages
An 8-point Definition of Done the agent must meet
One command, make ci, that checks everything
Works withClaude CodeCursorCodexany agent that reads AGENTS.md
template/
## Definition of Done
A change is done only when all items are true:
1. The code follows the project-standards skill.
2. Every new or changed backend endpoint has an
e2e test with at least one successful request.
3. Every new page and API endpoint is used by
a spec in frontend/e2e/.
4. A model change has an Alembic migration.
5.make check passes.
6.make test passes.
7. New packages follow the supply-chain rule.
8. Docs say so when a command or rule changes.
TID251 `unittest.mock` is banned: No mocks: the backend
tests are end-to-end. See tests/e2e/conftest.py.
--> tests/e2e/test_tmp_mock.py:1:22
|
1 | from unittest import mock
| ^^^^
|
Found 2 errors.
Developer experience
Code you'd write yourself, on a good day
Real files from the template. Typed end to end, and short.
No. The app has no LLM SDK. The "AI" part is for the agent that writes your code: AGENTS.md files, a standards skill with recipes, and guards that catch shortcuts. You can add any AI provider you want.
Which coding agents does it work with?
Any agent that reads AGENTS.md. The standards are plain Markdown, and Claude Code also loads them as a skill from .claude/skills.
Why only end-to-end tests?
A mock agrees with whatever the code does, including its bugs. A test against real Postgres and a real server can't be talked into passing, by a person or by an agent.
Does it send emails?
Not yet. Password reset and verification tokens are created and checked; you connect the email provider you use.
What do I need installed?
Docker and uv. Bun is only needed if you run the frontend outside its container.
How do I deploy it?
Both apps ship multi-stage Dockerfiles. The backend runs as a non-root user and applies migrations on boot, so any container host works.
Start your next app in one command
Free and open source. Your agent will thank you, and your tests will keep it honest.