- Introdução
- Visão Geral
- Tecnologias Utilizadas
- Arquitetura
- Entidades Principais
- Funcionalidades
- Como Executar
- Documentação da API
- Seeding de Dados
- Testes
- Projeto Acadêmico
- Créditos
- Licença
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.
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.
- 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
- 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
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/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
- Nome, email, telefone e senha
- Role dentro do sistema (Cliente, Gerente, Suporte)
- Data de registro
- Nome e descrição
- Imagem do pacote
- Lista de componentes inclusos
- Valor da locação
- Quantidade disponível
- Informações de entrega para clientes
- Múltiplos endereços por cliente
- 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
- Avaliações e comentários de clientes
- Vínculo com reservas
- Login com JWT
- Três roles de usuário: Cliente, Gerente, Suporte
- Proteção de rotas baseada em autenticação
- Criar, ler, atualizar e deletar clientes
- Validação de email e telefone únicos
- Visualizar pacotes disponíveis
- Upload de imagens de produtos
- Controle de quantidade em estoque
- Criar novas reservas
- Confirmar entrega e coleta com códigos
- Cancelar reservas
- Acompanhar status das reservas
- Histórico de reservas do cliente
- Gerenciar múltiplos endereços por cliente
- Atualizar informações de entrega
- Deixar avaliações sobre reservas
- Visualizar comentários de clientes
- Relatório de reservas por período
- Relatório financeiro com receitas
- Node.js 18+
- MongoDB local ou remoto (configurado via .env)
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 startcd 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:serveA 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.
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 unitários e de integração com Jest
- Mock de banco de dados com MongoDB Memory Server
- Supertest para testes de API
- Testes E2E com Playwright
- Suporte a modo headless, UI interativo e relatórios
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
Este projeto foi idealizado e desenvolvido por meio do esforço conjunto de:
- Erick Martins Silva;
- Gabriel Centeio Freitas;
- Gabriel Barretto Galdino dos Santos;
- Guilherme Barboza Araujo de Almeida;
- Matheus Cunha Schwab.
Este projeto está sob a licença ISC (Internet Software Consortium).

