Quick Start¶
Deploy Strawly in approximately 5 minutes.
1. Clone the deployment repository¶
2. Install script dependencies¶
3. Configure your modules¶
Open strawly-deployment.yml and set which modules you want enabled:
See Modules Overview for the full configuration reference.
4. Generate the Docker Compose file¶
This reads strawly-deployment.yml and produces docker-compose.generated.yml.
5. Set up your environment file¶
Open .env and fill in the values. The first admin account is created from ADMIN_EMAIL and ADMIN_PASSWORD on startup:
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=your-strong-admin-password
POSTGRES_DB=strawly
POSTGRES_USER=strawly
Generate strong random values for the database password and signing keys:
Paste the printed values into POSTGRES_PASSWORD, JWT_SECRET, and CREDENTIALS_ENCRYPTION_KEY in .env.
Keep .env out of version control
.env holds your database password and signing keys. Confirm it is listed in .gitignore
(it is by default in the deployment repository) and set restrictive permissions:
ADMIN_EMAIL and ADMIN_PASSWORD can be removed from .env once the admin account exists.
If you enabled the Azure module, see Azure Optimizations for credential setup instructions.
See Environment Variables for the full reference.
6. Pull images and deploy¶
docker compose -f docker-compose.generated.yml pull
docker compose -f docker-compose.generated.yml up -d
Services start in this order automatically:
- PostgreSQL
- Migrations (applies schema, runs once)
- Seeder (system roles and admin account, runs once)
- Backend
- Modules (parallel)
- Frontend
7. Seed the module registry¶
Populate the module registry from strawly-deployment.yml so the UI shows your enabled modules:
Re-run this whenever you enable or disable a module.
8. Verify health¶
Or check manually:
curl http://localhost:3001/health # Backend
curl http://localhost:3000/ # Frontend
curl http://localhost:3002/health # Azure module (if enabled)
9. Log in¶
Open http://localhost:3000 in your browser and log in with the email and password you set in ADMIN_EMAIL and ADMIN_PASSWORD.
10. Load demo data (optional)¶
To populate the app with sample opportunities, savings, commitments, and three demo accounts for evaluation, run:
The command is safe to re-run — it will not create duplicates. The demo accounts use publicly known passwords (admin123, practitioner123, viewer123). The seed script will refuse to run when NODE_ENV=production is set, but do not run this on any instance with real data.