TypeScript + Hapi = <3
This is a super simple starter kit to develop APIs with HapiJS + TypeScript
What currently supports?
This starter kit comes with the following features:
- Swagger-UI
- Status Monitor
- .env files support
- nodemon for hot-reload
- Pretty Console Logger with Winston
- Work with Yarn or NPM 6 as dependency resolvers
- Code formatting with Prettier as hook for Pre-commit
- Dockerfile + docker-compose for development
- Basic Test Suite with Tape
- Coverage Report
- Supports Heroku Deployment
- Supports Prettier for code formating
- Supports commitlint via husky to have standarized commit messages
Requirements
- NodeJS > 12.x
- NPM > 6.x
How to use it?
- Download this project as a zip.
- Run
npm install
- Run
npm run nodemon:start
- Visit http://localhost:8080/documentation to view swagger docs.
- Visit http://localhost:8080/api/users to test the REST API.
- Visit http://localhost:8080/status to view the status monitor.
UPDATED: Now there's a CLI that currently support creating a new project from this repo: create-typescript-api
TODO
This is not finished, there's still a lot of things to improve. Here you got some:
- Simple test suite - added by the help of @jcloutz
- Add support for test coverage - added by the help of @jcloutz
- Add GraphQL support
- Add support for Auth with JWT or Sessions
- Add support for TypeORM/Mongoose
- Add support for Jenkins pipeline
Documentation
What are the package.json scripts for?
build-ts
: Compiles typescript based on config set in tsconfig.json.start
: Starts node with the compiled typescript. Used by eg. Heroku.docker:logs
: View Docker logsdocker:ps
: List Docker containersdocker:start
: Start Docker container based on docker-compose.yml file.docker:stop
: Stop Docker containernodemon:build
: Starts the Nodemon using ts-node. No need to compile beforehand.nodemon:start
: Same as nodemon:buildformat:lint
: Runs tslint on the typescipt files, based on tslint.js settings.format:prettier
: Runs prettier on all ts-files.postinstall
: Runs build-ts script. This is used by eg. Heroku automatically.test
: Runs tests using nyc, and creates coverage report.
Issues
If you found a bug, or you have an answer, or whatever. Please, raise an issue.
Contributing
Of course, if you see something that you want to upgrade from this library, or a bug that needs to be solved, PRs are welcome!
License
Distributed under the MIT license. See LICENSE for more information.