Files
teatea-pension/.trellis/spec/backend/deployment.md

59 lines
1.8 KiB
Markdown

# Deployment Targets
## Scenario: Wulanchabu Server Deployment
### 1. Scope / Trigger
- Trigger: the user asks to deploy this project.
- Default target: Wulanchabu server, reached through SSH host alias `wlcb1`.
- This preference is project-specific and should be used for future deployment requests unless the user explicitly names another target.
### 2. Signatures
- SSH entrypoint: `ssh wlcb1`
- Repository remote: push code to `origin` before deploying.
- Database migration command: `pnpm db:migrate`
- Production build command: `pnpm build`
### 3. Contracts
- Required environment on the server:
- `DATABASE_URL` must point to the production PostgreSQL database.
- Node.js and pnpm must be available.
- Deployment should run from the server-side checkout for this repository.
- Code should be pushed to `origin` before server deployment so `wlcb1` deploys committed source.
### 4. Validation & Error Matrix
- Missing `DATABASE_URL` -> deployment is not healthy; setup/login APIs return database configuration failures.
- Migration failure -> stop deployment and report the failing migration output.
- Build failure -> stop deployment and report the failing command output.
- SSH failure -> report that `wlcb1` could not be reached.
### 5. Good/Base/Bad Cases
- Good: commit locally, push to `origin`, SSH to `wlcb1`, update checkout, install deps, migrate DB, build, restart app.
- Base: if the server has a project-specific deploy script, run that script after pushing.
- Bad: deploy uncommitted local files, deploy to a different host by default, or skip migrations after schema changes.
### 6. Tests Required
- `pnpm lint`
- `pnpm type-check`
- `pnpm build`
- After deploy, verify the app responds and `/api/auth/bootstrap` returns a structured JSON response.
### 7. Wrong vs Correct
#### Wrong
```bash
ssh some-other-host
```
#### Correct
```bash
ssh wlcb1
```