Skip to main content

Environments overview

There are two environments. Development is where every branch merge lands and where staff test workflows; production serves real customers. They share nothing except the Azure Blob storage account and the Stripe account (test mode versus live mode).

DevelopmentProduction
Backend URLhttps://dev.emaw-app.comhttps://app.emaw-app.com
Azure resource groupEMAW-DevelopmentEMAW-APP-RG
Django hostdevelopment-django-vm (Linux VM, Docker Compose started by hand over SSH)DockerApp VM, stack managed through Portainer
Databasedevelopment-database-vm (Linux VM running PostgreSQL behind pgbouncer)emawweb-server (Azure Database for PostgreSQL flexible server)
Database reachable fromTailscale, or vnet-emaw-devEMAWWebVnet only (the Django app)
Virtual networkvnet-emaw-devEMAWWebVnet
Blob storageemawblob (in EMAW-APP-RG), container mediasame account, same container
Backend exposureCloudflare tunnel; the token can also run on a developer laptopCloudflare tunnel on the VM
Websitehttps://develop-website.everymanawarrior.cc (Cloudflare Access)https://everymanawarrior.com (legacy site until launch)
Admin CRMhttps://admin-dev.everymanawarrior.cc (Cloudflare Access)https://admin.everymanawarrior.cc (Cloudflare Access)
Web apphttps://develop-web-app.everymanawarrior.cchttps://app.everymanawarrior.cc
Docshttps://docs-dev.everymanawarrior.cc (Cloudflare Access)https://docs.everymanawarrior.cc (Cloudflare Access)
Stripetest mode; test cards work, nothing is chargedlive mode
Deposcosandbox (DEPOSCO_BASE_URL default)live UFS account
Campaign emailsending disabled; if enabled, only group 36live via ACS
Django settings moduleEMAW_BACKEND.settings.developmentEMAW_BACKEND.settings.production
Deploy triggerpush to develop (frontends with a workflow); manual compose on the VM (backend)push to main (web app, docs); manual for website, CRM and backend

What "development" means here​

The dev environment is shared and live: staff use the dev website to test event registration and book purchases with Stripe test cards, and the Admin CRM against dev shows about 4,000 real contacts imported from Planning Center. Treat it as a staging environment, not a sandbox you can break.

Two things make dev unusual:

  1. The tunnel can move. The dev backend is whichever machine runs the compose stack with the dev TUNNEL_TOKEN. Developers take the tunnel over to test their branch end to end with the real frontends, then hand it back. See Backend local development.
  2. The database is shared. Starting the stack runs migrations against it.

Cost​

Azure runs on Microsoft nonprofit credits, so hosting is currently free. Cloudflare usage (Pages, Workers, R2's free terabyte with no egress fees) is within free tiers. If the credits lapsed, the estimate for the server and database environment is roughly $150 a month.

Next​