Overview
The deployment process is an end-to-end workflow that takes a repository URL and transforms it into a live, hosted application. The system handles cloning, uploading, queuing, building, and deploying your project automatically.Architecture Flow
ID Generation & Cloning
The system generates a unique 10-character random ID and clones the repositoryImplementation:
upload-service/src/server.ts:17-26The
generateRandomId() function uses alphanumeric characters (A-Z, a-z, 0-9) to create collision-resistant identifiers.File Collection
All files are collected while respecting The
.gitignore rulesImplementation: upload-service/src/utils/getAllFiles.ts:5-47getAllFiles function:- Reads the project’s
.gitignorefile - Recursively traverses directories
- Filters out ignored files (node_modules, .env, etc.)
- Returns full file paths for upload
S3 Upload
All project files are uploaded to S3 in parallelImplementation: S3 Key Structure:
upload-service/src/server.ts:32-41Queue Insertion
The deployment ID is pushed to Redis queue for processingImplementation:
upload-service/src/utils/buildQueue.ts:9-17The upload service immediately returns success to the user after queuing, allowing asynchronous build processing.
Deploy Service Flow
While the upload service handles the initial submission, the deploy service processes queued builds:Queue Listening
Deploy service continuously listens for new deploymentsImplementation:
deploy-service/src/server.ts:11-27Complete Deployment Timeline
Detailed Timeline Example
Detailed Timeline Example
- T+0s: User submits repository URL
- T+2s: Repository cloned to
dist/output/aB3xK9mP2q - T+3s: 150 files collected (excluding node_modules)
- T+8s: All files uploaded to S3 (
output/aB3xK9mP2q/*) - T+8.1s: ID pushed to Redis queue
- T+8.2s: User receives deployment ID
- T+8.3s: Deploy service picks up from queue
- T+10s: Source files downloaded from S3
- T+15s: Docker container created and build started
- T+45s: Build completes, output copied from container
- T+50s: Built assets uploaded to
dist/aB3xK9mP2q/* - T+50s: Deployment live at
https://{id}.yourplatform.com
Error Handling
The system includes robust error handling at each stage:- Clone Errors
- Upload Errors
- Build Errors
Implementation: Common scenarios:
upload-service/src/server.ts:46-49- Invalid repository URL
- Private repositories without credentials
- Network timeouts
Key Implementation Files
| File | Purpose | Key Functions |
|---|---|---|
upload-service/src/server.ts | Main upload endpoint | Repository cloning, file upload orchestration |
upload-service/src/utils/getAllFiles.ts | File collection | Recursive traversal with .gitignore support |
upload-service/src/utils/uploadFiles.ts | S3 uploads | Stream-based file uploads |
upload-service/src/utils/buildQueue.ts | Queue operations | Redis LPUSH for queue insertion |
deploy-service/src/server.ts | Queue consumer | Continuous build queue processing |
deploy-service/src/utils/downloadS3Folder.ts | S3 downloads | Batch file downloads from S3 |
deploy-service/src/utils/buildProject.ts | Docker builds | Container-based project building |
Next Steps
Build System
Learn about Docker-based build isolation
Queue Management
Understand Redis queue operations