Prabogo
Prabogo is a Go framework designed to simplify project development by providing an interactive command interface and built-in instructions for AI assistance.
Install / Use
/learn @prabogo/PrabogoREADME
Prabogo
![]()
Prabogo is a Go framework designed to simplify project development by providing an interactive command interface and built-in instructions for AI assistance. This framework streamlines common engineering tasks, making it easier for software engineers to scaffold, generate, and manage project components efficiently. With Prabogo, developers benefit from automation and intelligent guidance, accelerating the software development process.
Design Docs
AI Agents

Requirement
- go version >= go1.24.0
Before running the app, copy the example environment file:
cp .env.example .env
Start External Services with Docker Compose
docker-compose up -d
Stop External Services with Docker Compose
docker-compose down
Start Authentik Services with Docker Compose
To start Authentik authentication services (includes PostgreSQL, Redis, Server, and Worker):
docker-compose -f docker-compose.authentik.yml up -d
Stop Authentik Services with Docker Compose
docker-compose -f docker-compose.authentik.yml down
Start Temporal Services with Docker Compose
To start Temporal workflow services (includes PostgreSQL, Elasticsearch, Temporal Server, Admin Tools, and Web UI):
docker-compose -f docker-compose.temporal.yml up -d
The Temporal UI will be available at http://localhost:8080 and the Temporal server will be accessible on port 7233.
Stop Temporal Services with Docker Compose
docker-compose -f docker-compose.temporal.yml down
Run App in Development Mode
To run the application directly (without Makefile or Docker), ensure all required environment variables are set. You can use a .env file or export them manually.
Start the app with:
go run cmd/main.go <option>
Replace <option> with any command-line arguments your application supports. For example:
go run cmd/main.go http
Make sure external dependencies (such as PostgreSQL, RabbitMQ, and Redis) are running, either via Docker Compose or another method.
Makefile Commands
The project includes a comprehensive Makefile with various helpful commands for code generation and development tasks.
Interactive Command Runner

You can use the interactive target selector to choose and run Makefile targets:
make run
This will display an interactive menu to select a Makefile target and will prompt for any required parameters. The selector works in two modes:
- If
fzfis installed: Uses a fuzzy-search interactive selector (recommended for best experience) - If
fzfis not available: Falls back to a basic numbered menu selection
To install fzf (optional):
- macOS:
brew install fzf - Linux:
apt install fzf(Ubuntu/Debian) ordnf install fzf(Fedora) - Windows: With chocolatey:
choco install fzfor with WSL, follow Linux instructions
Common Makefile Targets
Code Generation Targets
-
model: Creates a model/entity with necessary structures (requires VAL parameter)make model VAL=name -
migration-postgres: Creates a PostgreSQL migration file (requires VAL parameter)make migration-postgres VAL=name -
inbound-http-fiber: Creates HTTP handlers using Fiber framework (requires VAL parameter)make inbound-http-fiber VAL=name -
inbound-message-rabbitmq: Creates RabbitMQ message consumers (requires VAL parameter)make inbound-message-rabbitmq VAL=name -
inbound-command: Creates command line interface handlers (requires VAL parameter)make inbound-command VAL=name -
inbound-workflow-temporal: Creates Temporal workflow worker (requires VAL parameter)make inbound-workflow-temporal VAL=name -
outbound-database-postgres: Creates PostgreSQL database adapter (requires VAL parameter)make outbound-database-postgres VAL=name -
outbound-http: Creates HTTP adapter (requires VAL parameter)make outbound-http VAL=name -
outbound-message-rabbitmq: Creates RabbitMQ message publisher adapter (requires VAL parameter)make outbound-message-rabbitmq VAL=name -
outbound-cache-redis: Creates Redis cache adapter (requires VAL parameter)make outbound-cache-redis VAL=name -
outbound-workflow-temporal: Creates Temporal workflow starter adapter (requires VAL parameter)make outbound-workflow-temporal VAL=name -
generate-mocks: Generates mock implementations from all go:generate directives in registry filesmake generate-mocks
Runtime Targets
-
build: Builds the Docker image for the applicationmake build # Force rebuild regardless of existing image: make build BUILD=true -
http: Runs the application in HTTP server mode inside Dockermake http # Force rebuild before running: make http BUILD=true -
message: Runs the application in message consumer mode inside Docker (requires SUB parameter)make message SUB=upsert_client # Force rebuild before running: make message SUB=upsert_client BUILD=true -
command: Executes a specific command in the application (requires CMD and VAL parameters)make command CMD=publish_upsert_client VAL=name # Force rebuild before running: make command CMD=publish_upsert_client VAL=name BUILD=true -
workflow: Runs the application in workflow worker mode inside Docker (requires WFL parameter)make workflow WFL=upsert_client # Force rebuild before running: make workflow WFL=upsert_client BUILD=true
Running test suite
Unit tests
go test -cover ./internal/domain/...
To generate coverage report:
go test -coverprofile=coverage.profile -cover ./internal/domain/...
go tool cover -html coverage.profile -o coverage.html
Coverage report will be available at coverage.html
To check intermittent test failure due to mock. when in doubt, use -t 1000
retry -d 0 -t 100 -u fail -- go test -coverprofile=coverage.profile -cover ./internal/domain/... -count=1
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Moch Dieqy Dzulqaidar
