⚠️ This won't be updated anymore
Hapi API Base
Base code I found myself always using when starting an API based on Hapi
Getting Started
Clone this repo
~$ git clone git@github.com:iniva/hapi-api-base.git
Running the project from your Host machine
To use your machine to run everything you will need:
-
Node LTS versions like Carbon or Dubnium(recommended). Using nvm is easy and recommended
-
Mac
- Run
brew install nvm
- Run
-
Ubuntu
- For the latest version check nvm releases
-
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash source ~/.profile
-
Both
Using lts/dubnium
- Run
nvm install lts/dubnium --latest-npmto install the current LTS version of Node. Also, attempt to install the latest npm version - Run
nvm use lts/dubniumto set Node to use this version - Run
yarn installto install the project dependencies - Run
yarn start:developmentto start the API see below for more options - By default the API will listen to http://0.0.0.0:8091
- Run
Running the project using Docker Compose
To use Docker Compose you will need:
-
On Mac: Get Docker for Mac
-
On Ubuntu: You will need to install Docker and then Docker compose
-
On the terminal, go to project's folder:
- Duplicate the file
.env.exampleand rename it to.env - Fill the available environment variables to your needs or leave them with their defaults
- To avoid permission conflicts between the host machine and the node container you need to change the UID values in the
.envfile.╰─$ id # uid=1000(username) gid=1000(username) - Run
docker-compose buildto build the containers - Run
docker-compose up -dto keep the process on background - Use
./run.sh server "{{command}}"to start the server. e.g:╰─$ ./run.sh server "yarn start:development"
- Duplicate the file
Available commands
yarn start:[environment]
Start API server in environment mode listening on port 8091
- Environments:
- development
- production
yarn clean
Remove build files
yarn build
Generate build files (dist folder)
yarn build:docs
Generate (or update) the openapi.yaml file.
yarn test
Run the test suites
yarn lint
Run lint tool
yarn bump:version
Generate a new version tag. Also runs the build:docs command to update the openapi.yaml file with the new API version.
yarn commit
Helps you make commit messages using the project standardized format
Databases
MongoDB (NoSQL)
Using hapi-nosql-mongoose plugin
ORM (SQL)
For ORM databases (MySQL, Postgres, etc) you can implement hapi-sequelize-orm plugin
Local Development with HTTPS
You can use HTTPS locally with the help of mkcert. Follow the instructions to install mkcert on your OS. Then you can create your own certs like this:
- (
optional) if you didn't already, runmkcert -install - Create certs for
localhostand0.0.0.0mkcert localhost 0.0.0.0If you create certs for domains other than
localhostyou would need to update the name of the certs inconfig/development.js
Documentation
I use this implementation to document the API based on the OpenAPI spec.