GitHub Hot Board

GitHub Hot Board · Arquivo do repositório

gofr-dev/gofr

An opinionated GoLang framework for accelerated microservice development. Built in support for databases and observability. (Esta descrição vem do próprio repositório.)

Dados de October 24gofr-dev

Melhor colocação

#178

Histórico · Go por idioma

21K

Total de estrelas

1.8K

Total de forks

0

Dias nos rankings (30 d)

Coloque o emblema no seu README · gofr-dev/gofr[![Coloque o emblema no seu README](https://git.vaiox.xyz/api/badge/gofr-dev/gofr.svg)](https://git.vaiox.xyz/pt/repo/gofr-dev/gofr)

Documentação do projeto

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 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
  16. LLM Integration (app.AddLLM, ctx.LLM()) with Built-in Tracing, Token Metrics and Streaming
  17. MCP Server (app.EnableMCP) to Expose Read-Only Handlers as Tools for AI Agents

🚀 Getting Started

Prerequisites

  • GoFr requires Go version 1.26 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.


🤖 AI Features

GoFr treats LLMs and AI agents like any other datasource: one line to set them up, with tracing, metrics, logs and health checks wired in automatically.

Call an LLM from a handler

app.AddLLM registers an OpenAI-compatible model (OpenAI, Groq, DeepSeek, Together, Ollama, or any endpoint via BaseURL). Handlers reach it through ctx.LLM(), which also offers Chat, Stream and Embed.

package main

import (
	"gofr.dev/pkg/gofr"
	"gofr.dev/pkg/gofr/ai/llm"
)

func main() {
	app := gofr.New()

	// The API key is read from LLM_API_KEY, or GROQ_API_KEY for this provider.
	app.AddLLM(&llm.Client{Provider: llm.Groq, Model: "llama-3.3-70b-versatile"})

	app.POST("/summarize", func(ctx *gofr.Context) (any, error) {
		var in struct {
			Text string `json:"text"`
		}

		if err := ctx.Bind(&in); err != nil {
			return nil, err
		}

		return ctx.LLM().Generate(ctx, "Summarize the following:\n"+in.Text)
	})

	app.Run()
}

A model can also be configured without code, through LLM_PROVIDER, LLM_MODEL and LLM_API_KEY in configs/.env. See the LLM guide.

Expose handlers to AI agents

app.EnableMCP serves your read-only handlers (GET, HEAD, OPTIONS and QUERY) as Model Context Protocol tools, so MCP clients such as Claude Code or Claude Desktop can discover and call them. Write handlers are never exposed. The MCP server listens on loopback at MCP_PORT (default 8200; 0 turns the transport off).

app := gofr.New()

app.EnableMCP()

app.GET("/products/{id}", getProduct)

app.Run()

ctx.LLM().Tools() gives a handler the same tools in-process, so you can build your own agent loop. See Building AI Agents and the using-ai example.


📂 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.
  • AI coding assistants: point your assistant at AGENTS.md for GoFr's conventions, and at llms.txt for an index of the docs.

👍 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 git@github.com: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

Colocações atuais

  • 178

    Campeões de todos os tempos · Go

    21K estrelas · 1.8K fork · Star acumuladas

    Histórico · Go →

Evolução em 30 dias

Sem registros nos últimos 30 dias.

← Voltar aos rankings