A lightweight, high-performance deployment platform built with Go, Fiber v3, and React + TanStack Router
Self-hostable Platform as a Service (PaaS) for modern application deployment
Warning
This project is currently in active development and is not ready for production use. APIs and configurations are subject to change.
goploy is a free, self-hostable deployment platform that simplifies application and database management with blazing-fast performance powered by Go.
- Lightning Fast: Built with Go and Fiber v3 for maximum performance
- Docker Native: Deploy and manage Docker containers with ease
- Database Support: Built-in support for PostgreSQL, MySQL, MongoDB, Redis, and SQLite
- RESTful API: Complete API for automation and integrations
- API Docs: OpenAPI 3.1 spec auto-generated from Go structs, Scalar UI at
/api/docs - Structured Logging: Production-ready logging with Zerolog
- Security First: Helmet middleware, CORS, rate limiting, and secure defaults
- Environment Management: Validated config with go-playground/validator
- Built-in Dashboard: React (TanStack Router) frontend embedded in Go binary β single binary deploy
- Minimal Footprint: ~16MB binary, <50MB idle memory
- Auto Recovery: Built-in panic recovery for production stability
- Health Monitoring: Real-time health checks with memory stats
- goqite->(JobQueue), gopsutil->(Monitoring), and robfig/cron->(Backups/Cleanup)
- Go 1.26+
- Docker
- Bun (for building the frontend)
- Taskfile (cross-platform build tool)
- Atlas (optional, for schema diffing)
git clone https://github.com/vajra-labs/goploy.git
cd goploy
task web:deps-
One-time Setup: Run the setup command to initialize the development environment (Docker Swarm, Traefik, etc.):
task setup
-
Start Dev Server: Start the development server with live reload (Air):
task dev
Server starts at
http://localhost:8000. -
Teardown: Revert the dev setup (remove Traefik, Swarm, etc.):
task teardown
task build # builds React SPA + embeds into Go binary
task start # runs the binarytask # Show all available commands
task setup # One-time dev setup (Swarm, Traefik, etc.)
task teardown # Revert dev setup (remove Traefik, etc.)
task dev # Start dev server with live reload (Air)
task build # Build production binary (includes web:build)
task server:build # Build Go server binary only (skips web:build)
task start # Run production binary
task code:test # Run all tests
task code:lint # Lint Go source code with golangci-lint
task code:format # Format Go source code with gofumpt
task mod:deps # Download Go dependencies
task mod:tidy # Tidy go.mod
task mod:clean # Remove build artifacts
# Web dashboard
task web:dev # Start React dev server (port 3000)
task web:build # Build React SPA for production
task web:deps # Install frontend dependencies
task web:lint # Lint with ESLint
task web:format # Format with Prettier
task web:check # Check (lint + format)
# Database migrations (goose)
task migrate:up # Run pending migrations
task migrate:down # Rollback last migration
task migrate:status # Show migration status
task migrate:reset # Rollback all migrations
# Schema management (atlas + goose)
task atlas:diff NAME=<label> # Diff schema and generate Goose migration file
# Code generation (sqlc)
task sqlc # Generate type-safe Go from SQLConfigure via .env file:
GO_ENV="development" # dev, prod, test
HOST="0.0.0.0"
PORT=8000
SECRET="your-secret-key-min-32-chars"
CORS_ALLOW_ORIGIN="http://localhost:3000"
BODY_LIMIT="2MB"
DB_PATH="sqldb/db.sqlite3"
# JWT
JWT_ACCESS_EXP="5m"
JWT_REFRESH_EXP="24h"
# Rate limiting
RATE_LIMIT_MAX_REQ=100
RATE_LIMIT_WINDOWS="15m"
# Docker
DOCKER_HOST="unix:///var/run/docker.sock"
DOCKER_API_VERSION="1.41"- 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
MIT License β see LICENSE for details.
Aashish Panchal Β· GitHub @vajra-labs Β· aipanchal51@gmail.com
Made with β€οΈ using Go
β Star this repo if you find it useful!