AI

Introducing claude-code-py-ts-pg: a full-stack template w/ Claude built in

Claude CodeTemplateFull-Stack

Source on GitHub. It's a template repo, so u can hit "Use this template" & go.

I've just published claude-code-py-ts-pg: a GitHub template for full-stack Python + TypeScript + PostgreSQL projects, w/ Claude Code wired in as a first-class team member (not an afterthought or config-heavy).

Why?

Two frictions keep showing up, every single time I start a project:

  1. The first day goes to scaffolding the same stack over & over: FastAPI + SQLAlchemy + Alembic on one side, React + Vite + Vitest on the other, a Postgres container, a Makefile, CI... Boring, solved & still time-consuming.
  2. The AI harness config (rules, skills, permissions) lives in everyone's personal setup & never makes it into version control. So every teammate (& every fresh clone) re-teaches the agent the same conventions from scratch.

My take: the AI harness is production infrastructure. It belongs in the repo, committed & shared, same as ur CI config. (Remember the amplifier? AI accelerates whatever environment u hand it, so ship the environment w/ the code.)

What?

ComponentTechnologies
Backend APIPython 3.14 · FastAPI · SQLAlchemy 2.0 · Alembic · uv
FrontendTypeScript · React 19 · Vite · Vitest
DatabasePostgreSQL 17 (local Docker)
OrchestrationDocker + Docker Compose
AI harness.claude/: rules, skills, subagents, scoped permissions

The .claude/ directory is the actual point of the repo:

How?

cp .env.example .env
make up      # API on :8000, web on :5173, Postgres on :5432

Everything routes through the Makefile (make test, make lint, make fmt, make db-reset) so humans & agents share a single entry point (& a single set of commands to allowlist).

To start ur own project: use the template on GitHub, rename ccaidtemplate to ur project id, rewrite CLAUDE.md w/ ur own context, & drop the sample items resource once u've got real features in.

Wdyt?

Go grab it, it's MIT licensed. If ur team commits its harness to the repo too (or refuses to, on principle), I'd love to hear why. Issues & PRs welcome.