brusoncini / pdv-fabric

Desafio de conclusão do curso da Cubos Academy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

imagem

PDV-Fabric 👩‍💻

Descrição 🌸

Este projeto consiste em uma API para um PDV (Ponto de Venda) ou Frente de Caixa, desenvolvida como parte do desafio de conclusão do curso da Cubos Academy. A API é construída em Node.js, usando PostgreSQL como banco de dados e seguindo os princípios de uma API REST.

Ferramentas e Tecnologias 🔧
  • JavaScript
  • Nodejs
  • ElephantSQL e PostgreSQL para criação do banco de dados
  • Npm para instalação de dependências
  • Express para conexão com o servidor
  • JSON Web Token (JWT) para gerar token de autenticação
  • Nodemailer para disparo de e-mails
  • Knex para conexão com o banco de dados
  • AWS-SDK para salvar imagem em banco de dados
  • Joi para validações
  • Bcrypt para criptografia de senha
  • Axios para requisições HTTP
  • Cors para permitir solicitações de recursos de diferentes origens (Cross-Origin Resource Sharing)
  • Dotenv para configuração de variáveis de ambiente
  • Handlebars para renderização de modelos do lado do servidor
  • Multer para upload de arquivos no banco de dados
  • Pg para conexão com PostgreSQL
  • Nodemon para diminuir a necessidade de reconexão com servidor
Recursos 💫
  • Cadastro de Usuários
  • Login de Usuários
  • Detalhamento de Perfil de Usuário Logado
  • Edição de Perfil de Usuário Logado
  • Listagem de Categorias
  • Cadastro de Produtos
  • Edição de Produtos
  • Listagem de Produtos
  • Detalhamento de Produto
  • Exclusão de Produto por ID
  • Cadastro de Clientes
  • Edição de Clientes
  • Listagem de Clientes
  • Detalhamento de Cliente
  • Cadastro de Pedidos
  • Listagem de Pedidos
  • Exclusão de Produto com validação
  • Aprimoramento de cadastro/atualização de produto com imagens
  • Aprimoramento de exclusão de produto com exclusão de imagem
Banco de Dados 📁

A API utiliza um banco de dados PostgresSQL hospedado no serviço ElephantSQL. O script de criação das tabelas e inserção das categorias está disponível no projeto.

Como executar o projeto ⚙️

Pré-requisitos

Antes de executar este projeto, certifique-se de que sua máquina atende aos seguintes pré-requisitos:

  • Aplicativo de teste de API: Você precisará de um aplicativo de teste de API, como o Insomnia ou o Postman.

Executando com o link do Projeto


Executando a aplicação em modo de desenvolvimento

Ferramentas Necessárias

Certifique-se de ter as seguintes ferramentas instaladas em sua máquina:

  • Git
  • Node.js
  • VSCode ou outra IDE de sua escolha
  • PostgreSQL: Um sistema de gerenciamento de banco de dados relacional.
  • Beekeeper Studio ou um software similar para gerenciamento de bancos de dados.

Siga as etapas abaixo para configurar o projeto:

  1. Clone este repositório em sua máquina.

  2. Abra a pasta do projeto na sua IDE.

  3. Crie o banco de dados a partir do arquivo de despejo sql.sql.

  4. Instale as dependências executando o seguinte comando:

    npm install
    
  5. Crie um arquivo de variáveis de ambiente chamado .env com as informações necessárias. Certifique-se de incluir as configurações para o Bucket e SMTP. Você pode usar o arquivo .env.example como modelo.

  6. Execute a aplicação em modo de desenvolvimento com o seguinte comando:

    npm run dev
    
  7. Certifique-se de que as variáveis do banco de dados, porta, Bucket e SMTP no arquivo .env estejam configuradas corretamente para que o projeto funcione conforme o esperado.

  8. Execute os endpoints no seu aplicativo de teste de API seguindo o passo a passo dos Endpoints 📌 abaixo

Endpoints 📌
  • Listagem de Categorias: GET /categoria

listar_categorias


  • Cadastro de Usuário: POST /usuario

cadastrar_usuario


  • Login de Usuário: POST /login

login


As rotas a seguir exigem o token de autenticação do usuário logado, recebido no header com o formato Bearer Token.

Siga a demonstração abaixo para usar o token de autenticação

token_auth


  • Editar Usuário PUT /usuario

editar_usuario


  • Cadastro de Produtos: POST /produto

cadastrar_produto


  • Edição de Produtos: PUT /produto/:id

editar_produto


  • Cadastrar a imagem de um produto: POST /produto/:id/imagem

enviar_imagem


  • Editar a imagem de um produto: PATCH /produto/:id/imagem

atualizar_imagem


  • Listagem de Produtos: GET /produto

listar_produtos


  • Listagem de Produtos com QUERY para obter produtos de uma determinada categoria: GET /produto?categoria_id=

listar_produtos_query


  • Detalhamento de Produto: GET /produto/:id

obter_produto


  • Exclusão de Produto por ID: DELETE /produto/:id

excluir_produto


  • Cadastro de Clientes: POST /cliente

cadastrar_cliente


  • Edição de Clientes: PUT /cliente/:id

editar_cliente


  • Listagem de Clientes: GET /cliente

listar_clientes


  • Detalhamento de Cliente: GET /cliente/:id

detalhar_cliente


  • Cadastro de Pedidos: POST /pedido

registrar_pedido


  • Listagem de Pedidos: GET /pedido

listar_pedidos


  • Listagem de Pedidos com QUERY para obter pedidos de um determinado cliente: GET /pedido?cliente_id=

listar_pedidos_query


Status Codes ✅

A API retorna os seguintes códigos de status:

  • 200 (OK)
  • 201 (Created)
  • 204 (No Content)
  • 400 (Bad Request)
  • 401 (Unauthorized)
  • 403 (Forbidden)
  • 404 (Not Found)
  • 500 (Internal Server Error)
Deploy 🚀 O projeto foi implantado e está acessível em API-PDV-Fabric
Colaboração e Trabalho em Equipe 🤝

A criação da API PDV-Fabric foi uma jornada que marcou nossa união como o Grupo Tech Girls. Cada uma de nós se dedicou apaixonadamente a esse projeto, demonstrando um empenho extraordinário e uma colaboração excepcional.

O trabalho em grupo foi meticulosamente distribuído, permitindo que cada uma de nós desempenhasse um papel ativo, integrando-se e auxiliando as outras. Utilizamos o Trello como nosso principal aliado, onde planejamos minuciosamente cada etapa e administramos com clareza as tarefas de cada integrante.

Todos os dias, antes das sessões ao vivo do curso, tínhamos nossas reuniões diárias, momentos cruciais em que nos dedicamos intensamente para entregar um trabalho de qualidade e alcançar a satisfação pessoal. A motivação e o engajamento que compartilhamos ao longo desse desafio enriqueceram nossa experiência diária e fortaleceram nossos laços como equipe.

Adoramos a oportunidade de estar imersas nesse desafio e desfrutar dessa troca diária enriquecedora com as colegas de equipe. Vocês, Equipe 21, são incríveis e é um privilégio trabalhar ao lado de cada uma de vocês!

Agradecemos imensamente à Cubos Academy por proporcionar este momento imersivo de aprendizado em tecnologia. A orientação e o apoio dedicados dos instrutores ao longo dos meses foram fundamentais para o nosso crescimento e aprimoramento nesse campo em constante evolução. Estamos verdadeiramente gratas pela oportunidade de adquirir habilidades valiosas e aplicá-las em um projeto tão significativo.


Descrição da imagem


image

tags: Tech Girls PDV-Fabric Back-end Módulo 5 NodeJS PostgreSQL API REST Desafio Final Cubos-Academy

About

Desafio de conclusão do curso da Cubos Academy


Languages

Language:JavaScript 97.4%Language:HTML 2.6%