Connect
Link a Git repository and provide the deployment configuration.
A self-hosted deployment platform that turns source code into a running application.
Link a Git repository and provide the deployment configuration.
Build, validate and deploy the application automatically.
Track deployment progress and application status from one interface.
• Personal Project • GitHub repository ↗
What I built
I built a self-hosted platform that automates the process of turning source code into a running application.
>_This stack supports application development, repeatable deployment and continuous quality checks.
Deploying an application involves many repetitive steps across different tools. Doing them manually takes time and increases the risk of errors.
I built AutoDeploy to learn how modern platforms automate this process and keep their records aligned with the applications that are actually running.
A working end-to-end deployment platform that can take an application from source code to a running service, while tracking its progress and recovering from common failures.
It supports both local Docker deployments and Kubernetes environments.
I designed and implemented the platform end to end, from the web interface and backend services to the deployment workflow, Kubernetes integration, testing, and local development environment.
I also made the main architectural and reliability decisions behind the system.
AutoDeploy separates user interactions, deployment execution, and system recovery. Each component has a clear responsibility, making the platform easier to maintain and more reliable when something fails.
The operator selects a project, provides the required settings, and starts a deployment from the web interface.
Operator → Vue Console → Flask API
The API validates the request and records what the platform needs to do.
Flask API → MySQL
A background worker retrieves the source code, builds and tests it, then launches the application.
Worker → Build & Test → Docker / Kubernetes
The platform continuously checks that what is running matches what was requested and repairs inconsistencies when possible.
Database ↔ Reconciler ↔ Runtime
Each deployment follows a controlled process that turns source code into a running application. AutoDeploy performs the work in the background, records the progress of every step, and stops the process if a critical check fails.
01
Provide the source repository, branch, build settings, and deployment preferences.
02
Download the source code and lock the deployment to the exact requested version.
03
Package the application into a container image and run its automated tests.
04
Prepare the verified image and launch the application using Docker or Kubernetes.
05
Confirm that the application started successfully and passes its health checks.
NoteLocal Docker can run the image directly, while Kubernetes deployments publish it to a registry before updating the workload.
The main design choices that make deployments reliable, traceable, and adaptable across different environments.
The API records requests, the worker executes deployments, and the reconciler detects inconsistencies.
Long-running work stays isolated, so one failure does not block the entire platform.
Projects, builds, deployments, commands, and status history are stored in a shared database.
Components stay consistent, and interrupted work can be detected and recovered after a restart.
A shared execution layer allows the deployment pipeline to work with local Docker and Kubernetes.
New runtime options can be added without redesigning the complete deployment process.
Applications are tested before launch and health-checked after they start.
Failed builds stop early, while successful deployments are confirmed to be actually reachable.
AutoDeploy intentionally favors a manageable, end-to-end deployment platform over production-scale complexity. These trade-offs keep the project focused while leaving clear paths for future hardening.
AutoDeploy is designed as a trusted, operator-facing control plane rather than a public hosting platform. The current implementation assumes trusted access to its Docker or Kubernetes runtime and does not implement hardened multi-tenancy, automated TLS management, autoscaling, or multi-cluster scheduling.
A deployment spans multiple stages, so the platform must always know what is running, completed, or still pending.
External tools and background processes can fail at any time, so recovery must be part of the normal workflow.
Stored state can drift from what is actually running, so the platform must continuously compare and reconcile both.
Starting an application is not enough; health checks must confirm that it is actually reachable and usable.
Run builds in temporary, restricted environments with resource limits, controlled network access, and no direct host access.
Keep previous successful releases and provide a safe way to restore an earlier version after a failed deployment.
Centralize logs, collect metrics, and add dashboards and alerts for deployment failures.
Introduce a message broker and independently scalable workers to handle more deployments efficiently.
Detailed views of the AutoDeploy architecture, deployment lifecycle, runtime sequence, data model, reconciliation flow, and security boundaries.