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

# KCD ? What is that

![](/files/-MZ2gVSiHM3Fhi0XtMRB)

###

![May change your code a bit ...](/files/-MYucJqmPAynT2r1asiB)

### So what's KCD ?

KCD is not a framework, it's not a router. KCD is a helper that simplifies your life for building maintainable and comprehensive REST applications.&#x20;

Its goal is to provide a way to write a beautiful handler without a boilerplate and translate it into a plain old HTTP handler.

This library is **opinionated** by default but **customizable** which means it uses some other libraries like Chi, Logrus... KCD is modular so each piece of the code that relies on a specific library can be changed.

### Is it painful to write your API in go?

What's the problem when you are building an API in Golang? You know the classic:

* Input marshaling from JSON
* Input from query parameters
* Input from path parameters
* Input validation
* Error handling
* Error logging
* Format response&#x20;

All this kind of stuff is boring and when you come from an established language like Java, PHP, Ruby each of these languages has its own framework with a battle-tested solution to handle all of the cases above.
