Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

815 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation


TypeScript React Tailwind CSS Vite

Node.js Express MongoDB

Jest Playwright

📋 Sumário

ℹ️ Introdução

TechVault é uma plataforma full-stack web para gerenciamento de um comércio fictício de aluguel de computadores e equipamentos similares, desenvolvida para a disciplina de Programação de Software para Web por parte da programação do curso de Bacharelado em Ciência da Computação oferecido pelo CEFET/RJ.

👁️ Visão Geral

TechVault é uma solução completa que permite gerenciar reservas de equipamentos de informática, com funcionalidades de cadastro de clientes, gestão de pacotes de produtos, controle de endereços de entrega, acompanhamento de reservas e geração de relatórios financeiros.

⚙️ Tecnologias Utilizadas

Backend

  • Runtime: Node.js com TypeScript
  • Framework: Express
  • Banco de Dados: MongoDB com Mongoose
  • Autenticação: JWT (JSON Web Tokens) com Passport
  • Validação: Zod
  • Documentação da API: OpenAPI/Swagger
  • Upload de Imagens: Multer
  • Testes: Jest com ts-jest
  • Deploy: Vercel

Frontend

  • Framework: React com TypeScript
  • Build Tool: Vite
  • Roteamento: React Router
  • Gerenciamento de Estado: Redux Toolkit com redux-persist
  • Formulários: React Hook Form com Zod
  • UI Components: shadcn/ui
  • Styling: Tailwind CSS
  • Testes end-to-end: Playwright
  • Deploy: Vercel

🛠️ Arquitetura

Backend (Node.js/Express)

backend/src/
├── routes/             # Endpoints da API
│   ├── auth/          # Autenticação e login
│   ├── cliente/       # Gerenciamento de clientes
│   ├── enderecos/     # Gerenciamento de endereços
│   ├── pacotes/       # Gerenciamento de pacotes/produtos
│   ├── reservas/      # Gerenciamento de reservas
│   ├── feedbacks/     # Gerenciamento de avaliações
│   └── relatorios/    # Relatórios financeiros e de reservas
├── models/            # Schemas MongoDB/Mongoose
├── middlewares/       # Middleware de autenticação e validação
├── utils/             # Funções utilitárias
├── scripts/           # Scripts de seeding e testes
└── types/             # Tipos TypeScript compartilhados

Frontend (React/Vite)

frontend/src/
├── pages/             # Páginas da aplicação
├── components/        # Componentes React reutilizáveis
├── redux/             # State management (slices)
├── hooks/             # Custom React hooks
├── lib/               # Utilidades e helpers
├── types/             # Tipos TypeScript
├── consts/            # Constantes da aplicação
└── api/               # Integração com backend

👤 Entidades Principais

Cliente

  • Nome, email, telefone e senha
  • Role dentro do sistema (Cliente, Gerente, Suporte)
  • Data de registro

Pacote

  • Nome e descrição
  • Imagem do pacote
  • Lista de componentes inclusos
  • Valor da locação
  • Quantidade disponível

Endereço

  • Informações de entrega para clientes
  • Múltiplos endereços por cliente

Reserva

  • Vinculação de cliente, pacote e endereço
  • Status (Confirmada, Cancelada, Concluída)
  • Datas de início e término
  • Códigos de entrega e coleta
  • Rastreamento de data de entrega/coleta

Feedback

  • Avaliações e comentários de clientes
  • Vínculo com reservas

✨ Funcionalidades

Autenticação e Autorização

  • Login com JWT
  • Três roles de usuário: Cliente, Gerente, Suporte
  • Proteção de rotas baseada em autenticação

Gerenciamento de Clientes

  • Criar, ler, atualizar e deletar clientes
  • Validação de email e telefone únicos

Catálogo de Pacotes

  • Visualizar pacotes disponíveis
  • Upload de imagens de produtos
  • Controle de quantidade em estoque

Reservas

  • Criar novas reservas
  • Confirmar entrega e coleta com códigos
  • Cancelar reservas
  • Acompanhar status das reservas
  • Histórico de reservas do cliente

Endereços

  • Gerenciar múltiplos endereços por cliente
  • Atualizar informações de entrega

Feedbacks

  • Deixar avaliações sobre reservas
  • Visualizar comentários de clientes

Relatórios

  • Relatório de reservas por período
  • Relatório financeiro com receitas

▶️ Como Executar

Pré-requisitos

  • Node.js 18+
  • MongoDB local ou remoto (configurado via .env)

Backend

cd backend

# Instalar dependências
npm install

# Configurar variáveis de ambiente
cp .env.example .env

# Executar em desenvolvimento
npm run dev

# Executar testes
npm test

# Gerar cobertura de testes
npm test:coverage

# Fazer build para produção
npm run build
npm start

Frontend

cd frontend

# Instalar dependências
npm install

# Executar em desenvolvimento
npm run dev

# Build para produção
npm run build

# Testes E2E
npm run test:e2e
npm run test:e2e:ui

# Gerar documentação JSDoc
npm run docs
npm run docs:serve

📝 Documentação da API

A documentação completa da API está disponível via Swagger/OpenAPI:

http://localhost:3000/docs

Os endpoints incluem validação automática de request/response e documentação interativa.

🌱 Seeding de Dados

Para popular o banco de dados com dados de teste:

cd backend
npm run seed          # Seed em banco de dados padrão
npm run seed:test     # Seed em banco de dados de testes

🧪 Testes

Backend

  • Testes unitários e de integração com Jest
  • Mock de banco de dados com MongoDB Memory Server
  • Supertest para testes de API

Frontend

  • Testes E2E com Playwright
  • Suporte a modo headless, UI interativo e relatórios

🎓 Projeto Acadêmico

Este projeto foi desenvolvido como parte da disciplina de Programação de Software para Web (PSW) do CEFET/RJ, demonstrando:

  • Arquitetura de desenvolvimento full-stack
  • Boas práticas de código
  • Separação de responsabilidades
  • Tipagem forte com TypeScript
  • Testes automatizados
  • Documentação de API
  • Autenticação e autorização
  • Gerenciamento de estado complexo

©️ Créditos

Este projeto foi idealizado e desenvolvido por meio do esforço conjunto de:

🧾 Licença

Este projeto está sob a licença ISC (Internet Software Consortium).

About

Projeto para a disciplina de PSW 25.2 - CEFET/RJ

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages