Three Deployment Contexts
There are three deployment contexts, and they form a natural continuum:Local
Your laptop, home server, or Raspberry Pi. Full production-equivalent stack with Docker Compose.
VPS
DigitalOcean, Hetzner, Linode, bare metal. The sweet spot for most teams. Predictable costs, full control.
Cloud On-Demand
AWS, GCP, Azure. Used surgically for specific resources (S3, SES, RDS) or burst compute. Not a platform commitment.
Local Development
Your laptop, a home server, a Raspberry Pi. Applad uses Docker Compose locally — the same Docker Compose it uses on VPS targets.Your local environment is a 1:1 mirror of staging and production. The same containers, the same Dart SDK version, the same OS libraries. No “works on my machine” problems.
How It Works
applad up and gets a full production-equivalent stack running locally with a single command:
- Applad reads your config tree
- Synthesizes a
docker-compose.ymlfor the local environment - Starts services: database, storage, functions, messaging, realtime
- Applies any pending migrations
- Your API is live at
http://localhost:8080
- Local Config
- Environment Overrides
project.yaml
Local Benefits
- Onboarding is
applad up— any developer on any machine with Docker installed gets a full running stack immediately - No runtime surprises on deploy — you’ve been running production containers locally the entire time
- Debugging is standard Docker tooling —
docker logs,docker exec,docker compose ps - Works offline — no cloud dependencies for development
VPS Deployment
A DigitalOcean Droplet, Hetzner server, Linode, bare metal — any machine you own or rent at a flat rate.This is the sweet spot for most indie developers, small teams, startups, and anyone who wants full ownership without managing cloud complexity.
- Full control over the entire stack
- Predictable costs (flat monthly rate)
- No vendor dependency at the infrastructure level
- Standard SSH access to debug anything
How It Works
Applad connects over SSH, synthesizes and applies a Docker Compose configuration from your project config, manages everything, and leaves:project.yaml
SSH connection opens
Applad connects to
prod-01.acme-corp.com as user applad using the specified SSH keyServices reconciled
Only changed services restart. Applad compares desired state (from config) against running state
VPS Sizing
A single mid-range VPS can comfortably run a production Applad instance serving thousands of users.
| Users | VPS Specs | Examples |
|---|---|---|
| < 1,000 | 2 vCPU, 4GB RAM, 80GB SSD | DigitalOcean $24/mo, Hetzner CX21 €5.83/mo |
| 1,000 - 10,000 | 4 vCPU, 8GB RAM, 160GB SSD | DigitalOcean $48/mo, Hetzner CX31 €9.72/mo |
| 10,000 - 100,000 | 8 vCPU, 16GB RAM, 320GB SSD | DigitalOcean $96/mo, Hetzner CX41 €17.29/mo |
VPS Providers
Applad works with any VPS provider:DigitalOcean
Simple, well-documented, global availability. Droplets start at $4/mo.
Hetzner
Best price/performance ratio. European data centers. CX11 starts at €4.15/mo.
Linode (Akamai)
Reliable, straightforward pricing. Good global coverage. Starts at $5/mo.
Bare Metal / On-Premise
Your own hardware. Maximum control, zero monthly fees. SSH access is all you need.
Cloud Providers On-Demand
AWS, GCP, Azure, and others — but used surgically, not as a platform commitment.Applad treats cloud provider resources as adapters you draw from when they make sense for a specific resource.
- Run your core app on a Hetzner VPS (fast and cheap)
- Use S3 for storage (great pricing model)
- Use SES for high-volume email at scale
- Spin up a cloud compute instance for a heavy data processing job
- Use an AWS Mac instance for iOS builds — paying only for build duration, then tearing it down
Cloud as Utility, Not Platform
- Storage
- Database
- Email
- Compute Burst
storage/storage.yaml
Cloud Adapter Configuration
project.yaml
applad up when first referenced. Torn down explicitly via applad cloud tear-down <id>.
The Continuum
You move along this line as your needs grow, and Applad moves with you:Migration Example
Starting point (local development):Docker Compose Everywhere
One of Applad’s most important architectural decisions is that Docker Compose is the runtime model at every level — local development, VPS staging, and VPS production.Local is production, from day one. The same Docker Compose model that runs on your Hetzner VPS runs on your MacBook.
docker-compose.yml from your project config and orchestrates it. You do not need any Dart tooling installed. You do not need to manage SDK versions. You only need Docker.
Synthesis Example
Your config:database/database.yaml
docker-compose.yml
docker-compose.yml by hand. Applad generates it from your config.
Dry-Run and Diff
- The synthesized Docker Compose
- Every service that would start or restart
- Every config change
- Every migration pending
You review the plan, then run
applad up to execute it. No surprises, ever.Environment Parity by Design
Many tools make local development feel native and light — run a binary, get instant feedback — but then production looks completely different. Containers, different OS libraries, different runtime behavior. Applad takes the opposite position: local is production, from day one. The practical consequences:- Onboarding is
applad up— any developer on any machine with Docker installed gets a full running stack immediately, no environment setup required beyond filling in.env - No runtime surprises on deploy — you’ve been running production containers locally the entire time
- Debugging is standard Docker tooling —
docker logs,docker exec,docker compose ps
Next Steps
Idempotency
Learn how Applad guarantees running
applad up twice is the same as onceConfig-Driven Model
Understand the YAML config tree and infrastructure-as-code approach