coko is a minimal framework built ontop of Koa.
coko provides a conventional approach for building apps using async/await pattern of Koa2. It gives a basic boiler plate for Koa ontop of which you can write your application logic.
coko is inpsired from Sailsjs and keeping the setup minimal and extensible.
Note: Check coko-bean for the example.
coko's feature includes:-
- Convention over configuration.
- Routing using koa-router.
- Body parsing.
- Logging using koa-logger and koa-morgan.
- Response handling, by providing response handlers like sails responses(eg.
res.ok()
, etc...). - Conditional get support using conditional-get.
Since coko is a convention over configuration framework, it uses a minimal directory structure. coko-bean is there to help you getting started with the structure that is best suited with coko.
- Clone the seed project coko-bean.
git clone https://github.com/bhaskarmelkani/coko-bean.git
- Go into the directory
cd coko-bean && npm install
- Start the server
npm start
This command will run a http sever on port 4000
, you can configure the port(TODO).
The seed has a test route /user
Open http://127.0.0.1:4000/user
.
Whoaaa, this was quick !!!
coko is still developing and is ambitious to get features that should be provided by a minimal framework.
- Add testing support.(Maybe using Jest)
- If needed, add support for Expect: 100-continue.
- Create a config module and provide it in controllers, services and maybe middlewares.
- For now ejs(using koa-views) is a default templating engine, add support for configuring it.
- Add support for static file serving.
- Add configurable security headers for response.
- Add better error handling.
- Add support for customizing/adding responses(eg.
res.ok()
, etc...). - Add tracing using koa-trace.
- Add configurable jsonp support. Check koa-safe-jsonp
- If required add authentication strategies.
- Add support for database handling.
- Add cli for generating seed.
- Asset(cs/js/image) handling.
Check detailed contributing guidelines.
The MIT License (MIT). See full license.