Skip to content

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 .env files across backend/, frontend/, landing/, and backend/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.

  1. Push to your own repository:

    git remote add origin git@github.com:your-org/your-project.git
    git push -u origin main
    
  2. Teammates clone and configure:

    • Clone your repository (not the FastSvelte template).
    • Install the prerequisites (uv, Node.js 22+, Docker).
    • Create .env files 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 sync in backend/, npm install in frontend/ and landing/
    • 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.