Golang Restful API Framework for Productivity
Clone or download
ddysher and caicloud-bot chore: minor CONTRIBUTING update (#258)
* chore: minor CONTRIBUTING update

* update per comment
Latest commit 96fe1a8 Jan 2, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github chore(docs): update PULL_REQUEST_TEMPLATE.md May 23, 2018
cmd/nirvana init: Support the script in sh (#255) Dec 27, 2018
config feat(plugins): add version and health check plugins (#216) Jun 22, 2018
definition feat(method): support method in definition (#211) Jun 20, 2018
docs feat(readme): remove expired docs from README.md (#238) Sep 25, 2018
errors feat(command): add nirvana command to generate go client (#212) Jun 20, 2018
examples feat: add tools for unit test (#250) Nov 19, 2018
hack chore(build): update build/test tools (#206) Apr 29, 2018
log fix(log): skip err check in std logger (#228) Jul 6, 2018
manuals feat(project): add go.mod template and '--package-manager' flag to su… Oct 2, 2018
operators feat(validator): refine custom validator and add example (#158) Feb 7, 2018
plugins feat(profiling): add latest features of profiling from golang (#248) Nov 12, 2018
rest fix(golang): support to generate io.Reader and io.ReadCloser (#224) Jul 4, 2018
service fix(service): fix the parser of accept types (#247) Nov 1, 2018
utils feat: add tools for unit test (#250) Nov 19, 2018
vendor feat(command): add nirvana basic command (#209) Jun 13, 2018
.gitignore feat(example): swapi data (#49) Dec 17, 2017
.pre-commit-config.yaml adding pre-commit config (#147) Feb 7, 2018
.travis.yml chore(build): update build/test tools (#206) Apr 29, 2018
CONTRIBUTING.md chore: minor CONTRIBUTING update (#258) Jan 2, 2019
Gopkg.lock feat(command): add nirvana basic command (#209) Jun 13, 2018
Gopkg.toml feat(command): add nirvana basic command (#209) Jun 13, 2018
LICENSE fix(license): correct License content (#42) Nov 27, 2017
Makefile chore(docs): move documents to manuals and generate gitbook to docs (#… May 2, 2018
OWNERS chore(owners): set up owners for directories (#104) Jan 15, 2018
README.md chore: minor README update (#257) Jan 2, 2019
ROADMAP.md feat(*): add ROADMAP.md and CONTRIBUTING.md (#204) Apr 24, 2018
banner.go feat(command): add nirvana basic command (#209) Jun 13, 2018
config.json feat(manuals): add manuals for developers (#231) Aug 8, 2018
nirvana.go feat: support tls (#208) May 3, 2018



Build Status Coverage Status GoDoc Go Report Card OpenTracing Badge

Nirvana is a golang API framework designed for productivity and usability. It aims to be the building block for all golang services at Caicloud. The high-level goals and features include:

  • consistent API behavior, structure and layout across all golang projects
  • improve engineering productivity with openAPI and client generation, etc
  • validation can be added by declaring validation method as part of API definition
  • out-of-box instrumentation support, e.g. metrics, profiling, tracing, etc
  • easy and standard configuration management, as well as standard cli interface

Nirvana is also extensible and performant, with the goal to support fast developmenet velocity.

Getting Started

Nirvana provides documentations in two languages to help you expore this framework. Note right now, only Chinese docs are kept up-to-date.


  • API Framework based on Descriptors
  • Request Filter
  • Middleware
  • Validator
  • Plugins
  • API Doc Generation
  • Client Generation


If you are interested in contributing to Nirvana, please checkout CONTRIBUTING.md. We welcome any code or non-code contribution!


Nirvana is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.