GithubHelp home page GithubHelp logo

equimper / youtube-makeanodejsapi Goto Github PK

View Code? Open in Web Editor NEW
52.0 4.0 20.0 76 KB

Youtube tutorial for making a NodeJS REST API with MongoDB

Home Page: https://www.youtube.com/playlist?list=PLzQWIQOqeUSMzMUEJA0XrOxJbX8WTiCJV

JavaScript 100.00%
mongodb webpack passport jwt joy tutorial nodejs youtube rest-api api

youtube-makeanodejsapi's Introduction

Make a NodeJS rest api

Why do this tutorial

I was searching a long time ago about how to make my own boilerplate for nodejs. I hate when I take something from someone else and don't know what happen.

I create this tutorial for helping people to make their own rest api and maybe use it as your boilerplate

Features

This rest api gonna be for a Medium like website. This is a simple blog place where people can follow author and create a post. People can like the post and get notification when a user they follow create a new one.

  • Authentication local + jwt
  • User can create a post
  • User can delete is own post and update it
  • User can follow an other one
  • User get notification on following new post
  • User can like a post
  • User can see all the post they like

Tech use

I use the latest feature of javascript. ES6 + ES7, we compile with the help of babel and webpack v2.


Part 1, Setup the tools

Video

Link

To add

  • editorconfig
  • express
  • eslint
  • babel
  • webpack 2

Part 2, Setup of the middlewares and mongodb

Video

Link

  • Add mongoose, body-parser, morgan, compression, helmet
  • Setup config folder
  • Setup constants

Part 3, Users creation

Video

Link

  • Create the user model, controller and routes
  • Install robomongo, postman
  • Add joi for validation with express-validation

Part 4, Add bcrypt and passport

Video

Link

  • Add rimraf and clean dist on webpack build
  • Crypt the user password
  • Create the localStrategy with passport
  • Can log a user

Part 5, Add passport-jwt and send less information about the user

Video

Link

  • Create a secret password for the jwt
  • Add passport-jwt and create the strategy
  • Add jsonswebtoken library
  • How can I send less info to the front end ? Like I don't want to send the password

Part 6, Creation of a post

Video

Link

  • Create the post model
  • Add the user id as the author
  • Resolve error I did with joi

Part 7, Get a post by his id

Video

Link

  • Create the controller, route
  • Add http-status library
  • Populate User
  • User toAuthJSON vs toJSON

Part 8, Get all posts with a list statics method

Video

Link

  • Talk about the repos
  • Create the controller
  • Create a list statics method on post

Part 9, Update a post if author of it

Video

Link

  • Create the route and controller
  • Create a validation field

Part 10, Delete a post if author of it

Video

Link

  • Create the route and controller
  • Show the authorization work
  • Add prettier and show the magic :)

Part 11, User can favorite a post if auth + increment the favoriteCount

Video

Link

  • Create model methods for both user and post
  • Add the increment/decrement statics on post

Part 12, Send if favorite or not with post for help the life of the front-end

Video

Link

  • Make route auth
  • Make user method
  • Make post controller work with the favorite

youtube-makeanodejsapi's People

Contributors

equimper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

youtube-makeanodejsapi's Issues

Cannot find \dist\index.bundle.js'

Hello,
I have followed the steps in your tutorial FIVE times, but it fails to create the dist directory and adding the index.bundel.js to it.

Error: Cannot find module 'C:\Users\Mowzey\Documents\RestApi\dist\index.bundle.js'
How can i fix this?
thank you

Cannot set headers after they are sent to the client

In user.controller the login should not send the seponse and then return next(). This causes the error "Cannot set headers after they are sent to the client ".

it should be:

export function login(req, res, next) {
if (req.user) return res.status(200).json(req.user)
next()
}

instead of

export function login(req, res, next) {
res.status(200).json(req.user)
return next()
}

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.