Deploy-It is a cloud deployment platform that automates the deployment process of web applications using AWS ECS, Fargate, S3, Kafka, ClickHouse, Postgres, Docker, Node.js, and Express.
Deploy-It integrates infrastructure services and container-based workflows to streamline web app deployment, there are three main services in this project:
- Build Server for Deployment:
/build-server - Log Processing and Storage:
/api-server - Request Handler Proxy:
/req-handler-proxy
A containerized build executor launched on-demand via AWS ECS Fargate. This service is containerized and pushed to AWS Container Registry.
- Clone GitHub repository
- Install project dependencies
- Run production build
- Upload artifacts to S3
- Stream structured logs to Kafka (topic:
build-log)
An Express.js-based control plane that manages users, projects, deployments, logs, and analytics.
- Project CRUD
- Trigger build deployments
- Consume and store logs from Kafka to ClickHouse
- Aggregate request analytics
- Manage user auth and session
- AWS ECS Fargate: Runs
build-servercontainer viaRunTaskCommand - Kafka: Receives structured logs from build containers
- ClickHouse: Stores structured logs for fast queries
- Prisma: ORM for PostgreSQL (users, projects, deployments)
- Creates new project with a unique slug
- Input Fields:
name,gitRepoURL
- Accepts
projectId - Creates new deployment (
status = QUEUED) - Triggers ECS Fargate build with:
GIT_REPO_URL,PROJECT_ID,DEPLOYMENT_ID- Subnet and security group
- Launches
build-servercontainer
- Queries logs in ClickHouse by
deployment_id
- Aggregates analytics grouped by:
- Path, Method, User Agent, IP
- Registers and logs in users
- Uses bcrypt for password hashing
- Returns JWT on login
- Lists all user-associated projects
- Lists all deployments for a project
- Subscribes to topic
build-log - JSON-parses each log
- Inserts into
log_eventstable in ClickHouse
Reverse proxy for routing frontend requests to deployed project containers.
- Subdomain or custom domain-based routing
- Reverse proxy to project containers
- Logs each request for analytics
-
Domain Parsing
Extracts subdomain fromreq.hostname
Matches withsubdomainorcustomDomainin project table -
Request Logging
Asynchronously inserts:path,method,userAgent,ip,projectId
Intoanalyticstable.
-
Proxy Handling
Proxies request to the corresponding build files in S3.
| Layer | Technology |
|---|---|
| Frontend | Next.js, TailwindCSS |
| Backend | Node.js, Express.js, Docker |
| Infra | AWS ECS, Fargate, S3, ECR |
| Messaging | Kafka |
| Logs | ClickHouse |
| Database | PostgreSQL (via Prisma ORM) |
