This is the development environment root for the Mustache Bash event ticketing platform. It orchestrates three git submodules via Docker Compose with a shared nginx HTTPS reverse proxy.
mustache-bash/
├── api/ # Submodule: Koa/Node.js REST API (port 4000)
├── admin/ # Submodule: React admin SPA (port 8080)
├── mustachebash.com/ # Submodule: Astro public website (port 4321)
├── schema/ # PostgreSQL schema + migration scripts
├── scripts/ # Dev bootstrap tooling
├── workers/ # Standalone batch/utility scripts
├── secrets/ # Gitignored env/certs (see below)
├── docker-compose.yml # Full dev environment orchestration
└── nginx-dev.conf # HTTPS reverse proxy config
Each subdirectory is an independent git repo. Always cd into the submodule before committing to it. Update submodule pointers from the root after pushing submodule changes.
# Update all submodules to latest tip
git submodule update --remote
# After changing a submodule, commit the pointer update in the root
git add api # (or admin / mustachebash.com)
git commit -m "update api submodule pointer"./scripts/bootstrap.sh # installs mkcert and generates HTTPS certs into secrets/docker compose up # starts postgres, nginx, api, admin, webInstaller services (api-installer, web-installer, admin-installer) run npm ci and clean build artifacts before the app containers start — this is intentional.
| Service | Dev URL |
|---|---|
| API | https://api-mustachebash.local.mrstache.io |
| Website | https://mustachebash.local.mrstache.io |
| Admin | https://admin-mustachebash.local.mrstache.io |
Also accessible via *.mustachebash.localhost.
Gitignored. Required files:
secrets/.env— env vars consumed by the API container (Mailgun, Mailchimp, Braintree keys)secrets/localhost-cert.pem/secrets/localhost-key.pem— generated by bootstrap script
- PostgreSQL 15.5 running in Docker, exposed on
localhost:5432 - Credentials:
postgres/postgres, database:mustachebash - Schema initialized from
schema/v1schema.sqlon first container start postgres-data/holds persistent data (gitignored)
schema/v1schema.sql— authoritative DDLschema/migrate-v1postgres.mjs— migration runnerschema/package.json— run vianodedirectly in the schema directory
Standalone batch scripts (not containerized):
workers/batch-refunds.jsworkers/batch-voids.jsworkers/email-import.jsworkers/refunded-email-tag.js