Coder Social home page Coder Social logo

backend_notes_projects's Introduction

BackEnd Proyecto Notas

Stack: NodeJs, ExpressJS, MongoDB, JWT

  • Este es el backend del proyecto, creado con un pequeno stack, donde la base de datos contiene una coleccion de User y Notas las cuales esta relacionadas cada usuario tendra una array de la notas, la cual se crearan y se agregaran al user por id, en la cual podemos buscar las notas relacionadas al usuario y los usuarios con las notas, tenemos varios endpoint para los request tanto para crear usuarios(/api/register) y loguearse(/api/login) cada vez que el usuario se loguea recibira un token con el cual podra hacer los request a la rutas correspondientes sin el token el usuario no tiene permiso para la request que solicita, como crear las notas(POST:/api/notes), Actualizar las notas (PUT:/api/notes/:id), borrar las notas (DELETE:/api/note/:id), obtener una nota por id (GET:/api/note/:id), obtener los usuarios (GET:/api/users).

Instalacion

  • $ npm install - para instalar las dependencias
  • crear las variables de entorno que estan en el archivo config.js (si es en desarrollo crear el archivo .env)
  • tener el mongo+srv para la conexcion de mongodb puede ser en atlas o local
  • subir el server: $ npm run dev (entorno desarrollador) y $ npm run start (entorno de produccion)

Rutas

Note

"Cada Request tiene que enviar el token recibido del login en el header para validar que es un usuario registrado y cual ussuario esta haciendo el request"

  • [GET] - /api/notes - Obtienen todas las notas
  • [GET] - /api/note/:id - Obtiene una nota por id pasado por parametro
  • [POST] - /api/notes - Crea una Nota, enviando un cuerpo json con dos variable content: requerido, important: opcional.
  • [PUT] - /api/note/:id - Actualiza una nota por id pasado por parametros
  • [DELETE] - /api/note/:id - Elimina una nota por id pasada por parametros

User

  • [POST] - /api/register - Crea un usuario enviando un cuerpo json con { "name":"", "username": "", "password": "" } todos requeridos.
  • [POST] - /api/login - es para loguearte y validar el usuario, envia un cuerpo json con username y password anteriomente reguistrada y retorna un token con el cual hacer los request a las rutas.

"Cada Request tiene que enviar el token recibido del login en el header para validar que es un usuario registado y cual usuario esta haciendo el request"

  • [GET] - /api/users - obtienes todos los usuarios y sus notas
  • [GET] - /api/user/ - Obtiene el user logueado.
  • [DELETE] - /api/user - Elimina el usuario logueado.

Estructura del proyectoa

  • La carpeta root es { "backend": { "node_modules": {}, "src": { "controllers": { "notes.controller.js": {}, "user.controller.js": {} }, "db": { "db.config.js": {} }, "middleware": { "validateToken: {} "handleErrors.js": {}, "routeNotFound.js": {} }, "models": { "notes.model.js": {}, "user.model.js": {} }, "router": { "note.routes.js":{}, "user.routes.js":{} }, "app.js":{}, "config.js":{}, "index.js":{}, "tests": { "note.test.js":{}, "user.test.js":{} }, "utils": { "for_testing.js":{} } } } }

Jest Config

  • En el package.json agregar { "jest" : { "testEnvironment": "node"} para utilizarlo en entorno NodeJs, tambien decarar los archivos test de la sigueinte manera: file.test.js jest automaticamnte leera estor archivo sin utilizar importacion del modulo

Babel Config

  • En package.json declaramos { "jest" : { "testEnvironment": "node", "transform": { "^.+\.[t|j]sx?$": "babel-jest" } } } - testEnvironmen : permite a jest a ejecutar en entorno nodejs backend y transform pero mite a jest a utilizar import statement outside a module ejemplo ( import { function } from './file.js')

backend_notes_projects's People

Contributors

crunux avatar

Stargazers

 avatar

Watchers

 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.