Giter Site home page Giter Site logo

soulpet-back's Introduction

Programa Soul Pet

Este é uma api desenvolvida em linguagem de programação Back-end, voltado para gerenciamento de um petshop. O objetivo é oferecer uma solução para simplificar a gestão de informações relacionadas aos pets e seus proprietários.

Funcionalidades

O programa Soul Pet possui as seguintes funcionalidades:
  • Cadastro de clientes: cadastro de clientes, incluindo informações como nome, endereço, telefone e e-mail.
  • Cadastro de pets: cadastro de animais, incluindo informações como nome, tipo, porte, data de nascimento e identificação do proprietário.
  • Cadastro de produtos: possui um sistema de controle de produtos, como higiene, brinquedos, conforto, alimentação, medicamentos.
  • Inserção pedidos: há uma segmentação para controle de pedidos, que permite o cadastro de mesmo de acordo com quantidade, cliente e protudos solicitatos.
  • Registro de agendamento: possui uma seção de agendamentos para inserção de um serviço em específico, de acordo com o pet, data e status.
  • Registro de serviços: permite o registro de serviços realizados no petshop, como banho, tosa, vacinação, entre outros.

Tecnologias utilizadas e pré-requisitos

O programa Soul Pet foi desenvolvido utilizando as seguintes tecnologias:

Instalação

1. Clone este repositório: `git clone https://github.com/jessicavenancio/soulpet-back.git `
2. Instale as dependências: `npm install`

Como executar

1. Inicie o servidor: `npm start`
2. Acesse a página em seu navegador em: `http://localhost:3001`

Lista de endpoints da API

Aqui estão as rotas disponíveis, os recursos e os parâmetros necessários para realizar as operações.
  • Clientes

Consulta todos os clientes

  GET /clientes

Consulta um cliente específico

  GET /clientes/:id
Parâmetro Tipo Descrição
id number Obrigatório

Gera relatório em pdf de todos os clientes

  GET /relatorio

Insere um novo cliente

  POST /clientes
Parâmetro Tipo Descrição
nome string Obrigatório
email string Obrigatório
telefone string Obrigatório
endereco foreign_key Obrigatório

Atualiza os dados de um cliente específico

  PUT /clientes/:id
Parâmetro Tipo Descrição
id number Obrigatório

Remove um cliente

  DELETE /clientes/:id
Parâmetro Tipo Descrição
id number Obrigatório
  • Pets

Consulta todos os pets

  GET /pets

Consulta um pet específico

  GET /pets/:id
Parâmetro Tipo Descrição
id number Obrigatório

Consulta todos os pets de um cliente

  GET /clientes/:clienteId/pets
Parâmetro Tipo Descrição
clienteID number Obrigatório

Insere um novo pet

  POST /pets
Parâmetro Tipo Descrição
nome string Obrigatório
tipo string Obrigatório
porte string Obrigatório
dataNasc date-only Obrigatório

Atualiza os dados de um pet específico

  PUT /pets/:id
Parâmetro Tipo Descrição
id number Obrigatório

Remove um pet

  DELETE /pets/:id
Parâmetro Tipo Descrição
id number Obrigatório
  • Produtos

Consulta todos os produtos

  GET /produtos

Consulta um produto específico e contém o filtro de nome e categoria

  GET /produtos/:id
Parâmetro Tipo Descrição
id number Obrigatório

Atualiza os dados de um produto específico

  PUT /produto/:id
Parâmetro Tipo Descrição
id number Obrigatório

Remove um produto

  DELETE /produto/:id
Parâmetro Tipo Descrição
id number Obrigatório
  • Pedidos

Consulta todos os pedidos

  GET /pedidos

Consulta um pedido específico

  GET /pedido/:id
Parâmetro Tipo Descrição
id number Obrigatório

Consulta todos os pedidos de acordo com id do produto

  GET /pedidos/produtos/:id
Parâmetro Tipo Descrição
id number Obrigatório

Consulta todos os pedidos de acordo com id do cliente

  GET /pedidos/clientes/:id
Parâmetro Tipo Descrição
id number Obrigatório

Insere um novo pedido

  POST /pedidos
Parâmetro Tipo Descrição
codigo string Obrigatório
quantidade integer Obrigatório

Atualiza os dados de um pedido específico

  PUT /pedido/:id
Parâmetro Tipo Descrição
id number Obrigatório

Remove um pedido

  DELETE /pedido/:id
Parâmetro Tipo Descrição
id number Obrigatório
  • Agendamento

Consulta todos os agendamentos

  GET /agendamentos

Consulta um agendamentos específico

  GET /agendamentos/:id
Parâmetro Tipo Descrição
id number Obrigatório

Insere um novo agendamento

  POST /agendamentos
Parâmetro Tipo Descrição
petId number Obrigatório
servicoId number Obrigatório
dataAgendada dateOnly Obrigatório
realizada text Obrigatório

Atualiza os dados de um agendamentos específico

  PUT /agendamentos/:id
Parâmetro Tipo Descrição
id number Obrigatório

Remove um agendamento específico

  DELETE /agendamentos/:id
Parâmetro Tipo Descrição
id number Obrigatório
  • Serviços

Consulta todos os serviços

  GET /servicos

Consulta um serviço específico

  GET /servico/:id
Parâmetro Tipo Descrição
id number Obrigatório

Insere um novo serviço

  POST /servicos
Parâmetro Tipo Descrição
nome string Obrigatório
preco string Obrigatório

Atualiza os dados de um serviço específico

  PUT /servico/:id
Parâmetro Tipo Descrição
id number Obrigatório

Remove um serviço

  DELETE /servico/:id
Parâmetro Tipo Descrição
id number Obrigatório

Remove todos os serviços

  DELETE /servicos/all

Contribuições


Contribuições para o programa Petshop são bem-vindas! Para contribuir, basta criar um fork deste repositório, fazer as modificações desejadas e enviar um pull request. Siga esse passos:
1. Faça um fork deste repositório.
2. Crie uma nova branch: `git checkout -b nome-da-sua-branch`
3. Faça as alterações necessárias.
4. Faça um commit com as alterações: `git commit -m "Descreva as alterações realizadas"`
5. Faça um push para a branch: `git push origin nome-da-sua-branch`
6. Crie um pull request.

Autoria


Autores desse projeto . Jéssica Venâncio
. Jurineide de Souza
. Vitor Santana
. Ricardo Silva Sousa

Licença

Esta aplicação utiliza a Licença MIT, o que significa que você pode usá-la, copiá-la, modificar e distribuir o código esta aplicação, desde que seja mantida a atribuição de direitos autorais e a licença seja incluída em todas as cópias e modificações do código. Para obter mais informações sobre a Licença MIT, consulte o arquivo LICENSE.md na raiz deste repositório.

soulpet-back's People

Contributors

jessicavenancio avatar jurineide avatar saantanavitor avatar ricardodev1605 avatar jose-almir avatar gabriel-soulcode avatar

soulpet-back's Issues

[FE-21] Integrar o detalhamento de um Pedido

Crie uma nova página para detalhar as informações de um pedido, ela deve mostrar as informações do pedido, do produto e do cliente. A página deve ser linkada a opção detalhes na listagem de pedidos.

Depende de: FE-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-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-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

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

[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-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-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

[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-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

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

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.