Skip to content

A simple minimalistic stateless microservice in Node.js, with three major functionalities - Authentication, JSON patching and Image Thumbnail Generation

Notifications You must be signed in to change notification settings

devdbrandy/minimalistic-microservice

Repository files navigation

Minimalistic Stateless Microservice

Coverage Status Docker Image CI Node.js CI

Overview

A simple minimalistic stateless microservice built with Node.js and Express.js, with showcasing three major functionalities:

  1. Authentication
  2. JSON patching
  3. Image Thumbnail Generation

1. 🚀 Getting Started

1.1 Prerequisites

To get started, ensure that you have NodeJS installed on your local machine:

1.2. Run locally

  • Clone repository or clone your own fork

    git clone https://github.com/devdbrandy/minimalistic-microservice.git
  • Make a duplicate of .env.example and rename to .env, then configure your credentials. NB: After creating .env file, ensure that you set APP_PKEY to any secret phrase you want.

  • Install dependencies by running npm i or npm install on your terminal.

  • Two npm scripts are availiable to spin up the app server:

    • npm run start spin up the server without watching for any file changes
    • npm run serve watches for any file changes and reloads the server

1.3. Test Locally

To test or consume api locally, you can make use of Postman or Insomnia

1.4. Running Test

Test specs are implemented using mocha + chai + sinon.

Two npm scripts are available to run the test suite:

  1. npm t or npm test - Performs a single full test suite run, including instanbul code coverage reporting. Summary coverage reports are written to stdout, and detailed HTML reports are available in /coverage/index.html
  2. npm run test:watch - This watches for any file changes and runs the full test suite.

2. 🔒 Authentication

Access to restricted API endpoints requires an access token. To obtain your access token, make a request along with any dummy username and password credentials to /login.

Sample Response:

POST http://localhost:3000/login
HTTP/1.1
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "token": "...",
}

3. 🔖 API Versioning

The second part of the URI specifies the API version you wish to access in the format v{version_number}. For example, version 1 of the API (most current) is accessible via:

  http://localhost:3000/api/v1

3. 💚 HTTP Response Codes

Each response will be returned with one of the following HTTP status codes:

  • 200 OK The request was successful
  • 400 Bad Request There was a problem with the request (security, malformed)
  • 401 Unauthorized The supplied API credentials are invalid
  • 403 Forbidden The credentials provided do not have permissions to access the requested resource
  • 404 Not Found An attempt was made to access a resource that does not exist in the API
  • 500 Server Error An error on the server occurred

4. 🔖 Resources

4.1. Authentication

URI HTTP Method Description
/login POST Account login

4.2. API Routes

URI HTTP Method Description
/api/v1/thumbnail POST Generate image thumbnail
/api/v1/jsonpatch POST Generate json patch

5. 📝 License

This project is open-sourced software licensed under the MIT license.

About

A simple minimalistic stateless microservice in Node.js, with three major functionalities - Authentication, JSON patching and Image Thumbnail Generation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published