Hapi Chairo Api Boilerplate
This project has been inspired by this boilerplate.
Table of Contents
Usage
Run npm install
as usual
npm run dev
will run the server with config.dev.js
settings
npm run staging
will run the server with config.staging.js
settings
npm run prod
will run the server with config.prod.js
settings
Plugins loading and registration
You can easily customize your Hapi server by adding the plugins you need in /server.js
manifest file or in /lib/index.js
.
Jobs, Routes, Auth, Models and Services loading
Everything has been setup in order to avoid the need to write code to add new components to the server. Anyway, since this is a boilerplate and the loading process cannot be completely abstracted, you'll probably need to tweak various things around if you plan to use different packages for models, jobs, services, etc...
Auth Strategies
You can add your authentication strategies in /lib/config/auth.js
and they will be registered automatically.
The default authentication strategy is set in /lib/index.js
.
Routes
Adding a new route is a two step operation:
- Create a route as
/lib/routes/routename.js
- Add
routename
into/lib/config/routes.js
Prefix
Every registered route is prefixed by a prefix and a version (/api/v1
is the default).
API_PREFIX
and API_VERSION
are defined in /lib/config/routes.js
.
Models
To add a new model, just create a new filename into /lib/models/
and it will be loaded automatically.
Jobs
Adding a new job is a two step operation:
- Create a job into
/lib/jobs/jobname.js
- Add
jobname
into/lib/config/jobs.js
Services
Adding a new service is a two step operation:
- Create a service into
/lib/jobs/servicename.js
- Add
servicename
into/lib/config/services.js
Project Structure
hapi-chairo-api-boilerplate├── lib│ ├── boot # loader utils │ ├── config # configs │ ├── jobs # jobs │ ├── models # models │ ├── services # services │ ├── routes # routes │ └── index.js # plugins loading and registrations │├── test│ ├── example-test.js │├── logs │├── server.js # server composition ├── config.js # setup ENV config ├── config.dev.js├── config.staging.js├── config.prod.js├── package.json└── README.md
Packages Docs
Hapi
- Hapi | Server Framework
- Glue | Server Composer
- Poop | Logs uncaught exceptions
- Boom | HTTP errors
- Joi | Object Schema validation
Models
- Hapi Mongo Models | Mongo Models for Hapi
Services
Jobs
- Agenda | Job scheduler
Tests
Utils
TODO
- Better logs handling
- API Docs support