Skip to content

Sistema Frente de Caixa - Backend // Este projeto visa criar uma API REST que simula um caixa de mercado, oferecendo funcionalidades do dia a dia. A ideia é facilitar o gerenciamento de vendas, produtos e clientes em um ambiente de mercado. As funcionalidades incluem:

Notifications You must be signed in to change notification settings

CiceroGGS/sistema_frente_de_caixa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sistema Frente de Caixa - Backend 🛒

🚀 Sobre o projeto

Este projeto visa criar uma API REST que simula um caixa de mercado, oferecendo funcionalidades do dia a dia. A ideia é facilitar o gerenciamento de vendas, produtos e clientes em um ambiente de mercado. As funcionalidades incluem:

  • Login de usuário e validação do usuário logado.
  • Diversos CRUDs para gerenciamento de produtos, usuários, clientes e pedidos.
  • Envio de e-mails para notificações sobre pedidos.

🔨 Funcionalidades do projeto

A API oferece endpoints de CRUD para várias entidades, incluindo produtos, usuários, clientes e pedidos. As validações de usuários logados são realizadas através de um token de autenticação, garantindo a segurança da aplicação.

🛠️ Ferramentas utilizadas

O projeto foi desenvolvido utilizando as seguintes tecnologias:

  • Node.js e Express: Para construção do back-end.
  • Postgres: Banco de dados da aplicação.
  • Knex: Query builder para facilitar a criação das queries.
  • JWT e Bcryptjs: Para autenticação e validação dos usuários ao utilizar os endpoints.
  • Joi: Para validação dos endpoints.
  • Nodemailer: Biblioteca Node.js para envio de emails, integrada com o Mailtrap.io para testes e desenvolvimento seguro.

🚀 Como executar o projeto

  1. Clone o repositório

    git clone <URL_DO_REPOSITORIO>
    cd sistema-frente-de-caixa
  2. Instale as dependências

    npm install
  3. Crie um arquivo .env na raiz do projeto e adicione suas variáveis de ambiente

    SENHA_JWT= sua_senha_jwt
    
  4. Inicie o servidor

    npm run dev

📜 Makefile

Se você deseja executar comandos específicos de maneira simplificada, você pode usar o Makefile incluído no projeto. Aqui estão alguns exemplos de comandos disponíveis:

install: 
	npm install

start: 
	npm run dev

📂 Estrutura do projeto

sistema-frente-de-caixa/
├── .github/
├── src/
│   ├── controladores/
│   ├── intermediarios/
│   ├── rotas/
│   ├── schema/
│   ├── utils/
│   ├── conexao.js
│   ├── index.js
│   ├── servidor.js
│   └── ...
├── .env
├── dump.sql
├── package-lock.json
├── package.json
└── README.md

📡 Endpoints

📋 Categoria

  • Listar Categoria (GET)
    http://localhost:PORTA/categoria

👤 Usuário

  • Cadastrar Usuário (POST)
    http://localhost:3000/usuario
    Cadastra o usuário e criptografa sua senha em hash.

  • Logar Usuário (GET)
    http://localhost:3000/usuario
    Gera o token de autenticação.

Observação: Todos os endpoints a seguir necessitam de um token de autenticação.

  • Listar Usuário (POST)
    http://localhost:3000/usuario

  • Atualizar Usuário (POST)
    http://localhost:3000/usuario


📦 Produto

  • Cadastrar Produto (POST)
    http://localhost:3000/produto
    Exemplo de body da requisição:

    {
        "descricao": "descricao do produto", 
        "quantidade_estoque": quantidade_do_produto_em_estoque,
        "valor": valor_do_produto,
        "categoria_id": categoria_id
    }
  • Atualizar Produto (PUT)
    http://localhost:3000/produto/"IdProduto"
    Produto atualizado através do ID informado no parâmetro da URL.

  • Listar Produtos (GET)
    http://localhost:3000/produto/

  • Detalhar Produto por ID (GET)
    http://localhost:3000/produto/"IdProduto"

  • Deletar Produto (DELETE)
    http://localhost:3000/produto/"IdProduto"


🏢 Cliente

  • Cadastrar Cliente (POST)
    http://localhost:3000/cliente
    Exemplo de body da requisição:

    {
        "nome": "Nome",
        "email": "[email protected]",
        "cpf": "1111111111",
        "cep": "7777777",
        "numero": "xpoNumero"
    } 

    O endereço é autocompletado no banco de dados através do CEP.

  • Listar Clientes (GET)
    http://localhost:3000/cliente

  • Listar Cliente pelo ID (GET)
    http://localhost:3000/cliente_id/


📝 Pedido

  • Cadastrar Pedido (POST)
    http://localhost:3000/pedido/
    Exemplo de body da requisição:

    {
        "cliente_id": cliente_id,
        "observacao": "Observação do pedido",
        "pedido_produtos": [
            {
                "produto_id": id_produto,
                "quantidade_produto": quantidade_produto
            }
        ],
        "email": "[email protected]"
    }

    O email informado irá receber uma mensagem de "Seu pedido foi confirmado com sucesso!" e a observação informada no body.

  • Listar Pedidos (GET)
    http://localhost:3000/pedido/

📬 Contato

Para mais informações, entre em contato com Cicero Guilherme.

About

Sistema Frente de Caixa - Backend // Este projeto visa criar uma API REST que simula um caixa de mercado, oferecendo funcionalidades do dia a dia. A ideia é facilitar o gerenciamento de vendas, produtos e clientes em um ambiente de mercado. As funcionalidades incluem:

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published