DeployHub is a monorepo containing services for handling Vercel deployments, file uploads, and request handling. It is organized into three main packages:
- vercel-deploy-service: Handles deployment automation to Vercel, AWS integration, and Redis-based coordination.
- vercel-upload-service: Manages file uploads, AWS S3 integration, and exposes an Express API for upload operations.
- vercel-request-handler: Provides a request handling layer, potentially acting as a gateway or middleware for deployment and upload requests.
DeployHub uses a modular, service-oriented architecture. Each service is a standalone Node.js/TypeScript application, but they can be orchestrated together for a complete deployment workflow.
DeployHub/
├── vercel-deploy-service/
│ └── src/
│ ├── aws.ts
│ ├── index.ts
│ └── utils.ts
├── vercel-upload-service/
│ └── src/
│ ├── aws.ts
│ ├── file.ts
│ ├── index.ts
│ └── utils.ts
└── vercel-request-handler/
└── src/
└── index.ts
- Purpose: Automates deployments to Vercel, manages AWS resources, and coordinates with Redis.
- Key Features:
- AWS SDK integration for resource management.
- Redis for caching or coordination.
- Utility functions for deployment automation.
- Purpose: Handles file uploads, integrates with AWS S3, and exposes an Express API.
- Key Features:
- Express server for handling HTTP file uploads.
- AWS S3 integration for storing uploaded files.
- CORS support for cross-origin requests.
- Redis for caching or coordination.
- Utility functions for file and AWS operations.
- Purpose: Acts as a gateway or middleware for handling requests to the deployment and upload services.
- Key Features:
- Express server for routing and handling API requests.
- Can be extended to add authentication, logging, or request validation.
- TypeScript: All services are written in TypeScript for type safety and maintainability.
- AWS Integration: Uses the AWS SDK for S3 and other AWS services.
- Redis Support: For caching, coordination, or pub/sub.
- Express APIs: HTTP APIs for file uploads and request handling.
- CORS Support: Allows cross-origin requests for upload endpoints.
- Simple Git Integration: (vercel-upload-service) for handling git operations if needed.
- Node.js (v16 or newer recommended)
- npm or yarn
- AWS credentials (for S3 integration)
- Redis server (if using Redis features)
git clone https://github.com/phantomsoldierking/DeployHub.git
cd DeployHub
Each service is independent. Install dependencies for each:
cd vercel-deploy-service
npm install
cd ../vercel-upload-service
npm install
cd ../vercel-request-handler
npm install
Each service uses TypeScript. Build them individually:
cd vercel-deploy-service
npx tsc
cd ../vercel-upload-service
npx tsc
cd ../vercel-request-handler
npx tsc
Create a .env
file in each service directory as needed. Common variables might include:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_REGION
REDIS_URL
S3_BUCKET_NAME
PORT
Start each service (after building):
cd vercel-deploy-service
node dist/index.js
cd ../vercel-upload-service
node dist/index.js
cd ../vercel-request-handler
node dist/index.js
You can use tools like concurrently or pm2 to run all services together.
- vercel-upload-service: Exposes endpoints for file uploads. Integrates with S3 and Redis.
- vercel-deploy-service: Handles deployment automation, AWS resource management, and Redis coordination.
- vercel-request-handler: Handles incoming API requests and routes them to the appropriate service.
Refer to each service's src/index.ts
for API endpoints and usage details.
- All TypeScript configuration is in each service's
tsconfig.json
. - Source code is in the
src/
directory of each service. - Output is in the
dist/
directory after building.
- Fork the repo and create your branch.
- Make changes and add tests if needed.
- Run
npx tsc
in each service to ensure type safety. - Submit a pull request.
This project is licensed under the ISC License.
For questions or support, please open an issue in this repository.