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-dist and swagger-jsdoc
- ESLint for code linting
- Request validation using Joi
- Code formatting using Prettier
- Configuration management using dotenv
- Logging using winston
- Error reporting using Sentry
- Tests using mocha, supertest and chai
Clone the repository, install the dependencies and get started right away.
$ git clone --depth=1 git@github.com:su-sh/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)
$ NODE_ENV=production yarn start (For production)
Navigate to http://localhost:8848/api-docs/ to verify installation.
These are the commands to create a new migration and corresponding seed file.
$ yarn make:migration <name>
$ yarn make:seeder <name>
Example,
$ yarn make:migration create_tags_table
$ yarn make:seeder 02_insert_tags
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.
$ yarn add mysql
Update these lines in your .env
file.
- DB_CLIENT='pg'
+ DB_CLIENT='mysql'
- DB_PORT='5432'
+ DB_PORT='3306'
You can remove the pg driver if you like to.
$ 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 connections for test database.
$ NODE_ENV=test yarn migrate
$ yarn test
Run tests with coverage.
$ yarn test:coverage
Because the highest point in the world is 8848 metres.
For contribution and feature requests, please create an issue first.
express-api-es6-starter is under MIT License.