Coder Social home page Coder Social logo

jatskie / nodejs-api-boilerplate Goto Github PK

View Code? Open in Web Editor NEW

This project forked from equimper/nodejs-api-boilerplate

0.0 2.0 0.0 509 KB

A boilerplate for kickstart your nodejs api project with JWT Auth and some new Techs :)

License: MIT License

Dockerfile 0.83% JavaScript 97.93% Shell 1.24%

nodejs-api-boilerplate's Introduction

forthebadge forthebadge forthebadge


Code Climate Coverage Status Build Status CircleCI Greenkeeper badge styled with prettier MIT License PRs Welcome Dependency Status dependencies Status devDependencies Status nps code style equimper All Contributors

NodeJS-API-Boilerplate

forthebadge forthebadge forthebadge forthebadge forthebadge forthebadge

Always in progress ๐Ÿ‘ทโ€

Get Started

Build

This Boilerplate use webpack 3 to compile code.

Installation

  1. Clone the project git clone https://github.com/EQuimper/nodejs-api-boilerplate.git.
  2. Install dependencies yarn install or npm i
  3. Create a .env file in the root like the .env.example file.
  4. For dev you need to have mongodb db locally. How to?

Install Mongodb

With Homebrew you can just run brew install mongodb and after brew services start mongodb.


Raven Log

For get raven log create account here: Sentry


Body Whitelist

For security have add a whitelist function for your req.body coming from the front end. You can take a look of it in the contants.js file.

const WHITELIST = {
  posts: {
    create: ['title', 'text'],
    update: ['title', 'text'],
  },
  users: {
    create: ['email', 'username', 'password'],
  },
};

Api Doc

Api doc his hosted on surge. Link. For change the url and have your own docs just add you link in the .env file.


Pre-Commit Hook

I've add pre-commit and lint-staged for lint your code before commit. That can maybe take time :bowtie:


Scripts

DEV

yarn dev

or

npm run dev

PS That can crash if this is the first time but don't worry give it 2 sec the scripts gonna work. He just need to created a dist folder :) This way you have only one command to run.

DEV-DEBUG

yarn dev:debug

or

npm run dev:debug

Why toJSON on methods model ?

toJSON() help us to get only the data we want when we push the info to the client. So now we just need to put the user object in the res.json(user) and we received only what we want. Why toAuthJSON() ? Cause if we populated the post we get the toJSON() so the toAuthJSON() is the on to call on signup and login for get the token and _id.

toAuthJSON() {
  return {
    _id: this._id,
    token: `JWT ${this.createToken()}`,
  };
},

toJSON() {
  return {
    _id: this._id,
    username: this.username,
  };
},

For Validation on Request

I'm using Joi in this boilerplate, that make the validation really easy.

export const validation = {
  create: {
    body: {
      email: Joi.string().email().required(),
      password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required(),
      username: Joi.string().min(3).max(20).required(),
    },
  },
};

routes.post(
  '/signup',
  validate(UserController.validation.create),
  UserController.create,
);

Seeds

For seed just run one of this following comand. This is helpful in dev for making fake user.

This is only available in dev environment

You can change the number of seed by changing the number in each script inside /scripts/seeds

  • Seeds 10 user yarn db:seeds-user
  • Clear user collection yarn db:seeds-clear-user
  • Clear all collection yarn db:seeds-clear

Monitoring Server on http://localhost:3000/status


Docker

bash scripts/development.sh

Techs


Todo

  • Test seeds controller - Done by cpenarrieta
  • Sendgrid or Other Mail supply
  • Add S3 for user image
  • Change Mocha for Jest

PR are welcome!!! ๐Ÿ˜ƒ

Contributors

Thanks goes to these wonderful people (emoji key):


Emanuel Quimper

๐Ÿ’ฌ ๐Ÿ“ ๐Ÿ› ๐Ÿ’ป ๐Ÿ“– ๐Ÿ’ก ๐Ÿš‡ ๐Ÿ”Œ ๐Ÿ‘€ โš ๏ธ ๐Ÿ”ง โœ…

Cristian Penarrieta

โš ๏ธ

This project follows the all-contributors specification. Contributions of any kind welcome!

nodejs-api-boilerplate's People

Contributors

cpenarrieta avatar equimper avatar greenkeeper[bot] avatar snyk-support avatar

Watchers

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