Operational Notes
This project is a service, so operational concerns should be included early.
Suggested First Stack
A simple first production stack:
Rust service
Postgres database
Object storage for uploads
Reverse proxy
OIDC authentication provider
Authentication
Use an authentication boundary that can support multiple providers.
Possible approaches:
- local accounts first
- OIDC provider later
- external identity provider from the beginning
Avoid spreading auth logic across route handlers.
Authorization
Authorization should be domain-aware.
Examples:
Can user view this secret?
Can user edit this continuity?
Can user publish this project page?
Can user mutate this chronology?
Migrations
Use database migrations from the start.
Recommended Rust-friendly options:
- sqlx migrations
- refinery
- sea-orm migrations
Telemetry
Add tracing early.
Useful spans:
- request ID
- account ID
- project ID
- continuity ID
- query type
- permission decision
Backups
Project data is user-created content. Backups are not optional.
Minimum backup targets:
- database
- uploaded files
- published exports
Import and Export
Plan for export early.
Useful formats:
- JSON project export
- Markdown export
- player-facing HTML export
- continuity archive export