Overview
Applad runs locally using Docker Compose — the same Docker Compose it uses on VPS targets. This means your local environment is a 1:1 mirror of staging and production. No “works on my machine” problems. You only need Docker installed. The same containers, the same Dart SDK version, the same OS libraries run everywhere.Prerequisites
- Docker installed and running
- A cloned Applad project with
applad.yaml
Starting Your Local Environment
A developer runs a single command to get a full production-equivalent stack:- Detect an uninitialised database
- Run bootstrap inline
- Synthesize a
docker-compose.ymlfrom your project config - Start all services
First run? You’ll be prompted for instance URL, first owner’s email, SSH public key path, and organisation name. Bootstrap runs once and permanently closes.
Environment Configuration
Setting Up .env
Copy the auto-generated example file:
${VAR_NAME} reference across your config tree is automatically extracted and annotated in .env.example:
.env.example
Local Runtime Model
Applad uses Docker Compose locally with:- SQLite or Postgres — depending on your
database/database.yamlconfig - Local filesystem storage — can be switched to S3/R2 without code changes
- All services containerized — functions, workers, admin UI
- Caddy for SSL — even locally, with self-signed certs
What’s Running
Check service status:Everything is inspectable with standard Docker tooling. No Applad-proprietary runtime primitives.
Development Workflow
Watch Mode
For active development, use watch mode to auto-reconcile on every config change:Dry Run Before Applying
Always preview changes before applying:- Every service that would start or restart
- Every config change
- Every migration that would run
- Full delta between current and desired state
Selective Reconciliation
Reconcile only specific namespaces:Environment Parity
Local is production from day one. The same Docker Compose model that runs on your Hetzner VPS runs on your MacBook. The practical consequences:- Onboarding is
applad up— any developer on any machine gets a full stack immediately - No runtime surprises on deploy — you’ve been running production containers locally
- Debugging uses standard tools —
docker logs,docker exec,docker compose ps
Switching Storage Adapters
Your application code never changes when switching adapters. Only config:applad up and Applad reconciles to the new adapter. No code changes required.
Onboarding New Developers
A new developer joining your project:- Clone the repository
- Copy
.env.exampleto.envand fill in values - Run
applad loginto register their SSH key - Run
applad upto start the full stack
applad access approve.
Troubleshooting
Reset Local Environment
Stop all services and remove volumes:Check What Changed
See what drifted from your config:Increase Verbosity
Default output is quiet — just the recap. Add verbosity for debugging:Next Steps
- Deploy to a VPS environment
- Add cloud adapters for storage or database
- Learn about Docker Compose synthesis