Skip to main content

CLI tool to scaffold full-stack projects with FastAPI or NestJS, Angular, and Docker

Project description

project-initializer

License: MIT Python 3.10+ CI

CLI tool to scaffold full-stack projects with FastAPI or NestJS, Angular, and Docker — with optional authentication via token or Supabase.

Installation

pip install project-initializer

Or install from source:

git clone https://github.com/silviobaratto/project-initializer.git
cd project-initializer
pip install -e .

Quick Start

project-initializer my-project
cd my-project
# Edit api/.env with your real keys
docker-compose up -d

Framework Selection

Choose a backend framework with --fastapi (default) or --nestjs:

project-initializer my-app --fastapi    # FastAPI backend (default)
project-initializer my-app --nestjs     # NestJS backend
Feature FastAPI NestJS
Language Python 3.12 TypeScript (Node 20)
ORM SQLAlchemy + Alembic Prisma
AI/LLM BAML (Python) BAML (TypeScript)
API style REST with Pydantic REST with class-validator
Architecture Layered (routes/services/repos) Modular (controllers/services/modules)

Authentication Modes

Add authentication with --auth token or --auth supabase:

project-initializer my-app --auth token      # Simple bearer-token auth
project-initializer my-app --auth supabase    # Supabase JWT auth + RLS
  • No auth (default) — No authentication middleware. Good for prototyping.
  • Token auth (--auth token) — Bearer-token middleware on the API. Frontend gets a login guard and an HTTP interceptor that attaches the token.
  • Supabase auth (--auth supabase) — Supabase JWT validation on the API. Frontend integrates @supabase/supabase-js for login/signup. Docker Compose omits the local db service since Supabase hosts the database.

All 6 Variants

Command Backend Auth
project-initializer app FastAPI None
project-initializer app --auth token FastAPI Token
project-initializer app --auth supabase FastAPI Supabase
project-initializer app --nestjs NestJS None
project-initializer app --nestjs --auth token NestJS Token
project-initializer app --nestjs --auth supabase NestJS Supabase

Additional flags:

project-initializer my-project --force     # Overwrite existing files
project-initializer .                      # Scaffold in current directory
project-initializer --version              # Show version

Generated Project Structure

my-project/
├── api/                    # Backend (FastAPI or NestJS)
│   ├── .env                # Auto-generated from variant
│   ├── Dockerfile
│   └── ...
├── frontend/               # Angular + Tailwind CSS
│   ├── Dockerfile
│   ├── nginx.conf
│   └── src/
├── docker-compose.yml      # Full-stack orchestration
├── .env.example            # Reference for environment variables
└── CLAUDE.md               # AI assistant guidance

Docker Services

Service Port Description Supabase variants
db 5433:5432 PostgreSQL 16 Omitted (Supabase hosts DB)
adminer 8080:8080 DB management UI Omitted
api 8000:8000 Backend with hot reload Present
frontend 4200:80 Angular + nginx (proxies /api/ to backend) Present

Environment Configuration

The CLI auto-generates api/.env based on the chosen variant. A root .env.example documents all possible variables.

For Supabase variants, configure these in api/.env:

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_PUBLISHABLE_KEY=your-anon-key

Development

FastAPI

cd api
pip install -r requirements.txt
uvicorn app.main:app --reload          # API on :8000
alembic upgrade head                   # Run migrations
pytest                                 # Run tests

NestJS

cd api
npm install
npm run start:dev                      # API on :8000
npx prisma migrate dev                 # Run migrations
npm run test                           # Run tests

Frontend (Angular)

cd frontend
npm install
ng serve                               # Dev server on :4200
ng build                               # Production build
ng test                                # Unit tests

Contributing

See CONTRIBUTING.md for development setup, template architecture, and PR guidelines.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

project_initializer-0.2.1.tar.gz (233.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

project_initializer-0.2.1-py3-none-any.whl (322.4 kB view details)

Uploaded Python 3

File details

Details for the file project_initializer-0.2.1.tar.gz.

File metadata

  • Download URL: project_initializer-0.2.1.tar.gz
  • Upload date:
  • Size: 233.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for project_initializer-0.2.1.tar.gz
Algorithm Hash digest
SHA256 04707a869f24358eb9b28536d179b6f0fbe9a1309695831c3ce71284a0b0e849
MD5 8c94a1d330a586abdf5ed9843131b4af
BLAKE2b-256 6271cf44463fb99e470d0fbb10f41c012c015b17353ed01758cd036e3e308033

See more details on using hashes here.

File details

Details for the file project_initializer-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for project_initializer-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 958b8697fb4f02a296a609887c4d18ccc82072c1c63f88e2a0fd366e709085a2
MD5 115d0b97210a8f24245136b91320ba11
BLAKE2b-256 ec61d41933108437d8e2b0fdcbe91c376f0f1453a6399798695d5ada8d165630

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page