GStars
    gofr-dev

    gofr-dev/gofr

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

    api
    observability
    monitoring
    backend
    web
    framework
    go
    go-framework
    golang
    golang-framework
    grpc
    grpc-go
    grpc-golang
    hacktoberfest
    http-server
    logging
    metrics
    microservice
    microservice-framework
    opentelemetry
    performance
    rest-api
    server
    tracing
    web-framework
    Go
    Apache-2.0
    16.0K stars
    1.7K forks
    16.0K watching
    Updated 2/27/2026
    View on GitHub
    Backblaze Advertisement

    Loading star history...

    Health Score

    75

    Weekly Growth

    +0

    +0.0% this week

    Contributors

    1

    Total contributors

    Open Issues

    89

    Generated Insights

    About gofr

    GoFr

    logo

    GoFr: An Opinionated Microservice Development Framework

    godoc gofr-docs Maintainability Code Coverage Go Report Card Apache 2.0 License discord

    Listed in the CNCF Landscape

    ๐ŸŽฏ 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

    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:

    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


    ๐Ÿ‘ 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

    JetBrains logo

    Discover Repositories

    Search across tracked repositories by name or description