Skip to content

vajra-labs/goploy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

41 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Goploy

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.

✨ Features

  • 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)

πŸš€ Getting Started

Prerequisites

  • Go 1.26+
  • Docker
  • Bun (for building the frontend)
  • Taskfile (cross-platform build tool)
  • Atlas (optional, for schema diffing)

Installation

git clone https://github.com/vajra-labs/goploy.git
cd goploy
task web:deps

Development

  1. One-time Setup: Run the setup command to initialize the development environment (Docker Swarm, Traefik, etc.):

    task setup
  2. Start Dev Server: Start the development server with live reload (Air):

    task dev

    Server starts at http://localhost:8000.

  3. Teardown: Revert the dev setup (remove Traefik, Swarm, etc.):

    task teardown

Production Build

task build   # builds React SPA + embeds into Go binary
task start   # runs the binary

πŸ› οΈ Available Commands

task              # 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 SQL

πŸ”§ Configuration

Configure 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"

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

MIT License β€” see LICENSE for details.

πŸ‘¨β€πŸ’» Author

Aashish Panchal Β· GitHub @vajra-labs Β· aipanchal51@gmail.com


Made with ❀️ using Go

⭐ Star this repo if you find it useful!

About

Open Source Alternative and lightweight compare to Dokploy, Coolify, Vercel, Netlify and Heroku.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors