How ojhapranjal26/featherdeploy works
FeatherDeploy is a self-hosted PaaS for managing applications and databases across a worker cluster. Users work through the web panel to configure projects and services, deploy applications, and monitor runtime status; administrators also manage nodes, storage, and access. The control plane coordinates persisted state and node operations, while workers run containers and the proxy engine reconciles routing. The README documents GitHub-based push-to-deploy, framework detection, and automatic TLS; some implementation wiring is not visible in the sampled excerpts, so those links are shown only where supported.
Main entry points: deployments.go API handlers · main.go HTTP server · App.tsx Panel routes · client.ts API client
Components 25
Web panel
- Panel routes
frontend/src/App.tsx - Project workflows
frontend/src/pages/ProjectPage.tsx - Deployment views
frontend/src/pages/DeploymentListPage.tsx - Cluster views
frontend/src/pages/ClusterPage.tsx - Storage management
frontend/src/pages/StoragePage.tsx - API client
frontend/src/api/client.ts
Control plane
- HTTP server
backend/cmd/server/main.go - API handlers
backend/internal/handler/deployments.go - Deploy scheduler
backend/internal/deploy/scheduler.go - Framework detection
backend/internal/detect/detect.go - GitHub integration
backend/internal/handler/github.go - Object storage API
backend/internal/handler/storage.go
Cluster runtime
- Worker agent
backend/cmd/node/main.go - Container runner
backend/internal/deploy/runner.go - Node daemon
backend/internal/netdaemon/daemon.go
Cluster state and networking
- Distributed database
backend/internal/db/db.go - Cluster coordination
backend/internal/coordination/coordination.go - Route reconciliation
backend/internal/proxyengine/engine.go - Proxy configuration
backend/internal/nginx/nginx.go
Other components
- User
- GitHub
- Etcd
- rqlite
- Podman containers
- HTTPS edge proxy
Connections 29
- User → Panel routes: uses
- Panel routes → Project workflows: routes to
- Panel routes → Deployment views: routes to
- Panel routes → Cluster views: routes to
- Panel routes → Storage management: routes to
- Project workflows → API client: requests
- Deployment views → API client: requests
- Cluster views → API client: requests
- Storage management → API client: requests
- API client → HTTP server: calls API
- HTTP server → API handlers: dispatches
- API handlers → Distributed database: reads and writes
- API handlers → Deploy scheduler: requests deployment
- Deploy scheduler → Node daemon: orchestrates
- Node daemon → Worker agent: contacts worker
- Worker agent → Container runner: starts workloads
- Container runner → Podman containers: runs containers
- API handlers → Framework detection: uses detection
- API handlers → GitHub integration: dispatches integration
- GitHub integration → GitHub: OAuth and app access
- HTTP server → Cluster coordination: initializes
- Cluster coordination → Etcd: coordinates state
- HTTP server → rqlite: uses storage
- Route reconciliation → Etcd: watches routes
- Route reconciliation → Proxy configuration: applies configuration
- HTTPS edge proxy → HTTP server: forwards HTTPS
- API handlers → Object storage API: dispatches storage requests
- Object storage API → Distributed database: stores metadata
- HTTP server → Route reconciliation: starts engine