Starter application for building APIs with Express.js
Comes with:
- ES6 features/modules
- ES7 async/await
- Bookshelf ORM and Knex migrations
- PostgreSQL (default) with support for MySQL and SQLite
- API documentation using swagger-ui and swagger-jsdoc
- ESLint for code linting
- Request validation using Joi
- Code formatting using Prettier
- Logging using winston
- Application configuration using dotenv
- Tests using mocha, supertest and chai
Clone the repository, install the dependencies and get started right away.
$ git clone git@github.com:mesaugat/express-api-es6-starter.git <application-name>
$ cd <application-name>
$ rm -rf .git
$ yarn # or npm install
Make a copy of .env.example
as .env
and update your application details and database credentials. Now, run the migrations and seed the database.
$ yarn migrate
$ yarn seed
Finally, start the application.
$ yarn start:dev (For development)
$ yarn start (For production)
Navigate to http://localhost:8848/api-docs/ to verify installation.
Use docker-compose to quickly bring up a stack with pre-configured Postgres database container. Data is ephemeral and containers will disappear when stack is removed.
Specific configuration for Docker is in .env.docker
0.0.0.0
as$APP_HOST
to expose app on Docker network interface- Pre-configured Postgres settings - can be updated to point to another Postgres host
Bring up stack,
$ docker-compose up
Navigate to http://localhost:8848/api-docs/ to verify application is running from docker.
Bring down stack,
$ docker-compose down
Install the mysql driver first. Update these lines DB_CLIENT='pg'
and DB_PORT='5432'
in your .env file to DB_CLIENT='mysql'
and DB_PORT='3306'
respectively.
You can remove the pg driver if you like to.
$ yarn add mysql
$ yarn remove pg
That's it, you are ready to roll.
To run the tests you need to create a separate test database. Don't forget to update your .env
file to include the name of the test database and run the migrations.
$ NODE_ENV=test yarn migrate:latest
$ yarn test
For contribution and feature requests, please create an issue first.
express-api-es6-starter is under MIT License.