Deployment Guide (DigitalOcean + Local)

Repository: github.com/ianroy/makerflowPM

Local Test Environment

git clone https://github.com/ianroy/makerflowPM.git
cd makerflowPM
cp .env.example .env
pip install -r requirements.txt
python3 app/server.py

Open http://127.0.0.1:8080/login.

DigitalOcean Droplet (Recommended)

./scripts/deploy_production.sh \
  --ssh ubuntu@YOUR_DROPLET_IP \
  --domain makerflow.org \
  --admin-email [email protected] \
  --admin-password 'REPLACE_WITH_STRONG_PASSWORD'

DigitalOcean App Platform

Use the included spec: .do/app.yaml.

doctl apps create --spec .do/app.yaml
doctl apps update <APP_ID> --spec .do/app.yaml

If configuring manually, use:

Build command: pip install -r requirements.txt
Run command: bash -lc "python3 scripts/bootstrap_db.py && gunicorn wsgi:application --bind 0.0.0.0:$PORT --workers 2 --threads 2 --timeout 120"
HTTP port: 8080
Health check path: /readyz

Managed PostgreSQL Setup

  1. Create a DO Managed PostgreSQL cluster.
  2. Add your app as a trusted source.
  3. Set MAKERSPACE_DATABASE_URL in app environment variables.
  4. Redeploy.
postgresql://doadmin:REPLACE_PASSWORD@REPLACE_HOST:25060/defaultdb?sslmode=require

Troubleshooting (Field-tested)

Run Command Not Executable

Health Check Failures

Missing Tables (e.g., spaces)

Login Loop / Session Issues

CSRF Token Mismatch

Validation Commands

curl -i http://127.0.0.1:8080/healthz
curl -i http://127.0.0.1:8080/readyz