Setup wizard
starter init turns a fresh clone into a configured app. It's interactive and safe
to run more than once.
uv run flask --app wsgi:app starter init
What it asks
- Core: environment, app URL, database URL, superadmin IDs. It offers to
generate strong
SECRET_KEYandENCRYPTION_KEYvalues for you. - Stripe billing: off by default; collects keys and plan price IDs if enabled.
- Email (Resend): off by default; collects API key and from-address.
- Storage:
localors3(with S3/R2 credentials). - Brand: product name, tagline, colours, and logo paths.
What it writes
.env: environment variables (existing keys preserved; backed up first)app/brand/brand.json: your starter brand defaultsinstance/starter.json: non-secret setup metadata
Secrets you enter or that are generated are never printed back, and an existing
.env is backed up before any change. Both files are git-ignored.
After running
uv run flask --app wsgi:app db upgrade