Starter application for building APIs with Express.js
Comes with:
- ES6 features/modules
- ES7 async/await
- Objection ORM and Knex migrations
- PostgreSQL (default) with support for MySQL and SQLite
- ESLint for code linting
- Request validation using Joi
- Code formatting using Prettier
- Configuration management using dotenv
- Logging using winston
- Tests using Jest and Supertest
Clone the repository, install the dependencies and get started right away.
$ git clone https://github.com/Luisdv93/express-api-starter.git
$ cd <express-api-starter>
$ rm -rf .git
$ yarn install 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 (For development)
$ yarn prod (For production)
Navigate to http://localhost:8000 to verify the 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 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
For contribution and feature requests, please create an issue first.
express-api-starter is under MIT License.