gofr README

The project's README from github.com/gofr-dev/gofr. As one markdown file: README.md.

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

🚀 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


👍 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

gofr (gofr-dev/gofr)

Searching Database…

20.8K ·GitHub
Что это такое?Это opinionated-фреймворк на Go для быстрой разработки микросервисов — поддержка баз данных и наблюдаемость (логи, трейсы, метрики) встроены с самого начала, так что вы пишете код сервиса, а не склеиваете инфраструктуру.
GoFr — это фреймворк, на котором строится весь мой сервис, или библиотека, которую я где-то подзываю?Фреймворк, причём намеренно opinionated: вы выстраиваете сервис вокруг API GoFr, а он берёт на себя роутинг, конфигурацию, middleware, источники данных и наблюдаемость.
Как запустить свой первый сервис?Установите Go 1.26 или новее, добавьте импорт GoFr в код — Go modules сам подтянет зависимость — затем запустите пример приложения и откройте localhost:8000/greet, чтобы увидеть результат.
Нужно ли ставить что-то ещё, кроме Go?Отдельных установок не нужно: базы данных и pub/sub-системы подключаются через встроенные в GoFr интеграции источников данных, и для каждого источника автоматически настраивается health check.
В чём подвох opinionated-фреймворка?Вы принимаете его соглашения и настройки по умолчанию вместо того, чтобы собирать собственный стек. И хотя на нём можно писать обычные приложения, GoFr заточен именно под микросервисы.
Для кого создан GoFr?Для Go-разработчиков, которые строят микросервисы — особенно разворачиваемые на Kubernetes, — и хотят, чтобы логирование, трейсинг и метрики работали с первой же строки кода.
Где можно запускать сервисы на нём?README не накладывает ограничений по ОС: это исходники на Go, поэтому компилируются они везде, где работает Go, — ноутбук для разработки, Linux-сервер или контейнер в продакшене.
Что он даёт из коробки, кроме URL-роутинга?Немало: REST-стандарты по умолчанию, управление конфигурацией, логи/трейсы/метрики, встроенная аутентификация плюс кастомный middleware, gRPC, HTTP circuit breaker, pub/sub, миграции баз данных, cron-задачи, отрисовку Swagger, websockets и абстракцию файловых систем — причём уровни логов можно менять без перезапуска.
Почему opinionated-фреймворк, а не сборка из Go-библиотек своими руками?Заявленная цель — упростить разработку микросервисов: вместо того чтобы вручную настраивать логирование, трейсинг, метрики, конфигурацию и клиенты баз данных, GoFr собирает всё это в комплекте с разумными настройками по умолчанию, так что сервис готов к Kubernetes и наблюдаем с первого дня.
Насколько проект зрелый и активный?Это состоявшийся open-source-проект (Apache-2.0), запущенный в октябре 2023 года, с примерно 20,9 тыс. звёзд на GitHub; он активно развивается и участвует в Hacktoberfest, привлекая контрибьюторов.
Где посмотреть рабочий пример кода и документацию?В репозитории есть каталог examples с готовыми к запуску примерами, а также GoDoc со справкой по API и отдельный сайт документации GoFr с подробными руководствами.
What are similar projects?gf, kratos, go-zero, serve, encore, traefik, echo, apisix
Creator
gofr-dev
Size
30.7 MB
Stars
20.8K
Age
2y
Commits · 90 Days