gofr-dev/gofr
An opinionated GoLang framework for accelerated microservice development. Built in support for databases and observability.
Backblaze Generative Media Hackathon
Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.
Loading star history...
Use Cases & Benefits
- GoFr is an opinionated Go framework designed to accelerate microservice development with built-in support for databases and observability.
- Key features include simple API syntax, REST by default, gRPC support, observability (logs, traces, metrics), auth middleware, pub/sub, and health checks.
- Strengths are Kubernetes deployment focus, out-of-the-box observability, and extensive middleware support; limitation may be its opinionated design restricting flexibility.
- Organizations can use GoFr to rapidly build, deploy, and monitor microservices in production with integrated observability and scalable architecture.
- Ideal use cases include building performant REST and gRPC microservices requiring observability, database integration, and Kubernetes-native deployment.
About gofr
🎯 Goal
GoFr is designed to simplify microservice development, with key focuses on Kubernetes deployment and out-of-the-box observability. While capable of building generic applications, microservices remain at its core.
💡 Key Features
- Simple API Syntax
- REST Standards by Default
- Configuration Management
- Observability (Logs, Traces, Metrics)
- Inbuilt Auth Middleware & Custom Middleware Support
- gRPC Support
- HTTP Service with Circuit Breaker Support
- Pub/Sub
- Health Check for All Datasources
- Database Migration
- Cron Jobs
- Support for Changing Log Level Without Restarting
- Swagger Rendering
- Abstracted File Systems
- Websockets
🚀 Getting Started
Prerequisites
Installation
To get started with GoFr, add the following import to your code and use Go’s module support to automatically fetch dependencies:
import "gofr.dev/pkg/gofr"
Alternatively, use the command:
go get -u gofr.dev/pkg/gofr
🏃 Running GoFr
Here's a simple example to get a GoFr application up and running:
package main
import "gofr.dev/pkg/gofr"
func main() {
app := gofr.New()
app.GET("/greet", func(ctx *gofr.Context) (any, error) {
return "Hello World!", nil
})
app.Run() // listens and serves on localhost:8000
}
To run this code:
$ go run main.go
Visit localhost:8000/greet to see the result.
📂 More Examples
Explore a variety of ready-to-run examples in the GoFr examples directory.
👩💻 Documentation
- GoDoc: Official API documentation.
- GoFr Documentation: Comprehensive guides and resources.
👍 Contribute
Join Us in Making GoFr Better
Share your experience: If you’ve found GoFr helpful, consider writing a review or tutorial on platforms like Medium, Dev.to, or your personal blog. Your insights could help others get started faster!
Contribute to the project: Want to get involved? Check out our CONTRIBUTING.md guide to learn how you can contribute code, suggest improvements, or report issues.
🔒 Secure Cloning
To securely clone the GoFr repository, you can use HTTPS or SSH:
Cloning with HTTPS
git clone https://github.com/gofr-dev/gofr.git
Cloning with SSH
git clone [email protected]:gofr-dev/gofr.git
🎁 Get a GoFr T-Shirt & Stickers!
If your PR is merged, or if you contribute by writing articles or promoting GoFr, we invite you to fill out this form to claim your GoFr merchandise as a token of our appreciation!
Partners

Discover Repositories
Search across tracked repositories by name or description