Skip to content

stack-over-code-atlantico/.readme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

TECNOLOGIAS UTILIZADAS NO PROJETO

SUPERMERCADO SQ - BACKEND / DATABASE

Documentação

Link para a documentação da API: https://apisupersq.supermercadosq.com.br/documentation/redoc

Configurando e inicializando o projeto

Primeiramente deverá fazer o clone da aplicação em sua máquina:

Através do https

    git clone https://github.com/stack-over-code-atlantico/supermercadosq-be.git

Através do ssh

    git clone git@github.com:stack-over-code-atlantico/supermercadosq-be.git

Utilizamos o npm install para instalar todas as depedências utilizadas no projeto.

    npm install 

Para essa próxima etapa é necessário ter o arquivo .env configurado

Logo após a instalação, utilizamos o npx prisma generate para inicilizar e gerar um cliente prisma.

    npx prisma generate

E, por fim, usamos o npm run dev para iniciar o servidor em modo de desenvolvimento utilizando a biblioteca nodemon no endereço: http://localhost:3000

    npm run dev

Dependências

Depedências de desenvolvimento

Arquitetura de Pastas do Backend

Fluxo da Aplicação

    flowchart TD
    A[Chegada da requisição] -->|Envia para| B(Controller)
    B(Controller) --> C(Função correspondente no cotroller)
    C --> D{Há Erros?}
    D --> |Sim| E[Retorna Error]
    D --> |Não| F[Service]
    F --> G[Função no service]
    G --> H{Validações}
    H --> |Sim| I[Retorna Error]
    H --> |Não| J[repository]
    J --> K(Faz consulta no banco)

    style A fill:#99d9ff,stroke:#000,stroke-width:4px,color:#000
    style B fill:#acecb6,stroke:#000,stroke-width:4px,color:#000
    style D fill:#f9f49f,stroke:#000,stroke-width:4px,color:#000
    style F fill:#acecb6,stroke:#000,stroke-width:4px,color:#000
    style H fill:#f9f49f,stroke:#000,stroke-width:4px,color:#000
    style J fill:#acecb6,stroke:#000,stroke-width:4px,color:#000
Loading

Fluxo para Deletar usuário

    sequenceDiagram
    par Rota "/" to Middleware
        Rota "/"->>Middleware: Envia para função nos middlewares
    and Middleware to Funcao_Auth
        Middleware->>Funcao_Auth: Tem token?
        Funcao_Auth-->>Rota "/": Não há token ou token inválido
    and Middleware to Funcao_isAdmin
        Middleware->>Funcao_isAdmin: É administrador?
        Funcao_isAdmin-->>Rota "/": Não é administrador
    and Middleware to Controller_delete_user
        Middleware->>Controller_delete_user: Deletado!
        Controller_delete_user->>Rota "/": Status 200
    end
Loading

Endpoints / Rotas

** Todas as informações nos endpoints entre parenteses "()" são os valores ou parâmetros

** Todas as informações nas requisições adicionadas do ícone "👨‍⚖️" são rotas que exigem autenticação(token) de administrador.

** Todas as informações nas requisições adicionadas do ícone "👤" são rotas que exigem autenticação(token) de usuário.

Login

Ação Requisição Rota
Fazer o login POST /login

Usuários

Ação Requisição Rota
Listar todos os usuários GET /users
Criar um novo usuário POST /users
Atualizar as informações de um usuário PUT 👤 /users/(cpf_cnpj)
Deletar o usuário (setar o valor do atributo "ativo": false) PUT 👨‍⚖️ /users/(cpf_cnpj)/delete
Alterar o nível de usuário (setar o valor do atributo "nivel": "ADMINISTRADOR" ou "CLIENTE" ou "FORNECEDOR") PUT 👨‍⚖️ /users/(cpf_cnpj)/nivel_edit

Produtos

Ação Requisição Rota
Listar todos os produtos GET /products
Criar uma postagem de um produto POST 👤 /products
Alterar a postagem do produto cadastrado PUT 👤 /products/(id_produto)
Deletar uma postagem de um produto (setar o valor do atributo "status": "REPROVADO") PUT 👤 /products/(id_produto)/delete
Denunciar um produto PUT 👤 /products/(id_produto)/denuncia
Analisa denuncias relacionadas a uma postagem de um produto PUT 👨‍⚖️ /products/(id_produto)/analisaDenuncia

Comentário

Ação Requisição Rota
Listar todos os comentários GET /comments
Criar um comentário POST 👤 /comments
Editar um comentário PUT 👤 /comments/(id_comentario)
Deletar um comentário de uma postagem (setar o valor do atributo "status": "REPROVADO") PUT 👤 /comments/(id_comentario)/delete
Denunciar um comentário PUT 👤 /comments/(id_comentario)/report
Analisa denúncias relacionadas a um comentário em uma postagem PUT 👨‍⚖️ /comments/(id_comentario)/reviewReport

Regra de negócios

Entidades

Descrição

Usuário

O Usuário poderá se cadastrar como cliente ou fornecedor.

O Usuário terá email, senha, cpf ou cnpj, endereço. O telefone, nome social serão opcionais.

O Usuário não poderá cadastrar o cpf ou cnpj caso já estejam cadastrados.

O Usuário não poderá cadastrar um email caso já esteja cadastrado.

O Usuário poderá alterar email, senha, endereço, telefone, porém não o seu nível de acesso e cpf ou cnpj.

Administrador

O Administrador do sistema pode cadastrar outros administradores, fornecedores e clientes.

O Administrador poderá adicionar suas próprias postagens, comentários, assim como apagar e editar.

O Administrador poderá bloquear usuários, arquivar comentários e postagens denunciados.

O Administrador poderá alterar o nível de qualquer usuário.

O sistema deverá iniciar com um Administrador primordial (Adão).

Haverá uma validação para que o Administrador (Adão) não possa ser deletado do sistema através do seu ID.

Fornecedor

O Fornecedor poderá criar suas próprias postagens e comentar outras.

O Fornecedor poderá denunciar comentários e postagens.

O Fornecedor poderá editar suas postagens e comentários.

O Fornecedor que tiver sua conta desativada, terá o atributo "ativo" como false, assim como seus comentários postados.

Cliente

O Cliente poderá criar suas próprias postagens e comentar outras.

O Cliente poderá denunciar comentários e postagens.

O Cliente poderá editar suas postagens e comentários.

O Cliente que tiver sua conta desativada, terá o atributo "ativo" como false, assim como seus comentários postados.

Produtos

O Produto deverá ter um nome, ingredientes. A imagem é opcional.

O Produto iniciará com o atributo "status" como null, caberá ao Administrador avalia-lo entre "true" ou "false".

O Produto, ao ser postado pelo usuário, terá uma data de postagem como atributo, e também, o atributo "editado" para mostrar caso haja alteração na postagem.

O Produto só poderá ser listado e apresentado no site caso possua o atributo "status" como null ou true.

O Produto só poderá denunciado caso seu atributo "status" seja null.

O Produto receberá inicialmente o atributo "feedbacks_produto" como 0, e caso receba like terá seu valor incrementado.

O Produto possuirá um atributo chamado "id_aprovado" recebendo o valor do ID do Administrador responsável por aprova-lo.

Comentário

O Comentário deverá possuir uma mensagem.

O Comentário ao ser feito, terá os atributos "status", "data_comentario", "editado" e "id_aprovado".

O Comentário iniciará com o atributo "status" como null, caberá ao Administrador avalia-lo entre "true" ou "false".

O Comentário iniciará com o atributo "editado" como false, se tornando true ao ser editado pela primeira vez.

O Comentário não possuirá número mínimo de caracteres, porém deverá possuir 140 caracteres no máximo.

O Comentário terá o atributo "feedbacks_comentarios" iniciado como 0, e se caso receber like terá seu valor incrementado.

O Comentário possuirá um atributo chamado "id_aprovado" recebendo o valor do ID do Administrador responsável por aprova-lo.

Ações a Fazer

  • O sistema deverá iniciar com um Administrador primordial (Adão).
  • Haverá uma validação para que o Administrador (Adão) não possa ser deletado do sistema através do seu ID.

Usuário

  • : Cadastrar usuário
  • : Listagem de usuário
  • : Atualização de usuário
  • : O Usuário não poderá cadastrar o cpf ou cnpj caso já estejam cadastrados.
  • : O Usuário não poderá cadastrar um email caso já esteja cadastrado.
  • : O Usuário poderá alterar email, senha, endereço, telefone, porém não o seu nível de acesso e cpf ou cnpj não.
  • : O Usuário poderá adicionar suas próprias postagens, comentários
  • : O Usuário poderá denunciar comentários e postagens.
  • : O Usuário poderá editar suas postagens e comentários.

Administrador

  • Todos tem um middleware isAdmin
  • : O Administrador do sistema pode transformar um usuário em ADMIN. Criar rota, terá uma validação de administrador, ou seja Middleware isAdmin
  • : O Administrador poderá adicionar apagar e editar.
  • : O Administrador poderá arquivar comentários
  • : O Administrador poderá bloquear postagens denunciados.
  • : Deixar usuário inativo (Delete)
  • : O Administrador poderá alterar o nível de qualquer usuário.
  • : Aprovar produto Quando o produto estiver aprovado, terá o id_aprovado, que será o id do administrador que aprovou

Fornecedor

  • : Poderá denunciar comentários e postagens.
  • : Poderá editar suas postagens e comentários.

Cliente

  • : O Cliente que tiver sua conta desativada, terá o atributo "ativo" como false, assim como seus comentários postados.

Produtos

  • : Criar produto
  • : Listar produto apenas aqueles com status diferentes de false
  • : Atualizar produto
  • : Deletar/Denunciar produto Setar Status para false Terá validação, ou seja, Middleware isAdmin

Comentário

  • : Criar comentário
  • : Deletar comentário Setar status para false
  • : Atualizar comentário
  • : Listar comentário
  • : Denunciar comentário Setar para false
  • : Função rota para atualizar id_admin_relator com o id do ADMIN quando aprovado Apenas Admins podem aprovar

SUPERMERCADO SQ - FRONTEND

Projeto do bootcamp academy do Instituto Atlântico

Através do https

    git clone https://github.com/stack-over-code-atlantico/supermercadosq-fe.git

Através do ssh

    git clone git@github.com:stack-over-code-atlantico/supermercadosq-fe.git

Utilizamos o npm install para instalar todas as depedências utilizadas no projeto.

    npm install 

Para essa próxima etapa é necessário ter o arquivo .env configurado

E, por fim, usamos o npm run dev para iniciar o servidor em modo de desenvolvimento utilizado no endereço: http://localhost:3000

    npm run dev

Dependências

Depedências de desenvolvimento

Pastas

Por padrão, estamos usando a pasta supermercadosq-fe para manipularmos git e github e estamos usando supermercadosq para colocarmos todo o código assim como suas dependências

Telas

Home

A primeira tela é a de início, onde haverá uma breve amostra da identidade visual do site. Lá há as opções de ver o blog (onde ficam as postagens), sobre o nosso projeto, algumas das alergias principais e a opção de registrar-se e logar.

Blog/Postagens

A tela de postagens é onde há todas as postagens dos usuários. Nessa tela há uma validação do tipo de usuário.

  • Caso o usuário não esteja logado, ele poderá, apenas, ver as postagens como registrar-se no site.
  • Caso o usuário seja Cliente ou Fornecedor, ele poderá criar postagens, editar suas postagens, comentar, denunciar, etc.
  • Caso o usuário seja Administrador, ele terá acesso a tudo isso e a pagina de Dashboard.

Há a paginação de acordo com a quantidade de postagens, um filtro funcionando de acordo com as alergias e postagens e comentários funcionando como modais para melhor experiencia do usuário e rápida visualização.

Perfil

A tela de perfil de cada usuário poderá ser editada todas as informações, desde de informações pessoais, até sua senha. Também há a possibilidade de ver suas ultimas publicações e comentários, funcionando como um histórico.

Dashboard

Tela acessada somente pelo Administrador, onde será feita a analise de denuncias feitas em comentários e postagens. Lá é onde é mantido o controle de toda aplicação relacionado às postagens.

Login

Tela para fazer o login e adentrar ao site. Através dela tela é retornado 2 tokens. Um chamado 'token' onde retorna as informações do usuário e um chamado 'expires' onde o token é expirado depois de um certo tempo (1h).

Cadastro

Tela para ser criada uma conta para ser utilizada afim de postar e comentar os diversos produtos.

Arquitetura de pastas

Requisições e comunicação com o servidor

Todas as requisições estão sendo feitas através do Axios, utilizadas nas pastas de "services" e "utils" onde é feito a comunicação com a API.

👨‍💻 Desenvolvedores


André Gois


Emanuel Victor De Lima


Fernando Cavalcanti


Helen Cris


João Alfredo Alves


Marcelle Tabosa


Ticianne Dias


Victor Elias