> For the complete documentation index, see [llms.txt](https://floordiv.gitbook.io/indigo/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://floordiv.gitbook.io/indigo/welcome.md).

# Welcome

Indigo is a light-weight and extendable web-framework focused on API, built on top of custom HTTP core. It ships with a great performance and powerful built-in router, which includes the following features:

* Groups
* Middlewares
* Mutators (pre-middlewares)
* Static files distribution
* Extended errors handling
* Flexible dynamic routing
* Codecs for compression and decompression
* ...and many other features

Custom HTTP core is written with the peak performance in mind, but not forgetting about usability. It is finely optimized, staying though relatively readable and well-maintainable. Another highlight is no hard-coded constants: numerous various parameters, which mostly refer to memory limitations and preallocations, are tunable via `config.Config`. Other key features are:

* Stream-based body handling approach
* Multilistener capabilities — an ability to bind the server on multiple interfaces and/or ports
* Native HTTPS
  * Automatic certificate setup is also supported: from generating self-signed certificates for localhost and up to built-in [autocert](https://pkg.go.dev/golang.org/x/crypto/acme/autocert) capabilities
* Cookies
* Forced and graceful stop
* Connection hijacking
* Both HTTP/1.0 and HTTP/1.1 support, HTTP/2 once in a blue moon
* Attention to HTTP specification details. E.g. including `Allow` header on 405 Method Not Allowed errors and automatic rendering for TRACE-requests
* Implicit redirects
  * Path aliases are implicitly substituting a request's path, thereby effectively letting the user to speak to a different resource without ever knowing about it
* ...and plenty of others
