Code Monkey home page Code Monkey logo

express-api-es6-starter's Introduction

Express API ES6 Starter

Starter application for building APIs with Express.js

Build Status Codecov

Check out the working demo ๐Ÿ‘‰ here.

Comes with:


Prerequisites

Setup

Clone the repository, install the dependencies and get started right away.

$ git clone --depth=1 [email protected]: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)
$ 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_tags

Using Docker

Using docker-compose

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

Multi-stage docker builds

There are multiple build targets available for different stages. These images can be used to deploy or run jobs in different container based cloud infrastructure like Kubernetes, AWS ECS, Fargate, GCP Cloud Run etc.

  1. Building a production image.

    $ docker build --target=prod -t express-api-es6-starter:prod .
  2. Building an image for development.

    $ docker build --target=dev -t express-api-es6-starter:dev .
  3. Building an image that runs migration and/or rollback.

     # Docker image that runs migration and seeds.
     $ docker build --target=migrate -t express-api-es6-starter:migrate .
    
     # Docker image that rollbacks migrations.
     $ docker build --target=migrate-rollback -t express-api-es6-starter:migrate-rollback .

Once the images have been built - all you need to do is run them providing a .env file. Like this:

$ docker run -v "/path/to/your/.env:/app/.env" mesaugat/express-api-es6-starter:migrate

Using MySQL instead of PostgreSQL

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.

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 test

Run tests with coverage.

$ yarn test:coverage

Why 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.

express-api-es6-starter's People

Contributors

mesaugat avatar kabirbaidhya avatar dependabot[bot] avatar squgeim avatar ecliptik avatar pratishshr avatar pravashupreti avatar cham11ng avatar subash-poudel avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.