martabacc / organizations

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Technical assesment

Build Status Coverage Status

Server dedicated for technical assesment

Quick Start

git clone git@github.com:martabacc/organizations.git

cd organizations

yarn install

Table of Contents

Features

  • NoSQL database: MongoDB object data modeling using Mongoose
  • Validation: request data validation using Joi
  • Logging: using winston and morgan
  • Testing: unit and integration tests using Jest
  • API documentation: with swagger-jsdoc and swagger-ui-express
  • Process management: advanced production process management using PM2
  • Dependency management: with Yarn
  • Environment variables: using dotenv and cross-env
  • Santizing: sanitize request data against xss and query injection

Commands

Running locally:

yarn dev

Running in production:

yarn start

Testing:

# run all tests
yarn test

# run all tests in watch mode
yarn test:watch

# run test coverage
yarn coverage

Docker:

# run docker container in development mode
yarn docker:dev

# run docker container in production mode
yarn docker:prod

# run all tests in a docker container
yarn docker:test

Linting:

# run ESLint
yarn lint

# fix ESLint errors
yarn lint:fix

# run prettier
yarn prettier

# fix prettier errors
yarn prettier:fix

Environment Variables

The environment variables can be found and modified in the .env file. They come with these default values:

# Port number
PORT=3000

# URL of the Mongo DB
MONGODB_URL=mongodb://127.0.0.1:27017/node-boilerplate

# GITHUB_API_KEY
GITHUB_API_KEY=thisisasamplesecret

Project Structure

src\
 |--config\         # Environment variables and configuration related things
 |--controllers\    # Route controllers (controller layer)
 |--docs\           # Swagger files
 |--middlewares\    # Custom express middlewares
 |--models\         # Mongoose models (data layer)
 |--routes\         # Routes
 |--services\       # Business logic (service layer)
 |--utils\          # Utility classes and functions
 |--app.js          # Express app
 |--index.js        # App entry point

API Documentation

To view the list of available APIs and their specifications, run the server and go to http://localhost:3000/v1/docs in your browser. This documentation page is automatically generated using the swagger definitions written as comments in the route files.

API Endpoints

List of available routes:

Comments of given specified organizationName:
POST /orgs/{organizationName}/comments - create comment
GET /orgs/{organizationName}/comments - get all comments
DELETE /orgs/{organizationName}/comments - Delete all comments

Members of given specified organizationName:
GET /orgs/{organizationName}/members - get all members and attributes \

License

MIT

About

License:MIT License


Languages

Language:JavaScript 98.8%Language:Dockerfile 0.7%Language:Shell 0.4%Language:Makefile 0.2%