A modern, full-stack deployment platform that automatically builds and deploys GitHub repositories with Docker containerization, S3 storage, and real-time status tracking.
- One-Click Deployment: Deploy any GitHub repository with a single click
- Automatic Build Process: Automatically detects and builds projects using npm
- Docker Containerization: Each deployment gets its own isolated Docker container
- Real-time Status Tracking: Monitor deployment progress with live status updates
- Unique URL Generation: Each deployment gets a unique subdomain for easy access
- S3 File Storage: Secure cloud storage for all project files and builds
- Multi-Service Architecture: Microservices-based design for scalability
- Redis Queue System: Asynchronous job processing for deployments
- AWS S3 Integration: Cloud storage for project files and build artifacts
- TypeScript Support: Full TypeScript implementation across all services
- Modern UI: React-based frontend with Tailwind CSS styling
- Container Management: Built-in tools for managing Docker containers
The project consists of four main services:
- Technology: Next.js 15, React 19, TypeScript, Tailwind CSS
- Port: 4000
- Features:
- Modern, responsive UI
- Real-time deployment status updates
- GitHub repository URL input
- Deployment progress tracking
- Direct links to deployed applications
- Technology: Express.js, TypeScript, AWS SDK, Redis
- Port: 3000
- Features:
- GitHub repository cloning
- File upload to S3
- Deployment queue management
- Status tracking via Redis
- Unique ID generation for deployments
- Technology: TypeScript, AWS SDK, Redis, Docker
- Features:
- Background job processing
- S3 file download and project building
- Docker container creation and management
- Automatic port assignment
- Build artifact management
- Technology: Express.js, TypeScript, AWS SDK
- Port: 3001
- Features:
- Static file serving from S3
- Subdomain-based routing
- Content-type detection
- Direct file access for deployed applications
- Node.js 18+
- Docker
- Redis server
- AWS S3 bucket (or compatible S3 service)
- Git
Create .env files in each service directory with the following variables:
# AWS S3 Configuration
AMAZON_S3_KEY=your_s3_access_key
AMAZON_S3_SECRET=your_s3_secret_key
AMAZON_S3_ENDPOINT=your_s3_endpoint
# Redis Configuration (if not using default)
REDIS_URL=redis://localhost:6379-
Clone the repository
git clone <repository-url> cd devploy
-
Install dependencies for all services
# Frontend cd devploy-frontend npm install # Upload Service cd ../devploy-upload-service npm install # Deploy Service cd ../devploy-deploy-service npm install # Request Handler cd ../devploy-request-handler npm install
-
Build TypeScript services
# Upload Service cd devploy-upload-service npm run build # Deploy Service cd ../devploy-deploy-service npm run build # Request Handler cd ../devploy-request-handler npm run build
-
Start Redis server
redis-server
-
Start all services
# Terminal 1 - Frontend cd devploy-frontend npm run dev # Terminal 2 - Upload Service cd devploy-upload-service npm start # Terminal 3 - Deploy Service cd devploy-deploy-service npm start # Terminal 4 - Request Handler cd devploy-request-handler npm start
- Access the application: Open
http://localhost:4000in your browser - Enter GitHub URL: Paste the URL of any GitHub repository you want to deploy
- Deploy: Click the "Upload" button to start the deployment process
- Monitor Progress: Watch the real-time status updates
- Access Your App: Once deployed, click the "Visit Website" button to access your application
The deploy service includes a comprehensive container management script:
# List all devploy containers
./devploy-deploy-service/scripts/manage-containers.sh list
# Stop a specific project container
./devploy-deploy-service/scripts/manage-containers.sh stop <project-id>
# Start a specific project container
./devploy-deploy-service/scripts/manage-containers.sh start <project-id>
# Remove a specific project container
./devploy-deploy-service/scripts/manage-containers.sh remove <project-id>
# Show logs for a specific project
./devploy-deploy-service/scripts/manage-containers.sh logs <project-id>
# Clean up all devploy containers
./devploy-deploy-service/scripts/manage-containers.sh cleanupdevploy/
โโโ devploy-frontend/ # Next.js frontend application
โ โโโ src/
โ โ โโโ app/ # Next.js app router
โ โ โโโ components/ # React components
โ โ โโโ lib/ # Utility functions
โ โโโ package.json
โโโ devploy-upload-service/ # File upload and repository cloning service
โ โโโ src/
โ โ โโโ aws.ts # S3 upload utilities
โ โ โโโ file.ts # File system operations
โ โ โโโ index.ts # Main Express server
โ โ โโโ utils.ts # Utility functions
โ โโโ package.json
โโโ devploy-deploy-service/ # Build and deployment service
โ โโโ scripts/
โ โ โโโ docker-build.sh # Docker build utilities
โ โ โโโ manage-containers.sh # Container management
โ โโโ src/
โ โ โโโ aws.ts # S3 download utilities
โ โ โโโ index.ts # Main deployment logic
โ โ โโโ utils.ts # Build utilities
โ โโโ package.json
โโโ devploy-request-handler/ # Static file serving service
โ โโโ src/
โ โ โโโ index.ts # Express server for file serving
โ โโโ package.json
โโโ README.md
- Repository Input: User enters GitHub repository URL in the frontend
- Repository Cloning: Upload service clones the repository locally
- File Upload: All repository files are uploaded to S3
- Queue Processing: Deployment job is added to Redis queue
- Background Building: Deploy service processes the queue and builds the project
- Docker Containerization: Built project is containerized with Docker
- Status Update: Deployment status is updated in Redis
- File Serving: Request handler serves the deployed application
- Access: User can access the deployed application via unique URL
- Isolated Containers: Each deployment runs in its own Docker container
- Non-root Users: Docker containers run with non-root users
- Environment Variables: Sensitive data stored in environment variables
- S3 Security: Secure file storage with AWS S3
- Port Isolation: Each deployment gets a unique port
- Asynchronous Processing: Non-blocking deployment queue
- Parallel Builds: Multiple deployments can be processed simultaneously
- Caching: S3 caching for faster subsequent deployments
- Optimized Images: Alpine-based Docker images for smaller size
- Efficient File Handling: Stream-based file operations
- Frontend: 4000
- Upload Service: 3000
- Request Handler: 3001
- Deploy Service: Background process
- Redis: 6379 (default)
- Base Image: Node.js 18 Alpine
- Working Directory:
/app - Exposed Port: 3000 (internal)
- User: nodejs (non-root)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the ISC License.
For support and questions:
- Create an issue in the GitHub repository
- Check the container logs using the management script
- Verify all services are running and Redis is accessible
- Support for multiple programming languages
- Custom domain support
- SSL certificate automation
- Database integration for persistent storage
- User authentication and authorization
- Deployment history and rollback functionality
- Webhook integration for automatic deployments
- Monitoring and analytics dashboard