Project Setup¶
After this guide you'll understand what init.py configured, where configuration lives, and how to onboard a teammate.
What init.py does¶
You run init.py once during Quick Start. It:
- prompts for your app name, mode (
b2c/b2b), and database; - generates the
.envfiles acrossbackend/,frontend/,landing/, andbackend/db/; - starts Docker PostgreSQL and runs migrations (with seed data);
- installs backend (
uv) and frontend/landing (npm) dependencies; - generates the type-safe API client (see Type-Safe API Client).
Pass --dry-run to preview without making changes.
No email is sent in development
The email provider defaults to stub. Verification and invitation links appear as [STUB EMAIL] blocks in the backend logs instead (see Transactional Email).
Tip
Once setup works, you can delete init.py. It's only needed once.
Onboarding teammates¶
Only the first developer runs init.py. Everyone else starts from your committed, pre-configured repository.
-
Push to your own repository:
-
Teammates clone and configure:
- Clone your repository (not the FastSvelte template).
- Install the prerequisites (uv, Node.js 22+, Docker).
- Create
.envfiles by copying each.env.example(backend/,frontend/,landing/,backend/db/). - Start the database:
docker compose -f backend/docker-compose.yml up db -d - Run migrations:
cd backend/db && ./sqitch.sh dev deploy - Install deps:
uv syncinbackend/,npm installinfrontend/andlanding/ - Create a local admin:
cd backend && uv run scripts/create_admin.py
Never commit .env files
They contain secrets and are gitignored. Share values through a secure channel (1Password, Doppler, a shared secrets manager).
See Configuration for the full variable reference.