A powerful and easy-to-use CLI + UI tool for multistack automated deployment and management of your web projects.
A powerful, lightweight deployment automation tool written in Go for streamlined Git-based deployments. stackjet
is perfect for automating server deployments with minimal configuration and aims to support multiple technology stacks including Node.js, Golang, Java, Python and PHP.
- Git-based Deployments: Automatically pull latest changes from your Git repository
- Branch Management: Switch between branches seamlessly during deployment
- Smart Updates: Only deploy when there are actual changes to pull
- Custom Commands: Configurable build, start, and post-deployment commands
- Verbose Logging: Detailed output for debugging and monitoring
- Force Reset: Clean slate deployments with git reset functionality
- Flexible Configuration: Customize StackJet's behavior based on your needs and preferences
Note: You do NOT need to have Go installed to use this tool. Precompiled binaries are available in the releases section for easy download and setup.
curl -sSL https://raw.githubusercontent.com/satnamSandhu2001/StackJet/master/install.sh | bash
Before using StackJet, initialize it in your environment:
stackjet init
Options:
-f, --force Force recreate config (Use with caution! This will overwrite any existing config)
-h, --help Show help message
Add a new application to StackJet for deployment management:
stackjet add [OPTIONS]
Required Options:
-t, --tech string Application Technology Stack Type (currently supports: nodejs)
-r, --repo string Git repository URL
-p, --port int Port number for the application
Optional Options:
--branch string Git branch name (default from config)
--git-remote string Git remote name (default from config)
--build string Build commands (e.g., 'npm install && npm run build')
--start string App start commands (e.g., 'npm start') default is 'npm start'
--post string Post deployment commands (e.g., 'npm run post-deploy')
-h, --help Show help message
Add a Node.js application:
stackjet add --tech nodejs -p 3000 --repo https://github.com/username/my-app.git
Add with custom build and start commands:
stackjet add --tech nodejs -p 8080 --repo https://github.com/username/my-app.git \
--build "npm install && npm run build" \
--start "npm run prod" \
--post "npm run migrate"
Add with specific branch:
stackjet add --tech nodejs -p 3000 --repo https://github.com/username/my-app.git \
--branch production --git-remote upstream
Deploy your application with Git sync, process management, and more:
stackjet deploy [OPTIONS]
Options:
-d, --dir string Root directory of project (default "./")
--branch string Git branch name to deploy
--git-remote string Git remote name
--git-hash string Rollback to specific commit hash
--git-reset Force reset Git state before deployment (default true)
-h, --help Show help message
Deploy from current directory:
stackjet deploy
Deploy from specific directory:
stackjet deploy --dir "/var/www/sites/<You will recieve directory path when you add new app to stackjet>"
Deploy specific branch:
stackjet deploy --branch "production"
Rollback to specific commit:
stackjet deploy --git-hash "abc123def456"
StackJet provides comprehensive support for Node.js applications with PM2 integration:
- Automatic PM2 Setup: Process management with PM2 for production deployments
- Custom Start Commands: Support for various Node.js start commands
- Build Process: Configurable build commands for compilation and optimization
- Post-Deployment Hooks: Execute custom commands after deployment
Supported Node.js Commands:
Start commands must be in the format: [npm|yarn|pnpm] [<script name>]
without any extra args. args must be embedded in package file.
For example:
npm start
npm run prod
yarn dev:server
npm start:prod
Default Behavior:
- If no start command is specified, defaults to
npm start
- Build commands are optional and executed before starting the application
- Post commands run after successful deployment
- Java/Spring Boot: Spring Boot application deployment and management
- Python/Django: Complete Django application deployment pipeline
- PHP/Laravel: PHP application deployment with Composer integration
- Static Sites: Static site deployments
- Docker Support: Containerized application deployment
- Git installed and configured
- (For Node.js applications only) Node.js, [npm|yarn|pnpm] and PM2 installed
- Stack Validation: Validates the specified technology stack
- Repository Setup: Validates Git repository URL and accessibility
- Port Management: Checks port availability and validates port numbers
- Command Validation: Validates start commands for the specified stack
- Database Storage: Stores application configuration for future deployments
- Configuration Loading: Loads application configuration from database
- Git Operations: Handles branch switching, pulling, and reset operations
- Build Process: Executes build commands if specified
- Process Management: Manages application processes (PM2 for Node.js)
- Health Checks: Verifies successful deployment
- Post-Deployment: Executes post-deployment commands
- Node.js Web Applications: Deploy Express.js, React.js, Angular.js, Vue.js Koa.js, or any Node.js based applications
- API Services: Deploy REST APIs and microservices
- Full-Stack Applications: Deploy complete web applications with frontend and backend
- CI/CD Integration: Integrate with continuous deployment pipelines
- Multi-Environment Deployments: Manage development, staging, and production deployments
- Visual Dashboard: Web-based interface for managing deployments
- Real-time Monitoring: Live deployment status and logs
- Multi-project Management: Handle multiple applications from one interface
- User Authentication: Secure access control and role management
- GitHub/GitLab Webhooks: Automatic deployments on push events
- Custom Webhook Endpoints: Flexible integration with various platforms
- Payload Validation: Secure webhook processing with signature verification
- Conditional Deployments: Deploy based on branch, tags, or commit messages
- Enhanced PM2 Integration: Advanced PM2 configuration and monitoring
- Nginx Configuration: Dynamic virtual host and reverse proxy setup
- Cloudflare Integration: DNS and CDN configuration automation
- SSL Certificate Management: Automatic HTTPS setup with Let's Encrypt
- Python/Django: Complete Django application deployment pipeline
- Java/Spring Boot: Spring Boot application deployment and management
- PHP/Laravel: PHP application deployment with Composer integration
- Frontend Frameworks: Static sites and SPAs (React, Angular, Vue, Next.js)
- Docker Support: Containerized application deployment
- Database Migrations: Automatic database schema updates
- Configuration Templates: Predefined deployment configurations
- Advanced Rollback: Quick rollback to previous deployments with history
- Health Checks: Application health monitoring post-deployment
- Notification System: Slack, Discord, email notifications
- Deployment Scheduling: Cron-like deployment scheduling
- Environment Management: Multiple environment support (dev, staging, prod)
- Load Balancing: Automatic load balancer configuration
I welcome contributions! Here's how you can help:
- Fork the repository
- Create your 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
git clone https://github.com/satnamSandhu2001/StackJet.git
cd StackJet
go mod tidy
# StackJet CLI
go run main.go --help
# StackJet API Server
go run http/main.go
- Bug Reports: GitHub Issues
- Feature Requests: GitHub Discussions
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with โค๏ธ using Go
- Inspired by the need for simple, reliable deployment automation
- Community-driven development and feedback
โญ Star this repository if you find it useful!
StackJet - Deploy Fast, Fly High!