gofr

An opinionated GoLang framework for accelerated microservice development. Built in support for databases and observability.

21,028 stars Go Markdown Skills API Spec #framework#go#go-framework#golang
AI Prompts & Specs

Repository: gofr-dev/gofr


Stars: 21660

README.md

<div align="center">
<h1 style="font-size: 100px; font-weight: 500;">
<i>Go</i>Fr
</h1>
<div align="center">
<p>
<img width="300" alt="logo" src="https://github.com/gofr-dev/gofr/assets/44036979/916fe7b1-42fb-4af1-9e0b-4a7a064c243c">
<h2 style="font-size: 28px;"><b>GoFr: An Opinionated Microservice Development Framework</b></h2>
</p>
<a href="https://pkg.go.dev/gofr.dev"><img src="https://img.shields.io/badge/GoDoc-Read%20Documentation-blue?style=for-the-badge" alt="godoc"></a>
<a href="https://gofr.dev/docs"><img src="https://img.shields.io/badge/GoFr-Docs-orange?style=for-the-badge" alt="gofr-docs"></a>
<a href="https://qlty.sh/gh/gofr-dev/projects/gofr"><img src="https://qlty.sh/gh/gofr-dev/projects/gofr/maintainability.svg" alt="Maintainability" height="27.99" /></a>
<a href="https://qlty.sh/gh/gofr-dev/projects/gofr"><img src="https://qlty.sh/gh/gofr-dev/projects/gofr/coverage.svg" alt="Code Coverage" height="27.99" /></a>
<a href="https://goreportcard.com/report/gofr.dev"><img src="https://goreportcard.com/badge/gofr.dev?style=for-the-badge" alt="Go Report Card"></a>
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache_2.0-blue?style=for-the-badge" alt="Apache 2.0 License"></a>
<a href="https://discord.gg/wsaSkQTdgq"><img src="https://img.shields.io/badge/discord-join-us?style=for-the-badge&logo=discord&color=7289DA" alt="discord" /></a>
<a href="https://gurubase.io/g/gofr"><img src="https://img.shields.io/badge/Gurubase-Ask%20GoFr%20Guru-006BFF?style=for-the-badge" /></a>
</div>
<h2>Listed in the <a href="https://landscape.cncf.io/?selected=go-fr">CNCF Landscape</a></h2>
</div>

🎯 Goal


GoFr is designed to simplify microservice development, with a key focus on Kubernetes deployment and out-of-the-box observability. While capable of building generic applications, microservices remain at its core.

---

💡 Key Features

1. Simple API Syntax
2. REST Standards by Default
3. Configuration Management
4. Observability (Logs, Traces, Metrics)
5. Inbuilt Auth Middleware & Custom Middleware Support
6. gRPC Support
7. HTTP Service with Circuit Breaker Support
8. Pub/Sub
9. Health Check for All Datasources
10. Database Migration
11. Cron Jobs
12. Support for Changing Log Level Without Restarting
13. Swagger Rendering
14. Abstracted File Systems
15. Websockets

---

🚀 Getting Started

Prerequisites


- GoFr requires Go version 1.24 or above.

Installation


To get started with GoFr, add the following import to your code and use Go’s module support to automatically fetch dependencies:

go
import "gofr.dev/pkg/gofr"

Alternatively, use the command:

bash
go get -u gofr.dev/pkg/gofr

---

🏃 Running GoFr

Here's a simple example to get a GoFr application up and running:

go
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:

bash
$ 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


bash
git clone https://github.com/gofr-dev/gofr.git

Cloning with SSH


bash
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

<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.png" alt="JetBrains logo" width="200">