Abordando as Matérias de Computação em Nuvem e Banco de Dados.
Usaremos o PostgreSql em Nuvem, além de hospedar o site em um dos serviços da AWS, usaremos o trabalho para atender um pequeno mercado de verduras e frutas da Cidade de Coromandel/MG.
Trabalho será todo voluntário e usando serviços gratuitos. Terá além do site, um app mobile e toda parte de marketing digital da empresa rescem formada.
🌐 O Conhecimento só tem um destino, ser compartilhado! 🌐
Este repositório contém o código para o sistema de gerenciamento de pedidos, usuários e produtos para um mercado de verduras e frutas.
- Java: Java é a linguagem de programação principal usada no desenvolvimento do backend do projeto. Documentação
- Node.js: Plataforma JavaScript para o backend. Documentação
- React: Biblioteca para construir interfaces de usuário no frontend. Documentação
- Spring Boot: Framework Java para backend. Documentação
- Yarn: Gerenciador de pacotes JavaScript. Guia do Yarn
- OpenSSL: Biblioteca de criptografia utilizada no Node.js. Novo link OpenSSL FAQ
- PostgreSQL: Banco de dados relacional na nuvem. Documentação
- Node.js (versão 22 ou superior)
- Yarn
- Java JDK 17+
- Spring Boot
- OpenSSL
Aqui estão as principais tecnologias e ferramentas usadas no projeto:
- Java: Java é a linguagem de programação principal usada no desenvolvimento do backend do projeto.
- Node.js: Plataforma JavaScript para o backend.
- React: Biblioteca para construir interfaces de usuário no frontend.
- Spring Boot: Framework Java para o backend.
- Yarn: Gerenciador de pacotes JavaScript.
- OpenSSL: Biblioteca para criptografia utilizada no Node.js.
Caso você encontre o erro ERR_OSSL_EVP_UNSUPPORTED
relacionado ao OpenSSL, execute o seguinte comando para usar a flag de openssl-legacy-provider
:
Caso precise atualizar as dependências e garantir que tudo está na versão mais recente, utilize os comandos abaixo:
- Atualizar pacotes do frontend:
- Atualizar pacotes no backend (Java):
- Configuração do Frontend (React)
O frontend será iniciado em http://localhost:3000.
- Configuração do Backend (Spring Boot)
O backend será iniciado em http://localhost:8080.
Estrutura inicial (V1)
A V1 contém a criação das tabelas:
-
product: Produtos do sistema.
-
users: Usuários com suporte a login via Google.
-
orders: Pedidos realizados.
-
order_items: Itens pertencentes aos pedidos.
-
rewards: Sistema de fidelidade.
-
payment_methods: Métodos de pagamento, incluindo QR code.
-
stock_history: Histórico de vendas e estoque.
Índices (V2)
A V2 contém a criação de índices para otimizar as consultas:
- Índices para a tabela "product"
CREATE INDEX IF NOT EXISTS idx_product_name ON product(name);
CREATE INDEX IF NOT EXISTS idx_product_price ON product(price);
CREATE INDEX IF NOT EXISTS idx_product_category ON product(category);
CREATE INDEX IF NOT EXISTS idx_product_validity_date ON product(validity_date);
- Índices para a tabela "users"
CREATE INDEX IF NOT EXISTS idx_user_username ON users(username);
CREATE INDEX IF NOT EXISTS idx_user_email ON users(email);
CREATE INDEX IF NOT EXISTS idx_users_provider_id ON users(provider_id);
- Índices para a tabela "orders"
CREATE INDEX IF NOT EXISTS idx_order_status ON orders(status);
CREATE INDEX IF NOT EXISTS idx_order_user_id ON orders(user_id);
CREATE INDEX IF NOT EXISTS idx_order_created_at ON orders(created_at);
CREATE INDEX IF NOT EXISTS idx_order_user_id_status ON orders(user_id, status); -- Índice composto
- Índices para a tabela "order_items"
CREATE INDEX IF NOT EXISTS idx_order_items_order_id ON order_items(order_id);
CREATE INDEX IF NOT EXISTS idx_order_items_product_id ON order_items(product_id);
- Índices para a tabela "payment_methods"
CREATE INDEX IF NOT EXISTS idx_payment_methods_order_id ON payment_methods(order_id);
- Índices para a tabela "rewards"
CREATE INDEX IF NOT EXISTS idx_rewards_user_id ON rewards(user_id);
- Índices para a tabela "stock_history"
CREATE INDEX IF NOT EXISTS idx_stock_history_product_id ON stock_history(product_id);
CREATE INDEX IF NOT EXISTS idx_stock_history_sale_date_product_id ON stock_history(sale_date, product_id);
-
API Endpoints
-
Endpoints principais:<\br>
-
/api/users: Gerenciamento de usuários (criação, consulta).
-
/api/product: Gerenciamento de produtos (criação, consulta, atualização, remoção).
-
/api/orders: Gerenciamento de pedidos e itens do pedido.
- Sinta-se à vontade para contribuir! Abra issues, envie pull requests, e vamos melhorar o projeto juntos.
- Este projeto está licenciado sob a licença MIT.