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:
- 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
- NodeJS > 12.x
- NPM > 6.x
How to use it?
- Download this project as a zip.
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
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
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 logs
docker:ps: List Docker containers
docker:start: Start Docker container based on docker-compose.yml file.
docker:stop: Stop Docker container
nodemon:build: Starts the Nodemon using ts-node. No need to compile beforehand.
nodemon:start: Same as nodemon:build
format: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.
If you found a bug, or you have an answer, or whatever. Please, raise an issue.
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!
Distributed under the MIT license. See LICENSE for more information.