CLI tool to scaffold full-stack projects with FastAPI or NestJS, Angular, and Docker
Project description
project-initializer
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-jsfor login/signup. Docker Compose omits the localdbservice 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04707a869f24358eb9b28536d179b6f0fbe9a1309695831c3ce71284a0b0e849
|
|
| MD5 |
8c94a1d330a586abdf5ed9843131b4af
|
|
| BLAKE2b-256 |
6271cf44463fb99e470d0fbb10f41c012c015b17353ed01758cd036e3e308033
|
File details
Details for the file project_initializer-0.2.1-py3-none-any.whl.
File metadata
- Download URL: project_initializer-0.2.1-py3-none-any.whl
- Upload date:
- Size: 322.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
958b8697fb4f02a296a609887c4d18ccc82072c1c63f88e2a0fd366e709085a2
|
|
| MD5 |
115d0b97210a8f24245136b91320ba11
|
|
| BLAKE2b-256 |
ec61d41933108437d8e2b0fdcbe91c376f0f1453a6399798695d5ada8d165630
|