Manual setup checklist
This MVP keeps secrets out of product state. Configure these values manually in `.env.local`.
Create a Neon development database
Use a development-only database with no production data. This is classified as low risk when cost blast radius and data sensitivity are limited.
Set DATABASE_URL
Paste the Neon connection string into `.env.local`. Do not commit it.
Generate AUTH_SECRET
Use a long random value for signed owner sessions.
Generate OWNER_PASSWORD_HASH
Run `npm run auth:hash -- "your password"` and copy the generated scrypt hash.
Connect OpenCode to ChatGPT Plus/Pro
Run OpenCode `/connect`, choose OpenAI, and select `ChatGPT Plus/Pro`. Local runs use the resulting auth file without storing it in Wondermade state.
Configure deployed OpenCode auth
For Vercel or sandbox execution, set `OPENCODE_AUTH_CONTENT` to the full OpenCode auth JSON as an encrypted environment secret. Leave it empty for normal local development.
Configure the runtime worker
OpenCode questioning is queued in Postgres. Run `npm run runtime:worker` locally after queuing a job, and set `RUNTIME_WORKER_SECRET` for trusted production worker calls.
Run migrations
Run `npm run db:migrate` after DATABASE_URL is configured.
Validate safely
Run `npm run build`. The app should build without printing any secret values.