juns-dev-api v0.0.3
Starter application for building APIs with Express.js
DEMO
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 raven
- Tests using mocha, supertest and chai
Prerequisites
Setup
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 installMake 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 seedFinally, 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.
Creating new Migrations and Seeds
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_tagsSetup Using Docker
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.0as$APP_HOSTto expose app on Docker network interface- Pre-configured Postgres settings - can be updated to point to another Postgres host
Bring up stack,
$ docker-compose upNavigate to http://localhost:8848/api-docs/ to verify application is running from docker.
Bring down stack,
$ docker-compose downUsing MySQL instead of PostgreSQL
Install the mysql driver first.
$ yarn add mysqlUpdate 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 pgThat's it, you are ready to roll.
Tests
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 testRun tests with coverage.
$ yarn test:coverageWhy 8848?
Because the highest point in the world is 8848 metres.
Contributing
For contribution and feature requests, please create an issue first.
License
express-api-es6-starter is under MIT License.