DeployMate is a three-layer web application:
Next.js frontend
-> FastAPI backend
-> PostgreSQL
-> Docker runtime or remote SSH targets
The frontend is responsible for operator workflows and admin UX. The backend owns authentication, persistence, deployment orchestration, audit data, exports, and restore analysis.
Relevant files:
frontend/app/app/page.jsfrontend/app/app/server-review/page.jsfrontend/app/app/deployment-workflow/page.jsfrontend/app/deployments/[deploymentId]/page.jsfrontend/app/app/users/page.jsfrontend/app/app/upgrade-requests/page.jsfrontend/app/app/admin-ui.js
Responsibilities:
- beginner-path overview and task-first guidance
- server connection and verification workflow
- deployment workflow, live review, and deployment forms
- deployment detail inspection
- admin users and upgrade inbox workflows
- saved views, bulk actions, exports, and backup/restore UX
- smoke-test anchors for stable UI verification
Relevant files:
backend/app/main.pybackend/app/routes/auth.pybackend/app/routes/deployments.pybackend/app/routes/servers.pybackend/app/routes/notifications.pybackend/app/routes/ops.pybackend/app/routes/root.pybackend/app/services/deployments.pybackend/app/db.py
Responsibilities:
- session-based authentication
- deployment lifecycle endpoints
- server connectivity and diagnostics
- ops overview and exports
- admin overview, audit, backup bundle, and restore dry-run
- deployment execution against local Docker or remote SSH targets
The backend database layer currently covers:
- users and password state
- servers and SSH connection material
- deployments and templates
- notifications and activity history
- upgrade requests
- audit events
The app uses additive schemas and read-friendly APIs for most admin and reporting surfaces.
DeployMate supports two runtime styles:
- backend executes Docker commands on the same host
- intended mainly for local development or explicitly enabled environments
- backend connects to saved SSH targets
- remote host runs Docker commands
- production can be configured as remote-only, disabling local host deployments entirely
Current safety mechanisms:
- release preflight before push
- post-deploy scripted smoke check
- dedicated frontend admin smoke
- restore flow limited to dry-run analysis
- strict pinned SSH default:
StrictHostKeyChecking=yeswith a realknown_hostsfile - remote-only production profile without default Docker socket exposure
Current MVP tradeoffs:
- server credentials are still application-managed
- Docker execution and remote SSH orchestration still share one backend service
- not every runtime path has deep automated coverage yet
README.mdfrontend/app/app/page.jsfrontend/app/app/server-review/page.jsfrontend/app/app/deployment-workflow/page.jsfrontend/app/deployments/[deploymentId]/page.jsbackend/app/main.pybackend/app/routes/deployments.pybackend/app/routes/root.py