A powerful cloud deployment platform that automates the build and deployment process for web applications
- π Overview
- ποΈ Architecture
- π¦ Services
- β‘ Quick Start
- π§ Local Setup
- π Service Endpoints
- π API Documentation
- π€ Contributing
Vortex is a comprehensive cloud deployment platform inspired by modern deployment services like Vercel. It provides automated building, deployment, and hosting of web applications with custom domain support and real-time deployment status tracking.
- π Automated Builds: Clone, build, and deploy applications automatically
- π Custom Domains: Support for custom domain mapping
- π Real-time Monitoring: Live deployment status and logs
- π Secure Authentication: JWT-based user authentication
- π Analytics: ClickHouse integration for deployment analytics
- π Scalable Infrastructure: AWS ECS-based container orchestration
graph TB
A[Client] --> B[API Server :9000]
B --> C[Build Server Container]
B --> D[MongoDB]
B --> E[Redis Cache]
B --> F[ClickHouse Analytics]
C --> G[AWS S3]
H[S3 Reverse Proxy :8000] --> G
A --> H
B --> I[Socket.IO :9002]
I --> A
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#fff3e0
style G fill:#e8f5e8
style H fill:#fff8e1
Port: 9000 | Main HTTP API server handling authentication, project management, and deployment orchestration
Key Features:
- π User authentication and authorization
- π Project CRUD operations
- π Deployment management via AWS ECS
- π¬ Real-time communication via Socket.IO
- π Analytics integration with ClickHouse
- π Kafka message queue integration
Tech Stack: Node.js, Express, MongoDB, Socket.IO, AWS SDK, Kafka, ClickHouse
Containerized | Docker-based build environment that clones, builds, and deploys applications
Key Features:
- π₯ Git repository cloning
- π¨ Automated build process
- π€ Asset upload to AWS S3
- π Build status reporting via Kafka
- π·οΈ Multi-framework support
Tech Stack: Node.js, Docker, AWS S3, Kafka
Port: 8000 | Intelligent reverse proxy for serving static assets from S3 with custom domain support
Key Features:
- π Dynamic subdomain to S3 mapping
- π Custom domain support
- π Static asset serving
- β‘ High-performance proxy
Tech Stack: Node.js, Express, HTTP Proxy, MongoDB
# Clone the repository
git clone <repository-url>
cd vortex
# Install dependencies for all services
npm run install:all
# Start all services
npm run dev- π¦ Node.js (v18+ recommended)
- π³ Docker & Docker Compose
- π MongoDB
- βοΈ AWS Account with ECS, S3, and ECR access
- π§ Redis (optional, for caching)
# Navigate to each service and install dependencies
cd api-server && npm install
cd ../build-server && npm install
cd ../s3-reverse-proxy && npm installCreate .env files in each service directory:
api-server/.env
PORT=9000
MONGO_URI=mongodb://localhost:27017/vortex
JWT_SECRET=your-jwt-secret
AWS_ACCESS_KEY_ID=your-aws-access-key
AWS_SECRET_ACCESS_KEY=your-aws-secret-key
AWS_REGION=ap-south-1
ECS_CLUSTER_ARN=your-ecs-cluster-arn
ECS_TASK_DEFINITION_ARN=your-task-definition-arn
REDIS_URL=redis://localhost:6379
CLICKHOUSE_URL=your-clickhouse-url
KAFKA_BROKER=localhost:9092build-server/.env
AWS_ACCESS_KEY_ID=your-aws-access-key
AWS_SECRET_ACCESS_KEY=your-aws-secret-key
AWS_REGION=ap-south-1
S3_BUCKET=your-s3-bucket-name
KAFKA_BROKER=localhost:9092s3-reverse-proxy/.env
PORT=8000
MONGO_URI=mongodb://localhost:27017/vortex
S3_BASE_URL=https://your-s3-bucket.s3.ap-south-1.amazonaws.com/__outputscd build-server
# Build the Docker image
docker build -t vortex-build-server .
# Tag and push to AWS ECR
aws ecr get-login-password --region ap-south-1 | docker login --username AWS --password-stdin <your-ecr-uri>
docker tag vortex-build-server:latest <your-ecr-uri>/vortex-build-server:latest
docker push <your-ecr-uri>/vortex-build-server:latest- Create an ECS cluster
- Create a task definition using the pushed Docker image
- Update the
ECS_CLUSTER_ARNandECS_TASK_DEFINITION_ARNin api-server/.env
# Terminal 1 - API Server
cd api-server && node index.js
# Terminal 2 - S3 Reverse Proxy
cd s3-reverse-proxy && node index.js
# MongoDB and Redis should be running as services| Service | Port | Purpose | Health Check |
|---|---|---|---|
| API Server | :9000 |
REST API & Authentication | GET /health |
| Socket.IO Server | :9002 |
Real-time Updates | WebSocket connection |
| S3 Reverse Proxy | :8000 |
Static Asset Serving | GET / |
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/profile- Get user profile
GET /api/projects- List user projectsPOST /api/projects- Create new projectGET /api/projects/:id- Get project detailsPUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
POST /api/deployments- Trigger new deploymentGET /api/deployments/:projectId- Get deployment historyGET /api/deployments/:id/logs- Get deployment logs
curl -X POST http://localhost:9000/api/projects \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-jwt-token>" \
-d '{
"name": "my-awesome-app",
"gitUrl": "https://github.com/username/my-awesome-app.git",
"subDomain": "my-awesome-app"
}'curl -X POST http://localhost:9000/api/deployments \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-jwt-token>" \
-d '{
"projectId": "project-id-here"
}'We welcome contributions! Please see our Contributing Guidelines for details.
- π΄ Fork the repository
- πΏ Create a feature branch
- π» Make your changes
- β Run tests
- π Submit a pull request
Made with β€οΈ by the Vortex Team
β Star us on GitHub if you find this project useful!
This project is licensed under the ISC License - see the LICENSE file for details.