···77- Never run the project directly (pnpm `dev` or `start`). I'll run any build or serve operations manually through `make` targets in a separate terminal.
88- When listing a `make` target always specify all variables that need to be set like the domain or the AWS profile.
99- By default, the AWS profile names for local development and AWS are `localstack` and `production`, respectively.
1010+- `DOMAIN_NAME` is not needed for local `make` targets (only for production targets).
10111112## Important reference material
1213···3334pnpm build # Production build (outputs to build/client/ and build/server/)
3435pnpm typecheck # Regenerate React Router types then run tsc
3536```
3737+3838+## Deploying updates
3939+4040+| What changed | Local | Production |
4141+|---|---|---|
4242+| `app/` (frontend) | `AWS_PROFILE=localstack make -C infra update-local-site` | `AWS_PROFILE=production DOMAIN_NAME=lemma.pub make -C infra deploy-site` |
4343+| `infra/api/` (Lambda) | `AWS_PROFILE=localstack make -C infra update-local-api` | `AWS_PROFILE=production make -C infra update-aws-api` |
4444+| Both frontend + API | `AWS_PROFILE=localstack make -C infra update-local` | run the two production commands above separately |
4545+| `infra/indexer/` | `AWS_PROFILE=localstack make -C infra run-local-indexer` | `AWS_PROFILE=production make -C infra update-aws-indexer` |
4646+4747+`DOMAIN_NAME` is only required for `deploy-site`. The API and indexer targets do not use it.
4848+4949+The indexer is a separate long-running process — `update-local` does **not** cover it. Restart it separately whenever `infra/indexer/` changes.
36503751## Docs
3852