Giter Site home page Giter Site logo

soulpet-back's Introduction

SoulPet - BackEnd

A parte backend do site SoulPet é responsável por gerenciar todas as informações referentes a clientes, pets, produtos, serviços e pedidos, fornecendo uma estrutura sólida e confiável para o site. Com rotas específicas para cada recurso, o backend possibilita consultas, edições e exclusões de forma eficiente, garantindo a integridade dos dados e a segurança das informações. Além disso, o dashboard do site é alimentado pelas estatísticas geradas pelo backend, permitindo uma visualização completa e detalhada do desempenho do petshop. Com uma arquitetura bem definida com segurança e um desenvolvimento cuidadoso, o backend do site de petshop oferece uma experiência agradável e intuitiva para gerenciar todas as operações relacionadas ao petshop de forma eficiente e confiável.

🚀 Começando

Com estas instruções, você será capaz de obter uma cópia do projeto em execução em sua máquina local para fins de desenvolvimento e teste.

Pré-requisitos;

Antes de prosseguir, certifique-se de ter instalado o seguinte:

1. GitBash - para clonar o repositório;

2. Banco de dados MySQL;

3. Banco de dados MongoDB configurado;

4. PostMan para testes localhost(Opcional);

Clonando o repositório e instalação;

Para clonar o repositório do SoulPet-BackEnd, siga os passos abaixo:

1 - Abra o GitBash.

2 - Crie uma pasta em sua localização de preferência.

3 - Acesse a pasta usando o comando cd no GitBash.

4 - Execute o seguinte comando para clonar o repositório:

[git clone https://github.com/JoseAugustoJasfarias/soulpet-back]

5 - Depois de clonar o repositório, instale as dependências do projeto:

[npm install]

6 - Faça a configuração do .Env (Use o .env.exemple como base):

7 - Inicie o servidor local:

[npm start]

  • Você pode adicionar dados utilizando as funções disponíveis no projeto rodando.

📦 Implantação

Tenha o Front-End do projeto e adicione o projeto de em um local de hospodagem 24h com banco de dados, adquira um dominio e poderá deixar 100% disponivel para clientes.

🛠️ Construído com

  • Node.js - Gerente de Dependência e framawork

✨ Dependências usadas

  • cors: "^2.8.5",
  • dotenv: "^16.0.3",
  • express: "^4.18.2",
  • express-validator: "^7.0.1",
  • joi: "^17.9.2",
  • moment-timezone: "^0.5.43",
  • mongoose: "^7.1.0",
  • morgan: "^1.10.0",
  • mysql2: "^3.2.3",
  • nodemon: "^2.0.22",
  • sequelize: "^6.31.1"

✒️ Autores

Mencione todos aqueles que ajudaram a levantar o projeto desde o seu início

soulpet-back's People

Contributors

gabriel-soulcode avatar jose-almir avatar joseaugustojasfarias avatar laisbelo avatar luhd1 avatar velsch21 avatar vicscapini avatar

soulpet-back's Issues

[BE-19] Criar recurso GET para listagem de Pedidos

Crie quatro rotas GET para listagem de pedidos.

  • /pedidos
    Esta rota deve listar todos os pedidos.
  • /pedidos/:id
    Esta rota deve mostrar os dados do pedido de acordo com o id fornecido. O pedido retornado deve incluir os valores do produto e do cliente relacionado.
  • /pedidos/produtos/:id
    Esta rota deve mostrar os dados do pedido de acordo com o id do produto fornecido. O pedido retornado deve incluir os valores do cliente relacionado.
  • /pedidos/clientes/:id
    Esta rota deve mostrar os dados do pedido de acordo com o id do cliente fornecido. O pedido retornado deve incluir os valores do produto relacionado.

Depende de: BE-18

[BE-3] Criar recurso POST para inserção de Produtos

Crie uma rota POST para inserir novos produtos.

  • /produtos
    Todos os dados vindos do body devem ser checados para garantir que dados inválidos não entrem no banco de dados. Exemplo:
    • Checar se a categoria é uma das predefinidas (Higiene, Brinquedos, Conforto);
    • Se a data de desconto é futura;
    • Se o desconto está entre 0 e 100 (percentual);
    • Etc.

Depende de: BE-1

[BE-8] Criar model de Serviço

Crie um novo model para a aplicação backend. Suas colunas são:

  • nome (obrigatório);
  • preço (obrigatório);

O relacionamento entre Pet-Serviço é N:N. Deve ser implementado um segundo model que representa a tabela junção (Agendamento) entre as duas entidades.

Dica: Veja a seção Implementation da documentação.

[BE-22] Criar recurso DELETE para remoção de Produtos

Crie três rotas DELETE para remover pedidos.

  • /pedidos/:id
    Remova o pedido com o respectivo id.
  • /pedidos/clientes/:id
    Remova todos os pedidos pelo respectivo id do cliente.
  • /pedidos/produtos/:id
    Remova todos os pedidos pelo respectivo id do produto.

Depende de: BE-18

[BE-10] Criar recurso GET para listagem de Serviços

Crie duas rotas GET para listagem de serviços.

  • /servicos
    Esta rota deve listar todos os serviços. Também deve aceitar uma query que filtra por status ou data
  • /servicos/:id
    Esta rota deve mostrar os dados do serviço de acordo com o id fornecido.

Depende de: BE-8

[BE-20] Criar recurso POST para inserção de Pedidos

Crie uma rota POST para inserir múltiplos pedidos.

  • /pedidos
    A requisição deve receber em seu corpo um vetor de pedidos, que devem ser inseridos.
    Todos os campos do Body devem ser checados e validados antes de realizar inserção.

Depende de: BE-18

Dica: bulkCreate

[BE-2] Criar recurso GET para listagem de Produtos

Crie duas rotas GET para listagem de produtos.

  • /produtos
    Esta rota deve listar todos os produtos. Caso seja enviado na rota uma query como /produtos?nome= ou /produtos?categoria=, os dados devem ser fitrados para que apareçam apenas produtos de acordo com a busca.
  • /produtos/:id
    Esta rota deve mostrar os dados do produto de acordo com o id fornecido.

Depende de: BE-1

[SPT-3] Criar esquemas de validação do corpo da requisição

Validar com uso da biblioteca Joi os corpos de requisição das rotas da aplicação para impedir que dados inválidos sejam inseridos no banco de dados. Aplicar validação em todas as inserções e atualizações de dados, responder ao cliente com 400 em caso de dados fornecidos inválidos. É necessário que as mensagens de erro sejam traduzidas para o português usando a configuração messages da função validate e que o error.details seja tratado para mostrar apenas um array com as mensagens de erro.

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.

[BE-1] Criar model de Produto

Crie um novo model para a aplicação backend, ele representa um produto e possui as seguintes colunas:

  • nome (obrigatório)
  • preço (obrigatório)
  • descricao (obrigatório, 150 caracteres)
  • desconto (obrigatório)
  • dataDesconto (obrigatório)
  • categoria (obrigatório)

[BE-4] Criar recurso PUT para atualização de Produtos

Crie uma rota PUT para atualizar produtos existentes.

  • /produtos/:id
    Todos os dados vindos do body devem ser checados para garantir que dados inválidos não entrem no banco de dados. Exemplo:
    • Checar se a categoria é uma das predefinidas (Higiene, Brinquedos, Conforto);
    • Se a data de desconto é futura;
    • Se o desconto está entre 0 e 100 (percentual);
    • Etc.

Depende de: BE-1

[BE-18] Criar model de Pedido

Crie um novo model para a aplicação backend. Suas colunas são:

  • codigo (chave primária, deve ser um UID);
  • quantidade (obrigatório);

O relacionamento entre Cliente-Pedido é 1:N. O relacionamento entre Produto-Pedido é 1:N.

Dica:

[BE-9] Criar model de junção Pet-Serviço (Agendamento)

Este model deve ser implementado após o model de Serviço para complementar. Pode nomear este model de junção como Agendamento. Além dos campos de chave estrangeira, deve haver:

  • dataAgendada (data prevista para realizar o serviço);
  • realizada (booleano);

Depende de: BE-8.

Dica: Veja a seção Implementation da documentação.

[SPT-11] Triggers de banco de dados MySQL

Implemente triggers do MySQL capazes de realizar backup de todas as tabelas do sistema, sempre que é feito alguma remoção de dados de alguma tabela.

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que ela é consistente.

[SPT-4] Criar esquema de popular banco de dados com dados fictícios

Crie uma variável de ambiente DB_FORCE que pode ser true ou false. Use ela para configurar o sync force do sequelize, e caso seja true, use um esquema para preencher o banco com dados fictícios. Devem haver:

  • 2 clientes;
  • 3 pets (dois do primeiro cliente e um do segundo);
  • Caso haja outras entidades no projeto, cuidar para que elas também sejam populadas;

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.

[SPT-2] Criar implementação de mensagem de erro de resposta

No backend, nas tentativas de executar queries do banco de dados utilizamos try-catch, porém o código de status 500 não é o mais preciso para as diversas situações que podem acontecer. Trate o objeto err no catch para responder ao cliente com mensagens e códigos de status mais preciso sobre o erro ocorrido (todas as rotas com try-catch devem ter esse tratamento). As respostas de erro devem ter:

  • Código de status;
  • Mensagem em português sobre o erro ocorrido;
  • Timestamp da requisição;
  • Rota em que ocorreu o erro.

O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.

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.