Universidade: Universidade do Vale do Itajaí (UNIVALI)
Curso: Análise e Desenvolvimento de Sistemas
Disciplina: Software Design
Professor: Maurício Pasetto de Freitas, MSc.
O EasyRent é um sistema completo de gestão para locadora de veículos, desenvolvido como projeto acadêmico da disciplina Software Design. O sistema foi migrado de HTML/CSS/JS para uma arquitetura moderna com React + TypeScript no frontend e Node.js + Express + Prisma no backend.
EasyRent/
├── frontend/ # Frontend React + TypeScript
│ ├── src/
│ │ ├── components/ # Componentes reutilizáveis
│ │ │ ├── ui/ # Componentes base (Button, Input, Card)
│ │ │ └── Header.tsx # Header da aplicação
│ │ ├── pages/ # Páginas da aplicação
│ │ │ ├── Home.tsx # Página inicial
│ │ │ ├── Login.tsx # Página de login
│ │ │ ├── Cadastro.tsx # Página de cadastro
│ │ │ ├── Locacao.tsx # Catálogo de veículos
│ │ │ └── Admin.tsx # Painel administrativo
│ │ ├── services/ # Serviços de API
│ │ ├── types/ # Tipos TypeScript
│ │ └── utils/ # Utilitários
│ ├── public/assets/ # Assets estáticos
│ ├── Dockerfile
│ └── nginx.conf
├── backend/ # Backend Node.js + Express
│ ├── src/
│ │ ├── routes/ # Rotas da API
│ │ │ ├── auth.ts # Autenticação
│ │ │ ├── usuario.ts # CRUD Usuários
│ │ │ ├── marca.ts # CRUD Marcas
│ │ │ ├── modelo.ts # CRUD Modelos
│ │ │ └── carro.ts # CRUD Carros
│ │ ├── middleware/ # Middlewares
│ │ │ └── auth.ts # Middleware JWT
│ │ ├── services/ # Serviços
│ │ │ └── prisma.ts # Cliente Prisma
│ │ └── index.ts # Servidor principal
│ ├── prisma/
│ │ └── schema.prisma # Esquema do banco
│ ├── Dockerfile
│ └── .env.example
├── docker-compose.yml # Orquestração dos serviços
├── .env.example # Variáveis de ambiente
└── README.md # Documentação
git clone <url-do-repositorio>
cd EasyRent
# Copiar arquivos de exemplo
cp .env.example .env
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.env
# Editar as variáveis conforme necessário
# Ver todos os comandos disponíveis
./dev.sh help
# Iniciar apenas backend
./dev.sh start
# Testar endpoints do backend
./dev.sh test
# Iniciar frontend
./dev.sh frontend
# Iniciar backend + frontend
./dev.sh full
# Parar todos os serviços
./dev.sh stop
# Deploy para Railway
./dev.sh deploy
# Entrar no diretório do backend
cd backend
# Iniciar em desenvolvimento
./start.dev.sh
# Testar endpoints
./test.dev.sh
# Construir e executar todos os serviços
docker-compose up --build
# Em background
docker-compose up -d --build
Backend:
cd backend
npm install
npm run db:generate
npm run dev
Frontend:
cd frontend
npm install
npm run dev
POST /auth/login
- Login de usuárioPOST /usuarios
- Criar usuárioGET /usuarios/profile
- Perfil do usuário autenticadoGET /usuarios
- Listar usuários (protegido)GET /marcas
- Listar marcasPOST /marcas
- Criar marca (protegido)PUT /marcas/:id
- Atualizar marca (protegido)DELETE /marcas/:id
- Deletar marca (protegido)GET /modelos
- Listar modelosGET /modelos/marca/:marcaId
- Modelos por marcaPOST /modelos
- Criar modelo (protegido)PUT /modelos/:id
- Atualizar modelo (protegido)DELETE /modelos/:id
- Deletar modelo (protegido)GET /carros
- Listar carrosGET /carros/:id
- Buscar carro por IDPOST /carros
- Criar carro (protegido)PUT /carros/:id
- Atualizar carro (protegido)DELETE /carros/:id
- Deletar carro (protegido)#2563eb
(Primary)#16a34a
(Success)#dc2626
(Danger)#6b7280
(Neutral)Marca
1:N Modelo
Modelo
1:N Carro
Usuario
1:N Locacao
Carro
1:N Locacao
O sistema está preparado para deploy no Railway com:
Este é um projeto acadêmico, mas sugestões e melhorias são bem-vindas através de issues e pull requests.
Projeto desenvolvido para fins acadêmicos - UNIVALI 2025