AI made writing the code easy. Running it in production is still hard.
Prod Forge is an open-source reference that shows how to build and operate a production-ready system: AI-assisted development, quality gates, CI/CD, infrastructure, observability, migrations, and rollback.
The implementation is based on a simple Todo API, but the architecture follows patterns used in real production systems at scale.
Every major technical decision is documented and explained.
| Repository | Description |
|---|---|
| Frontend | React Web and React Mobile apps + Design System |
| Backend | NestJS API - the main guide |
| Infrastructure | Terraform on AWS |
| Layer | Tools |
|---|---|
| Web Client | React · Vite · Redux Toolkit · Tailwind CSS · NX |
| Deploy | AWS S3 · CloudFront · ECR · ECS |
| Backend | NestJS · Prisma · PostgreSQL · Redis · Docker |
| Infrastructure | AWS · RDS · ElasticCache |
| Observability | Prometheus · Grafana · Loki · Promtail |
| Quality | ESLint · Prettier · Husky · Commitlint · CI/CD |
# Install all workspace dependencies
npm install
# Start the dev server
npm run dev
# Run all tests
npm run test
# Run Storybook
npm run storybook
# Build all packages
npm run build| Script | Description |
|---|---|
npm run dev |
Start web-client dev server |
npm run build |
Build all packages with NX |
npm run test |
Run all unit tests with NX |
npm run lint |
Lint all packages with NX |
npm run storybook |
Start Storybook for ui-web |
npm run storybook:build |
Build static Storybook |
npm run test:a11y |
Run Playwright a11y tests for ui-web |
npm run test:visual |
Run Playwright visual regression tests for ui-web |
npm run test:e2e |
Run Playwright e2e tests for web-client |
npm run format |
Format all files with Prettier |
All packages use the @prod-forge-todolist-frontend/ scope:
@prod-forge-todolist-frontend/core@prod-forge-todolist-frontend/ui-web@prod-forge-todolist-frontend/design-tokens@prod-forge-todolist-frontend/web-client(private, not published)
This monorepo uses NX for task orchestration (build caching, dependency-aware task ordering). Each package has a project.json that declares its targets.
# Run a specific target in one project
npx nx test core
npx nx storybook ui-web
npx nx build web-client
# Run a target across all projects
npx nx run-many -t testtsconfig.base.json at the root defines path aliases so TypeScript resolves workspace packages:
{
"@prod-forge-todolist-frontend/core": ["packages/core/src/index.ts"],
"@prod-forge-todolist-frontend/ui-web": ["packages/ui-web/src/index.ts"]
}Vite configs in each package add matching resolve.alias entries so Vite resolves the same paths during dev and test.
We welcome any kind of contribution, please read the guidelines:

