Installation

Get up and running with Nimbus in a few minutes. This guide covers the CLI install, project creation, and manual setup.

Prerequisites

  • Go 1.26 or later — download from go.dev/dl.
  • Git — for version control and fetching dependencies.
  • $HOME/go/bin in your PATH so installed Go binaries are available globally.

Verify your Go installation:

go version
# go version go1.26.0 (or later)

Install the Nimbus CLI

The CLI provides commands for creating apps, running the dev server, and generating code.

go install github.com/CodeSyncr/nimbus/cmd/nimbus@latest

If you are working from a local clone of the Nimbus repository, you can install directly:

cd /path/to/nimbus
go install ./cmd/nimbus

Make sure $HOME/go/bin is in your PATH. For zsh, add to ~/.zshrc:

export PATH="$HOME/go/bin:$PATH"

Create a New App

Scaffold a fresh Nimbus project with the new command:

nimbus new myapp
cd myapp

This creates a ready-to-run project with a Laravel-inspired folder structure:

myapp/
  bin/server.go         # Boot sequence (config, middleware, routes, DB)
  start/kernel.go       # Middleware registration
  start/routes.go       # Route definitions
  config/               # Environment-driven configuration
  app/controllers/      # HTTP controllers
  views/                # .nimbus templates
  main.go               # Minimal entrypoint (do not modify)

Install Dependencies

go mod tidy

Run the Dev Server

Start the development server with hot reload:

nimbus serve

The server starts at http://localhost:3333 (configurable via .env). File changes are detected automatically and the server restarts.

Manual Setup (without CLI)

You can add Nimbus to any existing Go project manually:

go get github.com/CodeSyncr/nimbus@latest

For a quick start without the full folder structure, a single-file app works:

package main

import (
    "github.com/CodeSyncr/nimbus"
    "github.com/CodeSyncr/nimbus/http"
    "github.com/CodeSyncr/nimbus/middleware"
)

func main() {
    app := nimbus.New()
    app.Router.Use(middleware.Logger(), middleware.Recover())

    app.Router.Get("/", func(c *http.Context) error {
        return c.JSON(http.StatusOK, map[string]string{"hello": "nimbus"})
    })

    app.Run()
}

However, for production apps we recommend using nimbus new which generates the full Laravel-inspired structure with bin/server.go, start/kernel.go, and start/routes.go.

Environment

Create a .env file in your project root (the CLI creates one for you):

PORT=3333
APP_ENV=development
APP_NAME=myapp
DB_DRIVER=sqlite
DB_DSN=database.sqlite

Run with nimbus serve for hot reload, or go run main.go to run directly.