Skip to main content

Repositories

All repositories are private in the Every-Man-A-Warrior GitHub organisation. Ask the project owner for access.

Branch model​

Every app repo uses the same two branches:

BranchMeaningWhat happens on push
developIntegration branch. Branch from here, merge pull requests here.Deploys to the dev environment where a workflow exists
mainProduction. Merged from develop when a release is ready.Deploys to production where a workflow exists

Feature branches are named feature/<topic>, fix/<topic> or similar.

The repositories​

Repopackage.json / project nameDev deployProd deployOwn docs
emaw-django-appcompose project emaw_backendSSH to the dev VM, docker compose upPortainer on the DockerApp VMCLAUDE.md, ONBOARDING.md, docs/, one README.md per app
emaw-websiteemapw-websiteGitHub Action → Cloudflare Pages emaw-website (develop)Manual wrangler pages deploy distCLAUDE.md, docs/
emaw-web-appemaw-website (sic)GitHub Action → Cloudflare Pages emaw-react-web-app (develop)GitHub Action (main)README.md
emaw-crm-appemaw-adminGitHub Action → Cloudflare Worker emaw-admin-devManual npm run deploy:production → Worker emaw-adminREADME.md, src/api/README.md
emaw-mobile-appemaw (Expo slug EMAW)EAS development / preview buildsEAS production build → App Store, Google PlayCLAUDE.md
emaw-documentationemaw-documentationGitHub Action → Cloudflare Pages emaw-documentation (develop)GitHub Action (main)this site
Package names do not match folder names

The website's package is emapw-website (typo kept for history), the web app's package is emaw-website, and the CRM's is emaw-admin. Nothing depends on these names, but they confuse searches. The Expo app's slug is EMAW, bundle id com.emaw-app.com (iOS) and package com.emaw_app.app (Android).

  • Sanity Studio (studio-emapw): the CMS studio for the few content types the website still reads from Sanity (siteSettings, conference recaps, newsArticle, contactPage). Schema changes and generated types live there.

Where the detailed documentation lives​

This site is the map. The territory stays next to the code:

TopicRead
Backend architecture, every env var with its default, security conventionsCLAUDE.md
Backend machine setup, the tunnel hand-over, testsONBOARDING.md
CRM, campaigns, events and store API contract for the admin appdocs/CRM_FRONTEND_GUIDE.md
Website accounts and the app hand-off contractdocs/WEBSITE_ACCOUNTS.md
Google sign-in setup (GCP project, OAuth clients, app builds)docs/GOOGLE_SIGN_IN_SETUP.md
Planning Center cutover runbookdocs/PCO_CUTOVER.md
Store, events, donations, payments, shipping, Deposco, campaigns, CRM, resources, QdrantREADME.md in each backend app folder
Website sandbox runbooks (store, events, donations, accounts), R2 setup, donations go-livedocs/

Cloning everything​

mkdir EMAW; cd EMAW
foreach ($r in 'emaw-django-app','emaw-website','emaw-web-app','emaw-crm-app','emaw-mobile-app','emaw-documentation') {
git clone "https://github.com/Every-Man-A-Warrior/$r.git"
}

Some developers keep all six in one parent folder; the website's docs refer to the backend as EMAW_BACKEND in places, which is a historical name for emaw-django-app.