This project is a simplified deployment platform that allows users to deploy their frontend projects seamlessly. It replicates key functionalities of platforms like Vercel by automating the process of building and hosting frontend code.
- User-friendly deployment process: Users provide a repository URL, and the system handles the rest.
- Integration with AWS S3: Code is stored and retrieved from S3 for processing and deployment.
- Automated build and deploy: The deploy service builds the frontend code and serves the final output.
- Polling mechanism: Users can check the status of their deployment (e.g., Uploaded, Deployed) using a polling API.
- Redis queue for task management: Ensures efficient task processing and status updates.
-
User Interaction:
- Users enter the repository URL of the project they want to deploy.
- The frontend sends this request to the request handler service.
-
Code Storage:
- The request handler retrieves the code from the repository and stores it in AWS S3.
-
Redis Queue:
- Once the code is uploaded, a task is added to a Redis queue.
-
Deployment Service:
- The deploy service fetches the code from S3, builds it using a code build process, and generates static files (HTML, CSS, JS).
- The generated static files are stored back in S3 for hosting.
-
Polling for Status:
- Users can poll for the deployment status using a status endpoint.
- Statuses include:
Uploaded
Deployed
-
Final Deployment:
- Once deployed, the final URL for the project is returned (e.g.,
http://id.localhost:30001/index.html
).
- Once deployed, the final URL for the project is returned (e.g.,
- Upload Service: Handles retrieving the repository code and uploading it to S3.
- Deploy Service: Builds the frontend code and prepares it for deployment.
- Request Handler: Manages user requests, interacts with Redis for task queueing, and handles status polling.
- Frontend: React.js
- Backend: Node.js (Express.js)
- Language: TypeScript
- Storage: AWS S3
- Queue Management: Redis
- Build Process: Custom Node.js script or similar
-
Clone the repository:
git clone https://github.com/Maman08/LaunchNow.git cd LaunchNow
-
Install Dependencies for All Services
npm install
-
Set Up Environment Variables
AWS_ACCESS_KEY_ID=your-aws-access-key AWS_SECRET_ACCESS_KEY=your-aws-secret-key AWS_REGION=your-region
-
Start Redis
redis-server
-
Start the Services
npm run dev