Deploy Center is an enterprise-grade, self-hosted CI/CD automation platform that transforms GitHub webhooks into intelligent deployment pipelines. Built from the ground up with TypeScript, SOLID principles, and production-ready architecture.
Quick Start β’ Documentation β’ API Reference β’ Contributing β’ Roadmap
- Why Deploy Center?
- Key Features
- Architecture
- Prerequisites
- Quick Start
- Installation
- Configuration
- API Endpoints
- Pipeline Configuration
- Webhook Setup
- Notifications
- Deployment Workflow
- Security
- Testing with Postman
- Production Deployment
- Monitoring & Logging
- Troubleshooting
- Architecture Diagrams
- Project Structure
- Roadmap
- Contributing
- License
- Support
- Maintainers
Traditional CI/CD platforms are either too complex (Jenkins, GitLab CI), too expensive (CircleCI, Travis CI), or too limited (basic webhook handlers). Deploy Center strikes the perfect balance:
| Feature | Deploy Center | Traditional Platforms | Basic Webhooks |
|---|---|---|---|
| Self-Hosted | β Full control | β Yes | |
| Easy Setup | β <5 minutes | β Hours/days | β Minutes |
| Web Dashboard | β Beautiful UI | β Complex | β No interface |
| Multi-Project | β Unlimited | β Yes (paid) | |
| Queue Management | β Built-in | β Yes | β None |
| Role-Based Access | β Admin/Dev/Viewer | β Complex RBAC | β None |
| Notifications | β Discord, Slack, Email, Telegram | β Limited | |
| Pipeline as Code | β JSON Config | β Scripts only | |
| Real-time Monitoring | β Live updates | β Yes | β Logs only |
| Free & Open | β Dual license | β Paid tiers | β DIY |
- π Startups β Self-hosted, free, powerful
- π’ SMEs β Multi-team deployment automation
- π¨βπ» Developers β Personal projects and portfolios
- π Learning β Study production-grade TypeScript architecture
- π Agencies β Manage client deployments centrally
- JWT-based authentication with refresh tokens
- Role-based access control (Admin, Developer, Viewer)
- Secure password hashing with bcrypt (12 rounds)
- Automatic admin recovery system
- Cookie-based session management
- Unlimited project support
- GitHub webhook integration
- Automatic deployment on push
- Path-based deployment triggers (deploy only when specific files change)
- Project-level statistics and analytics
- Webhook secret management and regeneration
- Custom multi-step pipeline configuration
- Variable substitution system (
{{variable}}) - Conditional step execution (
RunIfconditions) - Per-step timeout configuration
- Continue-on-error support
- Working directory control
- Command output capture and storage
- Execution duration tracking
- Prevents concurrent deployments per project
- Priority-based queue (manual > auto)
- Project-specific queues
- Queue status monitoring
- Bulk queue operations (cancel all pending)
- Event-driven queue processing
- Discord β Rich embeds with color-coded status
- Slack β Formatted message attachments
- Email β HTML email templates with SMTP
- Telegram β Markdown-formatted messages
- Per-project notification configuration
- Deployment success/failure alerts
- Winston logger with daily rotation
- Structured logging with metadata
- Separate log files (combined, error, deployment)
- Real-time log streaming
- Log retention policies
- Helmet.js security headers
- CORS configuration
- Rate limiting (per-endpoint customization)
- Input validation with Joi schemas
- AES-256-GCM encryption for sensitive data
- HMAC webhook signature verification
- SQL injection prevention (Sequelize ORM)
- XSS protection
- CSRF protection ready
- Complete REST API (30+ endpoints)
- Postman collection included
- TypeScript with strict mode
- Hot reload development
- ESLint + Prettier
- Comprehensive error messages
- Health check endpoint
Deploy Center follows a clean layered architecture pattern with SOLID principles:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β GitHub Webhook β
β (Push/PR/Release Events) β
ββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β
βββββββββββΌββββββββββ
β Webhook Routes β
β + Validation β
βββββββββββ¬ββββββββββ
β
βββββββββββΌββββββββββ
β WebhookService β
β β’ Verify HMAC β
β β’ Parse Payload β
βββββββββββ¬ββββββββββ
β
βββββββββββΌββββββββββ
β DeploymentService β
β Create Record β
βββββββββββ¬ββββββββββ
β
βββββββββββΌββββββββββ
β Queue Service β
β (Singleton) β
βββββββββββ¬ββββββββββ
β
βββββββββββΌββββββββββ
β PipelineService β
β Execute Steps β
βββββββββββ¬ββββββββββ
β
ββββββββββββββββ΄βββββββββββββββ
β β
βββββββΌβββββββ βββββββββββΌβββββββββ
β Git Pull β β NotificationSvc β
β npm installβ β Discord/Slack β
β npm build β β Email/Telegram β
β PM2 restartβ ββββββββββββββββββββ
ββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββ
β Routes Layer β β URL Mapping
ββββββββββββββββββββββββββββββββββββββββββ€
β Controllers Layer β β Request/Response
ββββββββββββββββββββββββββββββββββββββββββ€
β Services Layer β β Business Logic
ββββββββββββββββββββββββββββββββββββββββββ€
β Models Layer β β Data Access (ORM)
ββββββββββββββββββββββββββββββββββββββββββ€
β Database Layer (MariaDB) β β Persistence
ββββββββββββββββββββββββββββββββββββββββββ
- β Singleton β Config, Logger, Queue, Database
- β Repository β Data access abstraction
- β Service Layer β Business logic isolation
- β Factory β Response formatting, middleware creation
- β Dependency Injection β Loose coupling
π View Detailed Architecture
- Node.js β₯ 18.0.0
- npm β₯ 9.0.0
- MariaDB β₯ 10.6 (or MySQL β₯ 8.0)
- Git β₯ 2.0
- PM2 β Process manager for production
- Nginx β Reverse proxy
- SSL Certificate β For webhook HTTPS
node --version # Should show v18.0.0+
npm --version # Should show 9.0.0+
mysql --version # Should show MariaDB 10.6+ or MySQL 8.0+
git --version # Should show 2.0+Get up and running in 5 minutes:
git clone https://github.com/FutureSolutionDev/Deploy-Center-Server.git
cd Deploy-Center-Server/servernpm installCREATE DATABASE deploy_center CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'deploy_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON deploy_center.* TO 'deploy_user'@'localhost';
FLUSH PRIVILEGES;cp .env.example .env
# Edit .env with your settings (database, JWT secrets, etc.)npm run devServer starts at http://localhost:3000 π
curl -X POST http://localhost:3000/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"Username": "admin",
"Email": "admin@example.com",
"Password": "Admin@12345",
"Role": "admin"
}'π Detailed Installation Guide
For production setup, Docker deployment, PM2 configuration, and SSL setup:
π Complete Installation Guide
Covers:
- System requirements
- Step-by-step installation (Linux/macOS/Windows)
- Database setup and configuration
- Environment variable reference
- Production deployment with PM2
- Nginx reverse proxy setup
- SSL certificate with Let's Encrypt
- Docker deployment
- Firewall configuration
- Backup automation
Create .env from .env.example:
# Server
NODE_ENV=development
PORT=3000
# Database
DB_HOST=localhost
DB_PORT=3306
DB_NAME=deploy_center
DB_USER=deploy_user
DB_PASSWORD=your_secure_password
DB_DIALECT=mariadb
DB_AUTO_MIGRATE=true
# Default Admin (auto-created on first run)
DEFAULT_ADMIN_USERNAME=admin
DEFAULT_ADMIN_EMAIL=admin@example.com
DEFAULT_ADMIN_PASSWORD=changeme
# JWT
JWT_SECRET=your-super-secret-jwt-key-change-this
JWT_EXPIRY=1h
JWT_REFRESH_SECRET=your-super-secret-refresh-key
JWT_REFRESH_EXPIRY=7d
# Encryption (32 characters)
ENCRYPTION_KEY=your-32-character-encryption-key
# CORS (comma-separated)
CORS_ORIGINS=http://localhost:3000,http://localhost:5173
# Paths
DEPLOYMENTS_PATH=./deployments
LOGS_PATH=./logs# Generate JWT secret
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
# Generate encryption key (32 bytes)
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/auth/register |
Register new user | No |
POST |
/api/auth/login |
Login user | No |
POST |
/api/auth/refresh |
Refresh access token | Yes (Refresh Token) |
GET |
/api/auth/profile |
Get user profile | Yes |
POST |
/api/auth/change-password |
Change password | Yes |
| Method | Endpoint | Description | Auth Required | Role |
|---|---|---|---|---|
GET |
/api/projects |
List all projects | Yes | All |
GET |
/api/projects/:id |
Get project details | Yes | All |
GET |
/api/projects/name/:name |
Get project by name | Yes | All |
POST |
/api/projects |
Create project | Yes | Admin |
PUT |
/api/projects/:id |
Update project | Yes | Admin |
DELETE |
/api/projects/:id |
Delete project | Yes | Admin |
POST |
/api/projects/:id/regenerate-webhook |
Regenerate webhook secret | Yes | Admin |
GET |
/api/projects/:id/statistics |
Get project statistics | Yes | All |
| Method | Endpoint | Description | Auth Required | Role |
|---|---|---|---|---|
GET |
/api/deployments/:id |
Get deployment details | Yes | All |
GET |
/api/deployments/projects/:projectId/deployments |
List project deployments | Yes | All |
POST |
/api/deployments/projects/:projectId/deploy |
Trigger manual deployment | Yes | Developer+ |
POST |
/api/deployments/:id/cancel |
Cancel deployment | Yes | Developer+ |
POST |
/api/deployments/:id/retry |
Retry failed deployment | Yes | Developer+ |
GET |
/api/deployments/statistics |
Get deployment statistics | Yes | All |
GET |
/api/deployments/queue/status |
Get global queue status | Yes | All |
GET |
/api/deployments/projects/:projectId/queue/status |
Get project queue status | Yes | All |
POST |
/api/deployments/projects/:projectId/queue/cancel-all |
Cancel all pending | Yes | Admin |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/webhook/github/:projectName |
GitHub webhook receiver | No (HMAC) |
GET |
/webhook/test/:projectName |
Test webhook endpoint | No |
| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Health check |
GET |
/ |
API information |
{
"Name": "my-app",
"RepoUrl": "https://github.com/username/my-app.git",
"Config": {
"Branch": "main",
"AutoDeploy": true,
"Environment": "production",
"Pipeline": [
{
"Name": "Install Dependencies",
"Command": "npm ci",
"Timeout": 300000
},
{
"Name": "Build Project",
"Command": "npm run build",
"RunIf": "{{Environment}} === 'production'"
},
{
"Name": "Run Tests",
"Command": "npm test",
"ContinueOnError": false
},
{
"Name": "Deploy to Production",
"Command": "pm2 restart my-app",
"WorkingDirectory": "."
}
]
}
}Available variables in pipeline commands:
{{Environment}}β Environment name{{Branch}}β Git branch{{CommitHash}}β Commit SHA{{ProjectPath}}β Project directory- Custom variables from
Configobject
{
"Name": "Production Build",
"Command": "npm run build:prod",
"RunIf": "{{Environment}} === 'production'"
}Only deploy when specific files change:
{
"DeployOnPaths": [
"src/**",
"package.json",
"Dockerfile"
]
}After creating a project via API, you'll receive:
- Webhook URL:
https://your-domain.com/webhook/github/your-project-name - Webhook Secret: Generated automatically
- Go to your GitHub repository
- Settings β Webhooks β Add webhook
- Configure:
- Payload URL: Your webhook URL
- Content type:
application/json - Secret: Your project's webhook secret
- Events: Select "Just the push event"
- Active: β Checked
- Click Add webhook
# Test webhook endpoint (no signature verification)
curl https://your-domain.com/webhook/test/your-project-namePush to your repository and check:
- GitHub webhook delivery status (green β )
- Deploy Center logs:
tail -f logs/deployment-*.log - Deployment status via API
{
"Notifications": {
"Discord": {
"Enabled": true,
"WebhookUrl": "https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN"
}
}
}Creating Discord Webhook:
- Server Settings β Integrations β Webhooks
- Create Webhook β Copy URL
{
"Notifications": {
"Slack": {
"Enabled": true,
"WebhookUrl": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
}
}
}{
"Notifications": {
"Email": {
"Enabled": true,
"Host": "smtp.gmail.com",
"Port": 587,
"Secure": false,
"User": "your-email@gmail.com",
"Password": "your-app-password",
"From": "Deploy Center <noreply@yourapp.com>",
"To": ["team@example.com", "ops@example.com"]
}
}
}{
"Notifications": {
"Telegram": {
"Enabled": true,
"BotToken": "YOUR_BOT_TOKEN",
"ChatId": "YOUR_CHAT_ID"
}
}
}graph LR
A[GitHub Push] --> B{Webhook Received}
B --> C[Verify HMAC]
C --> D{Valid?}
D -->|No| E[Reject 401]
D -->|Yes| F[Parse Payload]
F --> G{Should Deploy?}
G -->|No| H[Skip - Wrong Branch/Files]
G -->|Yes| I[Create Deployment]
I --> J[Add to Queue]
J --> K{Queue Empty?}
K -->|No| L[Wait in Queue]
K -->|Yes| M[Start Execution]
L --> M
M --> N[Execute Pipeline]
N --> O{Success?}
O -->|Yes| P[Mark Success]
O -->|No| Q[Mark Failed]
P --> R[Send Notification]
Q --> R
R --> S[Process Next in Queue]
| State | Description | Can Cancel? | Can Retry? |
|---|---|---|---|
queued |
Waiting in queue | β Yes | β No |
inProgress |
Currently deploying | β No | β No |
success |
Completed successfully | β No | β No |
failed |
Deployment failed | β No | β Yes |
cancelled |
Manually cancelled | β No | β Yes |
- β JWT tokens with HS256 signing
- β Refresh token rotation
- β bcrypt password hashing (12 rounds)
- β Password strength requirements
- β Cookie-based sessions (HttpOnly, Secure, SameSite)
- β Role-based access control (RBAC)
- β Endpoint-level permission enforcement
- β Resource-level access validation
- β Joi schema validation
- β Request sanitization
- β Type checking with TypeScript
- β Rate limiting (configurable per endpoint)
- β Helmet.js security headers
- β CORS whitelisting
- β XSS protection
- β CSRF protection ready
- β AES-256-GCM encryption for sensitive data
- β HMAC-SHA256 webhook verification
- β SQL injection prevention (Sequelize ORM)
- β Environment variable protection
| Endpoint Type | Rate Limit | Window |
|---|---|---|
| General API | 100 requests | 15 minutes |
| Authentication | 5 requests | 15 minutes |
| Deployment | 10 requests | 5 minutes |
| Webhook | 60 requests | 1 minute |
- β Always use HTTPS in production
- β Generate strong JWT secrets (64+ bytes)
- β
Never commit
.envfiles - β Rotate webhook secrets periodically
- β Use firewall to restrict database access
- β Enable audit logging
- β Regular dependency updates
- β Review logs for suspicious activity
- Download Postman Collection
- Open Postman β Import β Select file
- Collection will auto-configure variables
- β Health Check β Verify server is running
- β Register Admin β Create admin user (auto-saves token)
- β Get Profile β Verify authentication works
- β Create Project β Add your first project (auto-saves project ID)
- β Manual Deployment β Test deployment pipeline
- β Get Deployment β Monitor deployment status
- β Auto-saves access tokens
- β Auto-fills project/deployment IDs
- β Pre-configured request bodies
- β Test scripts for validation
- β Environment variables support
# Build project
npm run build
# Start with PM2
pm2 start ecosystem.config.js --env production
# Save PM2 configuration
pm2 save
# Enable startup on boot
pm2 startup
# Monitor
pm2 monitserver {
listen 80;
server_name deploy.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# Increase timeout for long deployments
proxy_read_timeout 300s;
}
}sudo certbot --nginx -d deploy.yourdomain.comLocated in logs/ directory:
| File | Content | Retention |
|---|---|---|
combined-%DATE%.log |
All logs | 14 days |
error-%DATE%.log |
Errors only | 30 days |
deployment-%DATE%.log |
Deployment logs | 30 days |
# Tail all logs
tail -f logs/combined-*.log
# Tail errors only
tail -f logs/error-*.log
# Tail deployment logs
tail -f logs/deployment-*.log
# PM2 logs (if using PM2)
pm2 logs deploy-centercurl http://localhost:3000/health
# Expected response:
# {
# "Success": true,
# "Message": "Deploy Center API is running",
# "Timestamp": "2025-01-28T..."
# }Error: connect ECONNREFUSED 127.0.0.1:3306
Solution:
# Check if MariaDB is running
sudo systemctl status mariadb
# Start MariaDB
sudo systemctl start mariadb
# Test connection
mysql -u deploy_user -p deploy_centerError: EADDRINUSE: address already in use :::3000
Solution:
# Find process using port 3000
lsof -i :3000
# Kill process (replace PID)
kill -9 PID
# Or change port in .env
PORT=3001Solutions:
- Verify webhook secret matches between GitHub and project
- Check server is accessible from internet (use ngrok for local testing)
- Review GitHub webhook delivery logs
- Test webhook:
GET /webhook/test/:projectName - Check server logs:
tail -f logs/combined-*.log
Solution:
# Login again to get new token
curl -X POST http://localhost:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"Username":"admin","Password":"Admin@12345"}'
# Or use refresh token endpoint
curl -X POST http://localhost:3000/api/auth/refresh \
-H "Content-Type: application/json" \
-d '{"RefreshToken":"YOUR_REFRESH_TOKEN"}'π Full Troubleshooting Guide
graph TB
subgraph "External Services"
GH[GitHub]
DISCORD[Discord]
SLACK[Slack]
EMAIL[Email SMTP]
end
subgraph "Deploy Center"
WH[Webhook Endpoint]
API[REST API]
AUTH[Auth Service]
PS[Project Service]
DSVC[Deployment Service]
QS[Queue Service]
PPS[Pipeline Service]
NS[Notification Service]
DB[(MariaDB)]
end
subgraph "Target Servers"
TS1[Server 1]
TS2[Server 2]
TS3[Server N]
end
GH -->|POST Webhook| WH
WH --> DSVC
API --> AUTH
API --> PS
API --> DSVC
DSVC --> QS
QS --> PPS
PPS -->|Execute| TS1
PPS -->|Execute| TS2
PPS -->|Execute| TS3
PPS --> NS
NS --> DISCORD
NS --> SLACK
NS --> EMAIL
AUTH --> DB
PS --> DB
DSVC --> DB
erDiagram
Users ||--o{ Projects : creates
Users ||--o{ AuditLogs : generates
Projects ||--o{ Deployments : has
Deployments ||--o{ DeploymentSteps : contains
Users {
int Id PK
string Username UK
string Email UK
string PasswordHash
string Role
boolean IsActive
datetime CreatedAt
datetime UpdatedAt
datetime DeletedAt
}
Projects {
int Id PK
string Name UK
string RepoUrl
string WebhookSecret
json Config
int CreatedBy FK
boolean IsActive
datetime CreatedAt
datetime UpdatedAt
datetime DeletedAt
}
Deployments {
int Id PK
int ProjectId FK
string Branch
string CommitHash
string CommitMessage
string Status
datetime StartedAt
datetime FinishedAt
int CreatedBy FK
datetime CreatedAt
}
DeploymentSteps {
int Id PK
int DeploymentId FK
string Name
string Command
string Status
text Output
text ErrorOutput
int DurationMs
datetime CreatedAt
}
AuditLogs {
int Id PK
int UserId FK
string Action
string Resource
json Details
datetime CreatedAt
}
deploy-center/
βββ server/ # Backend API
β βββ src/
β β βββ Config/ # Application configuration
β β βββ Controllers/ # HTTP request handlers
β β βββ Database/ # Database connection & setup
β β βββ Middleware/ # Express middlewares
β β βββ Models/ # Database models (Sequelize)
β β βββ Routes/ # API route definitions
β β βββ Services/ # Business logic layer
β β βββ Types/ # TypeScript type definitions
β β βββ Utils/ # Utility functions & helpers
β β βββ App.ts # Express app setup
β β βββ Server.ts # Server initialization
β β βββ index.ts # Entry point
β βββ docs/ # Documentation
β βββ logs/ # Log files (auto-generated)
β βββ deployments/ # Deployment workspaces
β βββ .env.example # Environment template
β βββ package.json
β βββ tsconfig.json
βββ client/ # Web Dashboard (React)
βββ .github/ # GitHub templates & workflows
β βββ ISSUE_TEMPLATE/
β βββ pull_request_template.md
β βββ workflows/
βββ LICENSES/ # License files
β βββ LICENSE-PERSONAL.md
β βββ LICENSE-COMMERCIAL.md
βββ README.md
βββ CONTRIBUTING.md
βββ CODE_OF_CONDUCT.md
βββ SECURITY.md
βββ SUPPORT.md
π Detailed Structure Documentation
- β Complete TypeScript rewrite
- β Database integration (MariaDB)
- β JWT authentication & RBAC
- β Queue management system
- β Multi-platform notifications
- β Pipeline execution engine
- β REST API (30+ endpoints)
- β Comprehensive logging
- β Security hardening
- β Full documentation
- π§ Web dashboard (React + TypeScript)
- π§ Real-time updates (Socket.IO)
- π§ Database migrations (Sequelize CLI)
- π§ Deployment rollback system
- π§ Health checks for deployed apps
- π Multi-server deployment support
- π Docker & Kubernetes integration
- π Deployment scheduling (cron)
- π Environment variables management
- π Secrets vault integration
- π Approval workflows
- π Advanced analytics & reporting
- π GitLab & Bitbucket support
- π Plugin system
- π Marketplace for deployment templates
- Container registry integration
- Blue-green deployments
- Canary releases
- A/B testing support
- Performance metrics
- Cost tracking
- Multi-tenant support
- SSO (OAuth, SAML)
Vote on features: GitHub Discussions
We welcome contributions! Deploy Center is built with β€οΈ by the community.
- π΄ Fork the repository
- π¨ Create a feature branch (
git checkout -b feature/amazing-feature) - β
Commit your changes (
git commit -m 'Add amazing feature') - π€ Push to the branch (
git push origin feature/amazing-feature) - π― Open a Pull Request
# Clone your fork
git clone https://github.com/YOUR_USERNAME/Deploy-Center-Server.git
cd Deploy-Center-Server/server
# Install dependencies
npm install
# Setup database
mysql -u root -p < setup.sql
# Configure environment
cp .env.example .env
# Edit .env
# Start development server
npm run dev- β PascalCase for classes, interfaces, class properties, class methods
- β camelCase for variables, function parameters
- β TypeScript strict mode enforced
- β ESLint + Prettier for formatting
- β SOLID principles followed
- β Tests required for new features
- β Documentation updated
Deploy Center is available under dual licensing:
Free for personal, non-commercial use.
Perfect for:
- β Personal projects
- β Learning & education
- β Open source contributions
- β Portfolio projects
Required for commercial use, businesses, and organizations.
Includes:
- β Commercial deployment rights
- β Integration into commercial products
- β White-label deployment
β οΈ Restrictions on redistribution
| Use Case | License Required |
|---|---|
| Personal projects | Personal Use License |
| Learning & tutorials | Personal Use License |
| Open source projects | Personal Use License |
| Freelance client work | Commercial License |
| Startup/business use | Commercial License |
| SaaS platform | Commercial License |
| Reselling software | Commercial License |
Need commercial license? Contact: licensing@futuresolutionsdev.com
- π Documentation β Comprehensive guides
- π¬ GitHub Discussions β Ask questions
- π GitHub Issues β Report bugs
- β GitHub Stars β Show support
Need help with deployment, customization, or integration?
- π§ Email: support@futuresolutionsdev.com
- πΌ Website: futuresolutionsdev.com
- π± WhatsApp: +20 106 901 7890
- π Phone: +20 106 901 7890
Sabry Dawood Lead Developer |
FutureSolutionDev Organization |
- π Website: futuresolutionsdev.com
- π₯ Facebook: @futuresolutionsdev
- πΌ LinkedIn: FutureSolutionDev
Built with these amazing technologies:
- Node.js β JavaScript runtime
- TypeScript β Type safety
- Express.js β Web framework
- Sequelize β ORM
- MariaDB β Database
- Winston β Logging
- Joi β Validation
- JWT β Authentication
- PM2 β Process manager
If you find Deploy Center useful, please consider giving it a star!
π Made with β€οΈ by FutureSolutionDev
Deploy Center β Deployment Automation Made Simple