🀑Welcome

The cover emoji could be a bit friendlier, I guess

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)

  • Path catchers

  • Static files distribution

  • Extended errors handling

    • You can handle basically caused by HTTP core or router

  • Dynamic routing

  • Automatic path normalization without redirecting

  • ...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 capabilities

  • Cookies

  • Forced and graceful stop

  • Connection hijacking

  • Both HTTP/1.0 and HTTP/1.1 support, HTTP/2 soon

  • Attention to HTTP specification details. E.g. including Allow header on 405 Method Not Allowed errors and automatic rendering for TRACE-requests

  • Implicit redirects

    • Changes request path implicitly inside the server, without letting the browser know about it

  • ...and plenty of others

Last updated