# π StackUp - Cloud Code Deployment Platform
StackUp is a scalable, developer-friendly platform that allows users to deploy static projects directly from GitHub repositories to AWS infrastructure using Fargate, S3, Kafka, and ClickHouse. It also supports real-time log tracking via WebSockets and data ingestion for analytics.
## π§ Features
- βοΈ **GitHub Integration**: Create and deploy projects from GitHub URLs.
- ποΈ **Subdomain Routing**: Each project gets a unique subdomain.
- βοΈ **AWS Fargate + S3**: Serverless container execution and static hosting on S3.
- π **Kafka + ClickHouse**: Stream logs and analytics to a fast OLAP database.
- π **Reverse Proxy**: Smart routing based on subdomain to serve the correct project.
- π‘ **Socket.IO Logs**: Real-time log streaming to clients during deployments.
- π§ͺ **Health Monitoring**: Status endpoint for checking service health.
## π Folder Structure
StackUp/ βββ output/ # Static files to be uploaded (HTML/CSS/JS) βββ kafka.pem # SSL certificate for Kafka connection βββ .env # Environment variables (AWS, Kafka, DB) βββ server.js # Main API and proxy server βββ deploy.js # File upload and log publishing logic βββ README.md # You're reading it!
## π§ Tech Stack
- **Backend**: Node.js + Express
- **Deployment**: AWS Fargate, ECS
- **Storage**: Amazon S3
- **Queue**: Apache Kafka (via Aiven)
- **Analytics**: ClickHouse
- **Database**: Prisma + PostgreSQL
- **Logs**: Socket.IO + Kafka streaming
## π¦ .env Example
```dotenv
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret
S3_BUCKET=stackup-bucket-11
KAFKA_BROKER=your_kafka_broker:port
KAFKA_USERNAME=your_kafka_username
KAFKA_PASSWORD=your_kafka_password
CLICKHOUSE_URL=https://your-clickhouse-url
CLICKHOUSE_USERNAME=your_clickhouse_user
CLICKHOUSE_PASSWORD=your_clickhouse_pass
ECS_CLUSTER=your_ecs_cluster_name
ECS_TASK=your_ecs_task_definition
PROJECT_ID=your_project_id
DEPLOYEMENT_ID=your_deployment_id
-
Clone the repo:
git clone https://github.com/Aayushchauhan05/StackUp.git cd StackUp -
Create a
.envfile with required credentials. -
Deploy a project via:
POST /project Body: { "name": "MyApp", "gitURL": "https://github.com/username/repo" } -
Trigger deployment:
POST /deploy Body: { "projectId": "your_project_id" } -
Watch logs:
GET /logs/:deploymentId
-
Check service health:
GET /health
- GitHub Webhook support
- Deployment history page
- UI Dashboard
- SSL/TLS support for custom domains
- Rate limiting and auth
Aayush Chauhan GitHub LinkedIn
StackUp is a project built with a deep focus on performance, scalability, and developer simplicity. Contributions are welcome!