Have you recently started a new Node.js API project? Did you use some template or started the project from scratch?
I was asking the same questions myself and I was looking for minimal boilerplate for a while. There were so many options that it was hard to pick one.
Most of them are using Express.js, others are using ES5 or lack test setup.
So I decided to spin one on my own and reuse it in the future. Here is the repo at GitHub.
My setup has the following characteristics:
- Node version 10 or later
- TypeScript for obvious reasons
- Fastify for its asynchronous nature and being faster than Express or Restify
- Nodemon in development for watching for changes and restart the server
- MongoDB with Mongoose
- Docker for MongoDB service instead of installing it
- Jest for being the de-facto in Node testing
- In memory Mongod server for easily mock the DB
- Coverall for coverage collector after Jest report is generated
Code formatting and static analysis
- ESLint config
- Prettier config attached to the linter
- Editor config
- Swagger UI for API documentation
- Postman collections attached from testing the endpoints
- Continuous integration in Travis CI.
- Install dependencies
- Run tests
- Collect coverage and pass it to Coverall
And thats it! I hope it’s minimal enough.
Please share some ideas for improvement if you have any. I thought of API versioning but Fastify seems to support that out of the box.
API key authentication was also something I was considering, but I wasn’t sure how exactly to implement it. If you have something in mind would love to discuss it in the comments.