A Git-to-Live Deployment Platform Transform GitHub repositories into managed projects with one-click deployment
Features β’ Quick Start β’ Documentation β’ Contributing
SourceToLive is a Git-to-live deployment platform that transforms connected GitHub repositories into managed projects with one-click deployment. Turn your code into a live application in three simple steps: connect a repository, configure your build, and deploy.
|
|
|
SourceToLive/
βββ π Backend-Server/ # Node.js/Express API server
β βββ config/ # Configuration management
β βββ controllers/ # Request handlers
β βββ middleware/ # Auth & verification middleware
β βββ models/ # MongoDB schemas
β βββ routes/ # API route definitions
β βββ utils/ # Helper functions
β βββ index.js # Express app entry point
β βββ cloudflared-config.yml
β βββ package.json
β βββ TUNNEL_SETUP.md
β
βββ π Build-Server/ # Docker containerized build environment
β βββ Dockerfile # Container definition
β βββ main.sh # Build orchestration script
β βββ script.js # Build execution logic
β βββ package.json
β
βββ π client/ # React frontend (Vite)
β βββ src/
β β βββ components/ # Reusable React components
β β βββ pages/ # Page-level components
β β βββ App.jsx # Main app file
β β βββ index.css # Global styles
β β βββ main.jsx # React entry point
β βββ public/ # Static assets
β βββ vite.config.js
β βββ eslint.config.js
β βββ package.json
β
βββ π Reverse-Proxy/ # EC2-based reverse proxy for deployed apps
β βββ index.js # Proxy server logic
β βββ package.json
β βββ 404.html
β
βββ π Docs/ # Documentation
β βββ images/ # Architecture diagrams and visuals
β β βββ SystemArchitecture.png
β βββ APP_DOCUMENTATION.md
β βββ API_DOCUMENTATION.md
β βββ AWS_CONFIGURATION.md
β
βββ README.md
| Frontend | Backend | Infrastructure |
|---|---|---|
|
|
|
- Docker β Containerized build environment
- Morgan β HTTP request logging
- CORS β Cross-origin request handling
| Required | Version | Link |
|---|---|---|
| Node.js | β₯ 18 | Download |
| npm or yarn | Latest | Comes with Node.js |
| MongoDB Atlas | Cloud | Sign up |
| AWS Account | Free Tier eligible | Create account |
| GitHub OAuth App | Free | Setup guide |
Fastest way to get started β All services run with one command
git clone https://github.com/GovindSingh3011/SourceToLive.git
cd SourceToLive
docker-compose upFrontend: http://localhost:5173 Backend: http://localhost:3000 Reverse Proxy: http://localhost:8000
|
| AWS Area | What to Check |
|---|---|
| Backend Server | CLUSTER, TASK, AWS_SUBNETS, AWS_SECURITY_GROUPS, S3_BUCKET |
| Build Server | AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION |
| Reverse Proxy | PORT, BASE_PATH, AWS credentials, AWS_REGION |
cd Backend-Server
npm installCreate .env file in Backend-Server/:
# π Server Configuration
PORT=3000
NODE_ENV=production
APP_DOMAIN=sourcetolive.app
# βοΈ AWS Configuration
AWS_REGION=us-east-1
CLUSTER=<your-ecs-cluster>
TASK=<your-ecs-task>
AWS_SUBNETS=<comma-separated-subnet-ids>
AWS_SECURITY_GROUPS=<comma-separated-security-group-ids>
S3_BUCKET=<your-s3-bucket>
AWS_ACCESS_KEY_ID=<your-access-key>
AWS_SECRET_ACCESS_KEY=<your-secret-key>
# ποΈ Database
MONGODB_URI=<your-mongodb-connection-string>
# π Authentication
JWT_SECRET=<strong-random-secret>
# π§ Email Configuration
EMAIL_SERVICE=gmail
EMAIL_USER=<your-email>
EMAIL_PASSWORD=<gmail-app-password>
EMAIL_FROM=<sender-name>
# π OAuth Configuration
GOOGLE_CLIENT_ID=<your-google-client-id>
GITHUB_CLIENT_ID=<your-github-client-id>
GITHUB_CLIENT_SECRET=<your-github-secret>
GITHUB_CALLBACK_URL=https://yourdomain.com/auth/github/callback
# π CORS & URLs
CORS_ORIGIN=https://sourcetolive.dev
FRONTEND_URL=https://sourcetolive.dev
API_URL=https://api.sourcetolive.devStart the backend:
npm run dev # Development
npm start # Productionβ Backend: http://localhost:3000
cd client
npm installCreate .env file in client/:
# π API Configuration
VITE_API_URL=http://localhost:3000 # Backend API URL
# π OAuth Configuration
VITE_GOOGLE_CLIENT_ID=<your-google-client-id>
VITE_GITHUB_CLIENT_ID=<your-github-client-id>
VITE_GITHUB_REDIRECT_URI=http://localhost:5173/auth/github/callbackStart the dev server:
npm run devβ Frontend: http://localhost:5173
cd Build-Server
npm install
docker build -t sourcetolive-build .Create .env file in Build-Server/:
# βοΈ AWS Credentials
AWS_ACCESS_KEY_ID=<your-access-key>
AWS_SECRET_ACCESS_KEY=<your-secret-key>
AWS_REGION=us-east-1cd Reverse-Proxy
npm installCreate .env file in Reverse-Proxy/:
# π Application Settings
PORT=8000
BASE_PATH=https://sourcetolivebucket.s3.us-east-1.amazonaws.com/__outputs
# βοΈ AWS Credentials
AWS_ACCESS_KEY_ID=<your-access-key>
AWS_SECRET_ACCESS_KEY=<your-secret-key>
AWS_REGION=us-east-1Start the server:
npm run devβ Reverse Proxy: http://localhost:8000
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register new user |
| POST | /api/auth/register/verify |
Verify OTP & complete signup |
| POST | /api/auth/login |
Login with credentials |
| POST | /api/auth/google |
Google OAuth login |
| GET | /api/auth/github/oauth |
Initiate GitHub OAuth |
| GET | /api/auth/github/callback |
GitHub OAuth callback |
| GET | /api/auth/me |
Get current user info |
| POST | /api/auth/github-token |
Save GitHub token |
| GET | /api/auth/github-token/status |
Check GitHub connection |
| DELETE | /api/auth/github-token |
Disconnect GitHub |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/project |
List all user projects |
| POST | /api/project |
Create new project |
| GET | /api/project/:projectId |
Get project details |
| PUT | /api/project/:projectId |
Update project config |
| DELETE | /api/project/:projectId |
Delete project |
| GET | /api/project/:projectId/logs/stream |
Live build logs (EventSource) |
| GET | /api/project/:projectId/logs/archive |
Get archived logs |
| POST | /api/project/:projectId/redeploy |
Trigger manual redeploy |
| GET | /api/project/repositories/github |
Fetch GitHub repositories |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/webhook/github/:projectId |
GitHub webhook trigger |
| POST | /api/webhook/gitlab/:projectId |
GitLab webhook trigger |
| POST | /api/webhook/enable/:projectId |
Enable auto-redeploy |
| POST | /api/webhook/disable/:projectId |
Disable auto-redeploy |
| GET | /api/webhook/status/:projectId |
Get webhook status |
| Route | Purpose |
|---|---|
/ |
Home / Landing page |
/login |
User login |
/signup |
User registration with OTP |
/dashboard |
Projects dashboard |
/create-project |
3-step deployment wizard |
/project/:projectId |
Project detail & logs |
/project/:projectId/settings |
Project configuration |
/profile |
User account & GitHub settings |
/about |
About and team page |
/api-docs |
API documentation |
/app-docs |
App documentation |
SourceToLive operates as a distributed deployment platform with the following components working in harmony:
How it works:
- GitHub triggers a webhook when code is pushed
- Backend Server receives the event and validates the repository
- Build Servers (ECS Fargate) compile and build the project in parallel containers
- Log Server (CloudWatch) streams real-time build logs to the dashboard
- S3 Bucket stores the compiled output in project directories
- Reverse Proxy routes incoming requests to the live deployment
- Frontend monitors progress and displays logs to the user
| Component | Role | Technology |
|---|---|---|
| GitHub | Source control & webhooks | GitHub API + OAuth 2.0 |
| Backend Server | API & orchestration | Node.js + Express + MongoDB |
| Build Servers | Multi-process compilation | AWS ECS Fargate + Docker |
| Log Server | Real-time log streaming | CloudWatch + Node.js |
| S3 Storage | Build output storage | AWS S3 + CloudFront |
| Reverse Proxy | URL routing & delivery | AWS EC2 + Node.js |
| Frontend | User dashboard & monitoring | React 19 + Vite + Tailwind |
All protected API endpoints require this header:
Authorization: Bearer <jwt_token>
| Method | Use Case | Setup |
|---|---|---|
| Email + Password | Traditional signup/login | Requires JWT secret |
| Google OAuth | Quick sign-up with Google | Needs Google Client ID |
| GitHub OAuth | Repository access & webhooks | Needs GitHub Client ID & Secret |
- π± Token stored in browser
localStorageastoken - π Protected routes redirect to
/loginif unauthenticated - β±οΈ Token expiration enforced; no automatic refresh
1οΈβ£ User Creates Project
β
2οΈβ£ Backend Validates Repo
β
3οΈβ£ ECS Build Task Queued
β
4οΈβ£ Build Execution (Docker Container)
β
5οΈβ£ Live Log Streaming via CloudWatch
β
6οΈβ£ S3 Upload (Build Output)
β
7οΈβ£ URL Activation
β
8οΈβ£ Dashboard Update
| State | Meaning |
|---|---|
queued |
Waiting for build to start |
running |
Build in progress (logs streaming) |
finished |
Build completed, deployment live β |
failed |
Build failed (check logs for errors) β |
{
_id: ObjectId,
email: String (unique),
password: String (bcrypt hashed),
displayName: String,
avatar: String (URL),
githubToken: String (encrypted),
isVerified: Boolean,
createdAt: Date,
updatedAt: Date
}{
_id: ObjectId,
projectId: String (unique per user),
name: String,
repositoryUrl: String,
branch: String (default: 'main'),
installCommand: String (e.g., 'npm install'),
buildCommand: String (e.g., 'npm run build'),
buildOutputDirectory: String (e.g., 'dist/'),
environmentVariables: Object, // key-value pairs
owner: { userId: ObjectId },
status: String ('queued' | 'running' | 'finished' | 'failed'),
deploymentUrl: String (auto-generated),
deploymentTimestamps: {
created: Date,
started: Date,
completed: Date
},
webhookEnabled: Boolean,
webhookId: String,
createdAt: Date,
updatedAt: Date
}# Terminal 1 - Backend API
cd Backend-Server
npm run dev
# Terminal 2 - Frontend (another terminal)
cd client
npm run dev
# Terminal 3 - Reverse Proxy (optional)
cd Reverse-Proxy
npm run devAfter startup, access:
- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- Reverse Proxy: http://localhost:8000
Frontend:
cd client
npm run build # Output: dist/
npm run preview # Preview production buildBackend:
- No build needed; runs Node.js directly
Frontend:
cd client
npm run lint # Run ESLint
npm run lint:fix # Fix lint issues- App Documentation β User-facing feature guide
- API Documentation β Comprehensive API reference
- AWS Configuration Guide β Full AWS setup for ECS, S3, IAM, and CloudWatch
Browse documentation directly in the app at /api-docs and /app-docs.
We welcome contributions! Follow these steps to contribute:
git clone https://github.com/GovindSingh3011/SourceToLive.git
cd SourceToLive
git checkout -b feature/your-featureMake your changes and commit using conventional commit format:
git commit -m "feat(scope): description of your feature"git push origin feature/your-featureThen open a Pull Request on GitHub with a clear description of your changes.
Follow Conventional Commits format:
<type>(<scope>): <subject>
- feat: New feature
- fix: Bug fix
- docs: Documentation changes
- style: Code style (no logic changes)
- refactor: Code refactoring
- test: Adding or updating tests
- chore: Build, dependencies, tooling
Examples:
feat(auth): add GitHub OAuth login
fix(dashboard): resolve project search filtering
docs: update API documentation
refactor(api): simplify error handling
- β No rollback to previous deployments
- β Single deployment per project (overwrites on redeploy)
- β No team collaboration or shared projects
- β No build caching or optimization
- β No custom domains (CNAME support)
- β No advanced monitoring or metrics
| Feature | Status | Priority |
|---|---|---|
| Deployment Rollback | Planned | High |
| Team Collaboration | Planned | High |
| Build Caching | Planned | Medium |
| Custom Domain Support | Planned | Medium |
| Advanced Monitoring & Alerts | Planned | Medium |
| Email Notifications | Planned | Medium |
| Staging Environments | Planned | Low |
| AI-Powered Platform Guidance (RAG) | Planned | Low |
| Feature | Implementation |
|---|---|
| Passwords | Hashed with bcrypt (salt rounds: 10) |
| Tokens | JWT encrypted at rest and in transit |
| GitHub Tokens | Encrypted in MongoDB before storage |
| Environment Variables | Secure storage (TODO: add encryption at rest) |
| CORS | Origin validation on all cross-origin requests |
| HTTPS/TLS | All production connections encrypted |
| Input Validation | All user inputs validated before processing |
| XSS Protection | Content security policy headers |
- β Use strong, unique passwords
- β Enable 2FA on GitHub and connected accounts
- β Regularly rotate access tokens
- β Use HTTPS in production
- β Keep dependencies updated
- β Review environment variables permissions
SourceToLive is developed by a team of developers focused on implementing real-world deployment workflows, cloud infrastructure, and scalable application delivery while continuously learning and evolving.
| Contributor | GitHub Profile | |
|---|---|---|
| Govind Singh | @GovindSingh3011 | |
| Soumya Kumar Gupta | @soumyakumargupta | |
| Vansh Agarwal | @Vanshagarwl | |
| Aviral Mishra | @AVIRALMISHRA1 | |
| Akshat Kushwaha | @akshatkushwaha03 | |
| Jatin Kumar | @Jatin-kumarx |
This repository is intended for learning, reference, and non-commercial exploration.
Unauthorized commercial usage, reproduction, or deployment of this project is not permitted without prior authorization.
This project is licensed under the SourceToLive Custom License.
Usage for commercial purposes requires prior permission from the Primary Developer.
- π App Documentation β User guide & features
- π API Documentation β API reference & examples
- π οΈ AWS Configuration Guide β Step-by-step AWS setup
- π Open an Issue β Report bugs or suggest features
- π¬ Check existing issues β Your question might already be answered
Found a bug? Want to add a feature? Contributions are welcome! See Contributing section above for guidelines.
Deploy your code with confidence. SourceToLive makes it simple.
Last Updated: April 9, 2026 Version: 1.0 Status: Production Ready β
Β© 2026 SourceToLive. All rights reserved.
