A powerful deployment platform and API Gateway for containerized applications with comprehensive team management and monitoring capabilities.
Neploy is a modern deployment platform that simplifies the process of deploying, managing, and scaling containerized applications. It provides an intuitive web interface for teams to collaborate on application deployments while offering robust API gateway functionality, real-time monitoring, and comprehensive user management.
- π³ Containerized Deployments: Automatic Docker containerization with support for multiple programming languages
- π OAuth Integration: Seamless authentication with GitHub and GitLab
- π₯ Team Management: Role-based access control and user invitation system
- π Real-time Monitoring: Application metrics, health checks, and performance tracking
- π API Gateway: Dynamic routing, middleware support, and request handling
- π Analytics: Visitor tracking, request statistics, and application insights
- π Version Control: Application versioning with Git integration
- π¬ Real-time Communication: WebSocket support for live updates and notifications
- π― Health Monitoring: Automatic health checks and uptime tracking
- Go 1.23 - Core backend language
- Echo v4 - Web framework
- PostgreSQL - Primary database
- Docker - Containerization
- JWT - Authentication
- WebSocket - Real-time communication
- React 18 - UI framework
- TypeScript - Type safety
- Vite - Build tool
- Tailwind CSS - Styling
- Inertia.js - Server-side rendering
- Radix UI - Component library
- Git Integration - GitHub and GitLab support
- Email Service - Resend integration
- Swagger - API documentation
- i18n - Internationalization support
- Go 1.23+
- Node.js 18+
- PostgreSQL 12+
- Docker and Docker Compose
- Yarn package manager
git clone https://github.com/neployio/neploy.git
cd neploy
Copy the example environment file and configure your settings:
cp .env.example .env
Edit the .env
file with your configuration:
# Database Configuration
DB_NAME=neploy
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_HOST=localhost
DB_PORT=5432
DB_SSL_MODE=disable
# Application Settings
ENV=local
BASE_URL=http://localhost
PORT=3000
JWT_SECRET=your_jwt_secret_here
# OAuth Configuration (Optional)
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GITLAB_APPLICATION_ID=your_gitlab_application_id
GITLAB_SECRET=your_gitlab_secret
# Email Configuration (Optional)
RESEND_API_KEY=your_resend_api_key
RESEND_FROM_EMAIL=[email protected]
RESEND_FROM_NAME=Neploy
Create a PostgreSQL database and run the migrations:
# Create database
createdb neploy
# Install goose for migrations (if not already installed)
go install github.com/pressly/goose/v3/cmd/goose@latest
# Run migrations
goose -dir migrations postgres "postgres://your_db_user:your_db_password@localhost:5432/neploy?sslmode=disable" up
Backend dependencies:
go mod download
Frontend dependencies:
# Enable corepack for yarn 4.x support
corepack enable
# Install dependencies
yarn install
yarn build
Development mode:
# Terminal 1: Start the backend
go run cmd/app/main.go
# Terminal 2: Start the frontend dev server (optional for development)
yarn dev
Production mode:
# Build the application
go build -o neploy cmd/app/main.go
# Run the binary
./neploy
The application will be available at http://localhost:3000
(or your configured port).
The application uses database migrations located in the migrations/
directory. Ensure your database is set up and migrations are applied before running the application.
To enable GitHub/GitLab authentication:
-
GitHub OAuth App:
- Go to GitHub Settings > Developer settings > OAuth Apps
- Create a new OAuth App
- Set Authorization callback URL to:
http://localhost:3000/auth/github/callback
- Copy Client ID and Client Secret to your
.env
file
-
GitLab OAuth App:
- Go to GitLab Settings > Applications
- Create a new application
- Set Redirect URI to:
http://localhost:3000/auth/gitlab/callback
- Copy Application ID and Secret to your
.env
file
The application automatically generates Dockerfiles for supported languages:
- Node.js
- Python
- Go
- Ruby
- Rust
- PHP
- First Time Setup: Navigate to
/setup
for initial system configuration - Create Admin User: Connect with GitHub/GitLab and complete admin profile
- Define Roles: Set up initial team roles and permissions
- Create Application: Upload files or connect Git repository
- Deploy: Automatic containerization and deployment
- Monitor: View real-time metrics and logs
- Scale: Manage multiple versions and configurations
- Invite Users: Send email invitations with role assignments
- Manage Permissions: Control access levels per user/role
- Track Activity: Monitor team member activities and deployments
Interactive API documentation is available at:
- Swagger UI:
http://localhost:3000/swagger/
- API Specification: Located in
neploy/docs/swagger.yaml
neploy/
βββ cmd/app/ # Application entry point
βββ config/ # Configuration management
βββ migrations/ # Database migrations
βββ neploy/ # Core application logic
β βββ handler/ # HTTP handlers
β βββ middleware/ # Custom middleware
β βββ docs/ # API documentation
βββ pkg/ # Shared packages
β βββ docker/ # Docker integration
β βββ gateway/ # API Gateway logic
β βββ model/ # Data models
β βββ repository/ # Data access layer
β βββ service/ # Business logic
β βββ websocket/ # WebSocket handlers
βββ resources/ # Frontend assets and documentation
β βββ js/ # React components
β βββ md/ # Markdown documentation
βββ public/ # Static assets
# Run Go tests
go test ./...
# Run frontend tests (if available)
yarn test
# Build frontend assets
yarn build
# Build Go binary
go build -o neploy cmd/app/main.go
- 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 MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the documentation for detailed guides
- Review existing GitHub Issues
- Create a new issue with detailed information
- Built with β€οΈ by the Neploy team
- Inspired by modern deployment platforms and container orchestration tools
- Thanks to all contributors and the open-source community