A simplified Vercel-like platform for deploying, hosting, and serving web applications automatically.
This project uses Node.js, TypeScript, Express, Redis, AWS S3, and simple-git, and includes a frontend for submitting deployment requests.
-
Upload Service:
- Accepts a repository URL, clones it, collects files, and uploads them to S3.
- Tracks upload status in Redis and exposes status endpoints.
-
Deploy Service:
- Watches Redis for new uploads, downloads files from S3, builds React projects, uploads built files to S3, and updates status.
-
Request Handler:
- Express server on port 3001, handles wildcard routes, extracts subdomain, fetches files from S3, and serves them with correct content types.
-
Frontend:
- Simple form for users to submit repository URLs and check deployment status.
- Node.js
- AWS account and S3 bucket
- Local Redis server
-
Initialize Upload Service:
mkdir upload-service && cd upload-service npm init -y npm install typescript express redis aws-sdk simple-git cors npx tsc --init
-
Initialize Deploy Service:
mkdir deploy-service && cd deploy-service npm init -y npm install typescript redis aws-sdk npx tsc --init
-
Initialize Request Handler:
mkdir request-handler && cd request-handler npm init -y npm install typescript express aws-sdk npx tsc --init
- Start Redis locally.
- Launch upload, deploy, and request handler services.
- Use the frontend to submit a repository and deploy static sites.