Skip to main content

Deployment overview

Status: Proposed 2026-09-24

This section is the source of truth for shipping. Nothing is provisioned yet; the pages describe the target so the first deploy follows a written runbook instead of inventing one.

Per the disclosure policy, these pages name services, regions, and roles only. No IP addresses, instance ids, hostnames of machines, ports, process names, key names, or SSH commands appear here. A step that needs a host is written as ssh <api-host>, and the value lives in the maintainer's private runbook.

Components​

ComponentPlatformRegionDeploy trigger
API (vegan-grove-api)EC2 t4g.micro, Ubuntu 24.04 arm64, PM2 behind nginxus-east-1manual runbook on the API host, see backend
Web (vegan-grove-web)Amplify Hosting, WEB_COMPUTEus-east-1push to main, see web app
Mobile (vegan-grove-mobile)EAS Build, TestFlight, Play internal trackExpo's build cloudeas build on a store profile, see mobile
Docs (vegan-grove-docs)AWS Amplify Hosting (static)us-east-1push to main, see docs
DatabaseMongoDB Atlas M0us-east-1 (AWS provider)none, schema changes ship with the API
ImagesS3 bucket behind CloudFrontus-east-1, global edgepresigned PUT from clients, no deploy
VideoBunny StreamBunny's CDNtus upload from clients, no deploy
EmailSES SMTPus-east-1none, sandbox until production access is granted
DNSRoute 53 hosted zone for vegangrove.orgglobalmanual

Topology​

presigned PUT

Browser

Amplify (WEB_COMPUTE)

Mobile app (EAS build)

API host (EC2, nginx, PM2)

MongoDB Atlas M0

SES (magic-link email)

Anthropic API (companion)

S3 + CloudFront (images)

Bunny Stream (video)

OpenFreeMap tiles

Amplify Hosting (docs)

Clients never send bytes through the API: images go straight to S3 with a presigned URL and video goes straight to Bunny with a tus token. The API host therefore stays small. Map tiles come from OpenFreeMap directly to the client; the API never sees a viewport.

Release order​

When a web change depends on an API change: deploy the API first, confirm GET /healthz and the changed endpoint, then merge the web PR and wait for the Amplify job to report success. Mobile builds in the stores keep working against the old API for as long as members take to update, so API changes are additive until a store version is retired.

Costs​

Everything above runs for about $12 to $15 a month at MVP traffic. The cost sheet breaks it down and names the free tiers it depends on.