GithubHelp home page GithubHelp logo

dansmar / nodejs-jwt-base-project Goto Github PK

View Code? Open in Web Editor NEW

This project forked from henriqueeyer/nodejs-jwt-base-project

1.0 0.0 0.0 1.15 MB

Repositório para os estudantes acompanharem o conteúdo e a aula ao vivo do terceiro dia do bloco 24 do curso. Tema: NodeJS, Express e JWT

Shell 0.77% JavaScript 99.23%

nodejs-jwt-base-project's Introduction

Esse projeto é uma API base para ser utilizada na aula sobre JWT do curso de NodeJS da Trybe.

Baixando o projeto

No seu terminal, cmd, power shell ou bash execute os seguintes comandos:

  • git clone [email protected]:tryber/nodejs-jwt-base-project.git
  • cd nodejs-jwt-base-project
  • npm i

Preparando o ambiente

  • Faça uma cópia do arquivo .env.example, criando um arquivo .env com as suas credenciais SQL;
  • No seu terminal, execute o comando npm start;
    • Esse comando vai, automaticamente, rodar o script de prestart, que inicializará o banco com o sequelize.
  • O comando acima irá criar o banco de dados jwt_exercises_dev e povoar as tabelas Users e Posts.

Rodando via docker-compose

Para rodar a aplicação via container você vai precisar utilizar os seguintes comandos:

Iniciar os containers em segundo plano

docker-compose up -d

Acessar o terminal do container

docker exec -it api bash

Instalar as dependências da aplicação

npm install

Iniciar a aplicação

npm start

Estrutura base do projeto

Abaixo, está a estrutura base do projeto. Ele implementa uma API em NodeJS e Express que permite criar usuários, listar posts e fazer login. O projeto base contém uma autenticação simples. Durante a aula, é mostrado como adicionar à API autenticação via JWT.

├── README.md
├── src
│  ├── config
│  │  └── config.js
│  ├── controllers
│  │  ├── createUser.js
│  │  ├── getUsers.js  
│  │  ├── login.js
│  │  └── posts.js
│  ├── migrations
│  │  ├── [timestamp]-users.js
│  │  └── [timestamp]-posts.js
│  ├── models
│  │  ├── index.js
│  │  ├── Post.js
│  │  └── User.js
│  ├── seeders
│  │  ├── [timestamp]-users.js
│  │  └── [timestamp]-posts.js
│  ├── services
│  │  ├── index.js
│  │  ├── postService.js
│  │  └── userService.js
│  ├── app.js
│  ├── routes.js
│  └── server.js
├── .env.example
├── package-lock.json
└── package.json

Modelos

Modelos são responsáveis por fazer o mapeamento entre as entidades que sua aplicação manipula e a camada de dados. Contêm todas as interações responsáveis por ler e escrever dados no seu banco de dados.

Estão organizados dentro da pasta models.

Migrations

Migrations são responsáveis por criar e/ou restaurar as alterações no banco de dados.

Estão organizados dentro da pasta migrations e há uma migration para cada tabela no banco de dados. No exemplo, existem as tabelas Users e Posts.

Seeders

Seeders são responsáveis por povoar os dados das tabelas do banco de dados.

Estão organizadas dentro da pasta seeders. No exemplo, existem seeders para as tabelas Users e Posts.

Services

Estão concentradas as regras de negócio da aplicação, fazendo a comunicação entre camada de modelo e de controle.

Controllers

Controllers são as funções utilizadas como callbacks na definição de rotas. Eles são responsáveis por lidar com as requisições que chegam nas diferentes rotas de sua aplicação e criando a resposta que será enviada para o cliente. Normalmente, interagem com um ou mais modelos para ler/escrever dados do banco de dados.

A API possui quatro controllers:

  • createUser.js: Lida com a criação de novas pessoas usuárias.

  • getUsers.js: Encontra as pessoas usuárias cadastradas.

  • login.js: Responsável pela lógica de login.

  • posts.js: Encontra os posts de um usuário.

src/routes.js

Esse é um arquivo que concentra os controllers do projeto.

src/app.js

Aqui é onde é criado de fato a API com o Express. Também é onde todas as rotas são configuradas.

src/server.js

Arquivo que configura as portas da aplicação e inicia o servidor Express.

.env.example -> .env

Este arquivo é responsável por guardar os dados sensíveis do servidor. Este arquivo deve ser editado com as credencias MySQL da pessoa desenvolvedora. Neste exemplo, está sendo utilizado o usuário root com senha inexistente. **⚠️ O arquivo .env arquivo não deve ser commitado na esmagadora parte das vezes, pois armazena dados sensíveis. ** ⚠️ Lembre-se de editar este arquivo com as suas credencias.

nodejs-jwt-base-project's People

Contributors

cleytonoliveira avatar felipemuller20 avatar nato-re avatar jonathan-f-silva avatar gabrielcoruja avatar mjgargani avatar henriquejensen avatar ttrmoreira avatar tuliostarling avatar renanvamo avatar roziscoding avatar thiago-mariotto avatar

Stargazers

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