Skip to content

Bounty Submission: Universal One-Click Deployment (Docker + K8s + Tilt) for FinMind#459

Open
lalalic wants to merge 1 commit intorohitdash08:mainfrom
lalalic:feat/one-click-deploy
Open

Bounty Submission: Universal One-Click Deployment (Docker + K8s + Tilt) for FinMind#459
lalalic wants to merge 1 commit intorohitdash08:mainfrom
lalalic:feat/one-click-deploy

Conversation

@lalalic
Copy link

@lalalic lalalic commented Mar 15, 2026

Summary

/claim #144

Implements a production-grade, universal one-click deployment system for FinMind across 15 platforms, using Docker as the base packaging standard with full Kubernetes (Helm + raw manifests) and Tilt support.

Platforms Supported

Container Orchestration (4)

Platform Config Features
Docker Compose docker-compose.yml (existing) Full stack + monitoring
Kubernetes deploy/k8s/ (existing) Raw manifests, Ingress, monitoring
Helm deploy/helm/finmind/ TLS/cert-manager, HPA, health probes, Prometheus annotations, init containers, resource limits
Tilt Tiltfile + deploy/tilt/ Local K8s dev with live-reload, auto port-forwards

PaaS Platforms (6)

Platform Config Features
Railway deploy/railway/ railway.json + railway.toml
Heroku deploy/heroku/ heroku.yml, app.json (Heroku Button), Procfile
Render deploy/render/render.yaml Blueprint auto-detection
Fly.io deploy/fly/ Backend + frontend configs, deploy script
DigitalOcean App Platform deploy/digitalocean/app-spec.yaml Managed DB + Redis
DigitalOcean Droplet deploy/digitalocean/droplet-setup.sh Docker + UFW + fail2ban

Cloud Providers (3)

Platform Config Features
AWS ECS Fargate deploy/aws/ Task def, ALB, auto-scaling (2-10), CloudWatch
GCP Cloud Run deploy/gcp/ Cloud SQL, Memorystore, Secret Manager
Azure Container Apps deploy/azure/ Deploy script + Bicep IaC template

Frontend-Only (2)

Platform Config Features
Netlify deploy/netlify/netlify.toml SPA routing, caching, security headers
Vercel deploy/vercel/vercel.json Vite framework, SPA rewrites

Master Deploy Script

./deploy.sh <platform>     # Deploy to any platform
./deploy.sh --list          # List all 15 platforms
./deploy.sh --help          # Show help

Supported: docker, kubernetes, helm, tilt, railway, heroku, render, fly, digitalocean, droplet, aws, gcp, azure, netlify, vercel

Helm Chart Highlights

  • TLS: cert-manager with Let's Encrypt cluster-issuer
  • HPA: Backend auto-scales 2-8 pods on CPU (70%) and memory (80%)
  • Init containers: Backend waits for PostgreSQL and Redis before starting
  • Health probes: Readiness + liveness on all containers (HTTP for apps, exec for DB/Redis)
  • Prometheus: Scrape annotations on all pod templates
  • Config checksums: Pods restart on config/secret changes
  • Resource limits: Requests + limits on every container

Tilt Development Workflow

tilt up          # Start development
tilt down        # Tear down

Features:

  • Live code sync (Python + React changes sync without rebuild)
  • Automatic dependency ordering: DB → Redis → Backend → Frontend
  • Port forwards: Frontend :5173, Backend :8000, PostgreSQL :5432, Redis :6379
  • Manual tasks: db-seed, run-tests from Tilt dashboard

Runtime Verification

Each deployment path ensures:

  • Frontend reachable (:80 or :5173)
  • Backend health reachable (/health{"status":"ok"})
  • PostgreSQL connected (via DATABASE_URL)
  • Redis connected (via REDIS_URL)
  • Auth flows working (JWT-based)
  • Core modules working (expenses, bills, reminders, dashboard, insights)

Documentation

Comprehensive deployment guide at docs/deployment.md (492 lines) covering:

  • Quick start for every platform
  • Architecture diagram
  • Environment variable reference
  • Health check endpoints
  • Monitoring setup (Prometheus + Grafana + Loki)
  • Troubleshooting guide

Files Changed

  • 48 files changed, 5,093 insertions
  • Tiltfile — Tilt local K8s development workflow
  • deploy.sh — Master deployment script
  • deploy/helm/finmind/ — Full Helm chart (15 templates)
  • deploy/tilt/ — Tilt K8s dev manifests (7 files)
  • deploy/railway/ — Railway configuration
  • deploy/heroku/ — Heroku configuration (3 files)
  • deploy/render/ — Render Blueprint
  • deploy/fly/ — Fly.io configuration (3 files)
  • deploy/digitalocean/ — DO App Platform + Droplet
  • deploy/aws/ — AWS ECS Fargate (3 files)
  • deploy/gcp/ — GCP Cloud Run (2 files)
  • deploy/azure/ — Azure Container Apps + Bicep (2 files)
  • deploy/netlify/ — Netlify config
  • deploy/vercel/ — Vercel config
  • docs/deployment.md — Comprehensive deployment guide

…#144)

Bounty Submission: Universal One-Click Deployment (Docker + K8s + Tilt) for FinMind

Deployment Platforms:

Container Orchestration:
- Docker Compose (existing, retained)
- Kubernetes raw manifests (existing, retained)
- Helm chart with TLS/cert-manager, HPA autoscaling, health probes,
  Prometheus annotations, init containers, resource limits
- Tiltfile for local K8s dev with live-reload

PaaS Platforms:
- Railway (railway.json + railway.toml)
- Heroku (heroku.yml + app.json + Procfile)
- Render (render.yaml Blueprint)
- Fly.io (backend + frontend toml configs + deploy script)
- DigitalOcean App Platform (app-spec.yaml)
- DigitalOcean Droplet (setup script with Docker, UFW, fail2ban)

Cloud Providers:
- AWS ECS Fargate (task definition + service + deploy script)
- GCP Cloud Run (cloudbuild.yaml + deploy script)
- Azure Container Apps (deploy script + Bicep IaC template)

Frontend-Only:
- Netlify (netlify.toml)
- Vercel (vercel.json)

Key Features:
- Master deploy.sh script with platform selection
- Comprehensive docs/deployment.md (400+ lines)
- Health checks on all platforms (/health endpoint)
- Auto-scaling where supported
- Secret management via each platform's native store
- Resource limits on all containers
- Monitoring stack (Prometheus + Grafana + Loki)

48 files changed, 5093 insertions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant