Skip to content

jhonnylucius/sacolaonline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 

Repository files navigation

Trabalho de Extensão da Faculdade - Curso de ADS - Análise e Desenvolvimento de Sistemas


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.

Sacolão Online - README

Projeto de Extensão da Faculdade - Curso de ADS

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


Tecnologias Utilizadas:

  • 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

Pré-requisitos

  • Node.js (versão 22 ou superior)
  • Yarn
  • Java JDK 17+
  • Spring Boot
  • OpenSSL

Setup do Projeto

Tecnologias e Ferramentas

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 Node.js: Plataforma JavaScript para o backend.
  • React React: Biblioteca para construir interfaces de usuário no frontend.
  • Spring Boot Spring Boot: Framework Java para o backend.
  • Yarn Yarn: Gerenciador de pacotes JavaScript.
  • OpenSSL OpenSSL: Biblioteca para criptografia utilizada no Node.js.

Soluções de Erro

Caso você encontre o erro ERR_OSSL_EVP_UNSUPPORTED relacionado ao OpenSSL, execute o seguinte comando para usar a flag de openssl-legacy-provider:


export NODE_OPTIONS=--openssl-legacy-provider

Para usuários Windows:

set NODE_OPTIONS=--openssl-legacy-provider

Atualizando dependências e ferramentas

Caso precise atualizar as dependências e garantir que tudo está na versão mais recente, utilize os comandos abaixo:

  • Atualizar pacotes do frontend:

./mvnw clean install

  • Atualizar pacotes no backend (Java):

./mvnw clean install

onfiguração do Projeto

  1. Configuração do Frontend (React)

yarn install yarn start

O frontend será iniciado em http://localhost:3000.

  1. Configuração do Backend (Spring Boot)

./mvnw spring-boot:run

O backend será iniciado em http://localhost:8080.

Migrações do Banco de Dados

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.

Contribuição

  • Sinta-se à vontade para contribuir! Abra issues, envie pull requests, e vamos melhorar o projeto juntos.

Licença

  • Este projeto está licenciado sob a licença MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published