Skip to content

Este projeto trata-se de uma Aplicação BackEnd para Listar, Organizar, Precificar e Acompanhar suas Listas de Feiras em Super-mercados.

Notifications You must be signed in to change notification settings

julioa-adl/feirinha-beckend

Repository files navigation

PROJECT FEIRINHA

Este é o Back-End do projeto (separei em dois projetos por questões de Deploy). Também por questões de Deploy removi o Docker por completo do projeto! Mas ele foi inicialmente feito com o Docker.

Contexto

Este projeto trata-se de uma Aplicação Back-End para Listar, Organizar, Precificar e Acompanhar suas Listas de Feiras em Super-mercados.

Nele é possível:

  • Registrar-se como novo usuário e Logar em sua Conta.
  • Criar uma pré-lista de feirinha para lembrete.
  • Cadastrar Produtos Durante a compra (registrando o código de barras).
  • Cadastrar Mercados.
  • Ter registro histórico de preços por produto e por mercado.
  • Estatísticas históricas feirinhas.
  • Sugestão de Economia com base em histórico passado.

Técnologias usadas

Back-end:

  • Desenvolvido usando: NodeJS, ExpressJS, MongoDB, Mongoose, ES6, TypeScript, JWT, Bcrypt, Docker.

Inicializando o Projeto

Instalando Dependências
> Backend
```bash
npm install
``` 
Executando aplicação
* Para rodar o back-end:

  ```
    npm run dev
  ```
Dotenv
* Variáveis de Ambiente ncessárias:

  ```
  SECRET_KEY= secret_key
  ATLAS_NAME= login-banco-de-dados
  ATLAS_PASSWORD= senha-banco-de-dados
  USER_SUPER_EMAIL= super@example.com.br
  USER_SUPER_PASS= super_password
  ```

Testes

Executando Testes de Integração
* Para rodar todos os testes:

  ```
    npm test
  ```

Banco de Dados

Estrutura de Dados no Mongo

Estrutura de Dados

Requisitos do Projeto

Requisitos e funcionalidades do Back-End

Rota USER

01 - POST /user - Criar novos Usuários:
{
  "name": "string",
  "email": "string",
  "password": "string",
  "birthday": "string",
  "role": "string"
}
- O SUPER é auto-criado ao inserir o primeiro USER.
02 - POST /login - Fazer login:
{
  "email": "string",
  "password": "string"
}
- Gera Token e salva nos Headers da requisiçao.
03 - PUT /user - Atualiza informações dos usuários:
{
  "id": "String",
  "...": "..."
}
- Basta passar o ID do usuário e as informações que você quer alterar.
- O usuário SUPER só pode ser editado por ele mesmo | Impossível mudar a ROLE do SUPER.
- Os USERs não podem mudar suas próprias ROLEs, apenas informações pessoais.
- Só o SUPER pode dar ADMINs.
04 - DELETE /user - Deletar Usuários:
{
  "id": "String"
}
- O SUPER pode deletar todos menos a si mesmo.
- Os ADMINs podem deletar os USERs e outros ADMINs.
- Os USERs podem apenas se DELETAR, mas não a outros USERS.
05 - GET /user - puxa algumas informações dos usuários:

retorno:

[
  {
    "id": "String",
    "name": "String",
    "email": "String",
    "role": "String"
  },
  {
    "..."
  }
]
- Apenas Admins e Super podem listar usuários.

Rota PRODUCT

01 - POST /product - Cadastrar um novo produto:
{
  "name": "string",
  "subName": "string,
  "manufacturer": "string",
  "category": "string",
  "code": "string",
  "unitMeasure": "string",
  "size": "number",
  "image": "string"
}
- O name deve vir com a descrição genérica ex: 'Macarrão'.
- O subName deve ser uma descrição mais detalhada ex: 'Espaguete'.
- A imagem deve vir a rota de onde ela foi salva.
- Qualquer pessoa pode cadastrar um novo produto.
- o Código de barras será lido pelo front e automáticamente mandado para o backend.
02 - PUT /products - atualizar um produto:
{
"id": "String",
"...": "..."
}
- Basta passar o ID do produto e as informações que quer alterar.
03 - GET /product - puxa todos os produtos:

retorno:

[
  {
    "id": "String",
    "name": "String",
    "subName": "String",
    "manufacturer": "String",
    "category": "String",
    "code": "String",
    "unitMeasure": "String",
    "size": "Number",
    "image": "String"
  }
]
04 - DELETE /product - deleta um produto do banco:
{
  "id": "String"
}
- Apenas Admins e Super podem deletar produtos.

readme ainda em construção juntamente com os testes unitários ...

About

Este projeto trata-se de uma Aplicação BackEnd para Listar, Organizar, Precificar e Acompanhar suas Listas de Feiras em Super-mercados.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published