Run & Operate
Day-to-day operations for the Finaisse/Blitz platform.
Railway
Key External Links
| Resource | URL |
|---|---|
| Demo Tenant App (frontend) | https://letsgo.finaisse.com |
| Railway dashboard | https://railway.app |
| GitHub Actions | https://github.com/finaisse-org/fin-infra/actions |
| GHCR images | https://github.com/orgs/finaisse-org/packages |
| Internal docs | https://internal-docs.finaisse.com |
Staging backends (blitz-api, ws, wfw, …) are private on *.railway.internal — no public URL; the frontend's nginx proxies /api to them.
Scaling Staging Up/Down
Staging auto-scales down every night at 10:00 PM IST (cost saving) via the scheduled scale-staging.yml workflow. To scale back up in the morning — or scale down early:
Via GitHub Actions (recommended):
- Go to fin-infra Actions
- Select Scale Staging
- Run workflow → choose
upordownand the target (all/backend/frontend/infra)
| Workflow | Trigger | Purpose |
|---|---|---|
scale-staging.yml | Manual + daily schedule | Scale staging up/down; auto-downs at 10:00 PM IST |
Via terminal:
bun run scale up all # Scale everything back up
bun run scale down all # Scale everything downChecking Service Health
bun run statusAlso check the Railway dashboard at railway.app — the Deployments tab shows health check status per service.
Viewing Logs
# All services
bun run logs
# Specific service
bun run logs -- --service blitz-api
bun run logs -- --service ws
bun run logs -- --service wfwIncidents
Severity definitions and response times are set by the Incident Response Policy — that page owns them; this runbook covers the mechanics only. Note a suspected compromise of customer Restricted data is always P1 regardless of service impact.
P1 response:
- Assess — check Railway dashboard and service logs
- Communicate — notify team via Slack/Zoho
- Mitigate — if a recent deploy is the cause, roll back immediately (see Rollback)
- Investigate — pull logs:
bun run logs - Resolve — fix forward or roll back
- Post-mortem — blameless review for every P1 and significant P2; findings become tracked issues in the Findings Register, per the Incident Response Policy. (This previously said "document in
incidents/folder infin-infra" — that folder has never existed, and it contradicted the policy's evidence destination.)
P2 response:
- Assess — identify affected service(s) and scope of impact
- Communicate — notify team; set expectations on resolution time
- Triage — determine if a hotfix or rollback is faster
- Resolve — deploy fix or roll back
- Document — note what happened in the related issue or PR
Common failure patterns:
- Service OOM —
wfwrequires at least 1 GB RAM. If it crashes immediately after deploy, check memory allocation in the Railway dashboard. - Frontend not loading — check if
blitz-apiis healthy (the frontend depends on it), and that Module Federation remote URLs are reachable (all 6 sub-apps must be up). - Database connection errors — check
DATABASE_URL/MANAGEMENT_DATABASE_URLare correctly set, and that PostgreSQL is healthy in the Railway dashboard. - Workflow failures — check Temporal UI for stuck or failed workflows, and
wfwlogs for worker errors.
Recovery Procedures
For deeper data-loss recovery beyond a service rollback:
- Staging DB Restore Console — refresh the staging
financedatabase from a backup.bkp - RustFS Bucket Recovery — recreate object-storage buckets after a deliberate store loss
Pushing a Variable Change
- Edit
railway/shared/variables.tsinfin-infra - Run
bun run vars:syncto push to all backend services - Services may need redeployment to pick up the new values:
bun run deploy:backend
Provisioning
To provision or re-provision infrastructure:
bun run provision:dry # Preview what would change
bun run provision # Provision everything (idempotent)
bun run provision:infra # Infra only (Postgres, RustFS, Valkey, Temporal)
bun run provision:services # Microservices + frontend onlyInitialising a New Database
Run once when setting up a new environment:
bun run init-db # Creates finance and mgmt databasesUseful Commands (reference)
All commands run from the railway/ directory in fin-infra:
bun run status # Show deployment status of all services
bun run logs # View service logs (all)
bun run logs -- --service blitz-api # Logs for a specific service
bun run deploy:all # Redeploy all services
bun run vars:sync # Push environment variables to Railway servicesLocal
See Local Development for running and operating the full stack locally.
AWS
AWS operations are not yet applicable — production traffic does not run on AWS today. See AWS Implementation for current status.