AWS
One cloud for everything hosted — storage, email, AI, and, when it ships, the database and backend.
Why one cloud
Everything hosted runs on AWS: one vendor, one bill, one console. That rules out good products elsewhere (Neon, Railway, Render, Resend) on purpose, not on their merits.
What's in use
| Service | Used for | In development |
|---|---|---|
| Amazon S3 | Uploads, blog bodies and media, avatars, terms, archived logs | RustFS in Docker |
| Amazon SES | Transactional email | Mailpit in Docker |
| Amazon Bedrock | Claude for the chatbot | Ollama on your machine |
Each one swaps by environment variable. Application code only talks to the standard API, never to the local stand-in.
Email goes through Nodemailer. It sends through SES, or through Mailpit's SMTP server when EMAIL_SMTP_HOST is set.
What's decided but not built
- Amazon RDS for Postgres — managed backups, no idle pausing, and a free first year. Aurora is the upgrade path if scale ever calls for it.
- AWS App Runner for the backend — runs the container from ECR and handles TLS, health checks, and scaling. Fargate is the step up if it ever needs several services.
There's no infrastructure code in the repo yet.