# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://floordiv.gitbook.io/indigo/welcome.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
