hapi-api-boilerplate
hapi-api-boilerplate copied to clipboard
Hapi API Server Boilerplate
Hapi Chairo Api Boilerplate
DEPRECATION NOTICE
This project is no longer mantained.
Use generator-hapi-api-stack instead.
Table of Contents
- Hapi Chairo Api Boilerplate
- Table of Contents
- Usage
- Plugins loading and registration
- Jobs, Routes, Auth, Models and Services loading
- Auth Strategies
- Routes
- Prefix
- Models
- Jobs
- Services
- Project Structure
- Packages Docs
- Hapi
- Models
- Services
- Jobs
- Tests
- Utils
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
routenameinto/lib/config/routes.js
Prefix
Every registered route is prefixed by a prefix and a version (/api/v1 is the default).
API_PREFIXand 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
jobnameinto/lib/config/jobs.js
Services
Adding a new service is a two step operation:
- Create a service into
/lib/jobs/servicename.js - Add
servicenameinto/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