- Descrição
- Como Usar Localmente
- Desenvolvimento
- Arquitetura
- Rotas
- Outros Scripts da Aplicação
- Contato
Repositório com o código de uma API Rest, em Node.js com Express. O banco de dados é em MongoDB.
Esta API foi desenvolvida para o trabalho do Bloco 27 do módulo de back-end da Trybe, projeto App de Receitas.
O objetivo era criar uma aplicação para cadastros de receitas, com controle de usuário.
Foi desenvolvida a aplicação back-end para para que fosse possível fazer toda a dinâmica de:
- Login
- Criar Receita
- Listar Receita
- Listar Receita por Id
- Deletar Receita
- Atualizar Receita
- Adicionar Imagem a uma receita
- Criar Usuários
- Criar Usuário Admin
1 - Para clonar o repositório, vá até o diretório onde deseja clonar, execute o git clone
e depois entre no diretório criado:
git clone [email protected]:rslfilho/cookmaster.git
cd cookmaster
2- Já dentro do diretório, instale as depedências:
npm install
3 - Configure um arquivo .env
na raiz da aplicação com os seguintes dados:
HOST=localhost
4 - Depois de instaladas as depedências, inicie a aplicação:
npm start
5 - A aplicação estárá rodando e acessível em http://localhost:3000/
. A porta pode modificar se tiver uma variável PORT
no ambiente que estiver executando.
A API foi desenvolvida em Node.js com Express. O banco de dados é em MongoDB.
Além disso, as dependências da aplicação são:
jsonwebtoken
para autenticação de acesso;multer
recebimento de arquivos pelas rotasnode-dev
para iniciar a aplicação com reinício automático
No ambiente de desenvolvimento ainda são usadas as dependências:
mocha
,chai
,chai-http
esinon
para os testes;nyc
para gerar os relatórios de cobertura de testeseslint
,eslint-config-trybe-backend
, para configuração do ESLint
A API está contida na pasta /src
dentro da raiz do repositório, nela temos:
/api
arquivos de configuração e início da aplicação;/controllers
arquivos de Controllers de todas as rotas da aplicação;/helpers
funções ou dados auxiliares;/integration-tests
arquivos de testes de integração;/middlewares
arquivos de middlewares como o de Erro, de Autenticação e o de configuração do Multer;/models
arquivos de configuração da conexão com o banco de dados e models;/services
arquivos de Serviços da aplicação, de todas as rotas e de validação;/uploads
arquivos enviados pela rota deaddImage
;
** A pasta /tests
contém os testes dos requisitos de projeto da própria Trybe;
Body da requisição:
{
name: 'Usuário Teste',
email: '[email protected]',
password: 'senha123',
}
Headers da requisição:
{
headers: {
Authorization: 'string-token-de-admin',
},
}
Body da requisição:
{
name: 'Usuário Admin',
email: '[email protected]',
password: 'senha123',
role: 'admin',
}
Body da requisição:
{
email: '[email protected]',
password: 'senha123',
}
O login retorna um token de autenticação que precisa ser usado no headers em outras rotas.
Body da requisição:
{
name: '',
ingredients: 'Farinha, Manteiga e Açucar',
preparation: 'Farinha + Manteiga e depois Açucar',
}
Headers da requisição:
{
headers: {
Authorization: 'string-token-de-usuário-logado',
},
}
Body da requisição:
{
name: 'Receita Teste 33',
ingredients: 'Farinha, Manteiga e Açucar',
preparation: 'Farinha + Manteiga e depois Açucar 123',
}
Headers da requisição:
{
headers: {
Authorization: 'string-token-de-usuário-dono-da-receita-ou-admin',
},
}
Headers da requisição:
{
headers: {
Authorization: 'string-token-de-usuário-dono-da-receita-ou-admin',
},
}
Body da requisição deve contar um arquivo de imagem jpg
com chave image
npm run dev
para rodar a aplicação com Node-dev e reinício automático na atualização de qualquer arquivo;npm run test
para rodar todos os testes;npm run test:coverage
para rodar todos os testes e gerar o relatório de cobertura em html, acessível na pasta/coverage
;npm run test:coverage:json
para rodar todos os testes e gerar o relatório de cobertura em json, acessível na pasta/coverage
;npm run lint
para rodar o ESLint;
Desenvolvido por Roberval Filho
Email: [email protected]
Github: https://github.com/rslfilho
LinkedIn: https://www.linkedin.com/in/rslfilho/