Fluxora is a production-ready Rails application for defining, validating, triggering, and monitoring ETL pipelines.
It combines:
- A polished Vue dashboard for pipeline operations.
- A Rails JSON API and ActiveJob execution engine.
- PostgreSQL persistence for pipelines, runs, and run events.
- Optional S3 and Redshift connector support.
- Pipeline creation with guided connector-first forms.
- Built-in connection validation before save.
- Secure credential storage (encrypted at rest).
- Manual trigger and retry workflows.
- Run timeline, metrics, and status monitoring.
- Backend: Rails 8.1, ActiveJob, PostgreSQL
- Frontend: Vue 3, Tailwind CSS, esbuild
- Queueing:
- Development:
:async - Production: Solid Queue-ready
- Development:
app/models/etl_pipeline.rb: pipeline definition and secure credential handlingapp/models/etl_run.rb: execution records and run metadataapp/models/etl_run_event.rb: run timeline eventsapp/jobs/pipeline_execution_job.rb: async ETL execution entrypointapp/services/etl/runner.rb: extract-transform-load orchestrationapp/services/etl/connectors/*: connector implementationsapp/services/etl/connection_validator.rb: pre-save connector validationapp/controllers/api/v1/*: JSON API endpoints for dashboard and pipeline operationsapp/javascript/dashboard/*: Vue dashboard UI
Prerequisite: Docker Desktop running.
- Start services
docker compose up -d --build- Prepare database and seed demo data
docker compose run --rm web bin/rails db:migrate db:seed- Open the app
- App: http://localhost:3000
- Health: http://localhost:3000/up
Initial boot can take 15-30 seconds while app and asset watchers initialize.
Copy values from .env.example (for local dev, defaults are enough in most cases).
Important variables:
DATABASE_URLAWS_REGION,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYREDSHIFT_HOST,REDSHIFT_DBNAME,REDSHIFT_USER,REDSHIFT_PASSWORD,REDSHIFT_PORTACTIVE_RECORD_ENCRYPTION_PRIMARY_KEYACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEYACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT
Use the in-app Create Pipeline panel:
- Pick source and destination from dropdowns.
- Apply a suggested template.
- Fill connector fields.
- Click Validate Connection.
- Create pipeline when source and destination validations pass.
Supported source types:
samples3postgresapicustom
Supported destination types:
postgresredshifts3custom
GET /api/v1/overviewGET /api/v1/pipelinesGET /api/v1/pipelines/:idPOST /api/v1/pipelinesPATCH /api/v1/pipelines/:idPOST /api/v1/pipelines/:id/triggerPOST /api/v1/pipelines/validate_connectionGET /api/v1/runsGET /api/v1/runs/:idPOST /api/v1/runs/:id/retry
- Rebuild and restart:
docker compose up -d --build- View logs:
docker compose logs web --tail=200
docker compose logs db --tail=200- Stop stack:
docker compose downFluxora can be deployed to Vercel as a serverless Rails app using @vercel/ruby.
Included project files:
vercel.jsonapi/index.rb
- Import this repository in Vercel.
- Set environment variables in Vercel project settings:
DATABASE_URL(managed PostgreSQL connection string)RAILS_MASTER_KEYSECRET_KEY_BASEACTIVE_RECORD_ENCRYPTION_PRIMARY_KEYACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEYACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT- optional connector variables (
AWS_*,REDSHIFT_*)
- Deploy.
- Vercel is serverless: no long-running worker process.
- In Vercel mode, jobs run inline (
config.active_job.queue_adapter = :inline). - Suitable for dashboard/API usage and light ETL tasks.
- For heavy/long ETL pipelines, deploy to a persistent platform (VM/container/Kubernetes).
- Pipeline credentials are encrypted at rest through Active Record Encryption.
- Do not commit
.envor credential material. - For production, set stable encryption keys via environment variables.
.gitignoreexcludes generated artifacts, secrets, logs, and node modules.- Docker Compose includes Postgres health checks and dependency gating.
- API routes expose only implemented operations.
- Unused scaffold artifacts from Rails defaults (Kamal hooks/config, placeholder folders) were removed.