EasyRent

�� EasyRent - Sistema Completo para Locadora de Carros

Universidade: Universidade do Vale do Itajaí (UNIVALI)
Curso: Análise e Desenvolvimento de Sistemas
Disciplina: Software Design
Professor: Maurício Pasetto de Freitas, MSc.


📌 Visão Geral

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.


🏗️ Arquitetura

Frontend

Backend


🛠️ Funcionalidades Implementadas

Frontend React

Backend API

Banco de Dados


📁 Estrutura do Projeto

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

🚀 Como Executar

Pré-requisitos

1. Clonar o Repositório

git clone <url-do-repositorio>
cd EasyRent

2. Configurar Variáveis de Ambiente

# 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

3. Desenvolvimento Local (Recomendado)

Scripts de Desenvolvimento

# 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

Scripts do Backend

# Entrar no diretório do backend
cd backend

# Iniciar em desenvolvimento
./start.dev.sh

# Testar endpoints
./test.dev.sh

4. Executar com Docker Compose

# Construir e executar todos os serviços
docker-compose up --build

# Em background
docker-compose up -d --build

5. Executar em Desenvolvimento Manual

Backend:

cd backend
npm install
npm run db:generate
npm run dev

Frontend:

cd frontend
npm install
npm run dev

🌐 Endpoints da API

Autenticação

Usuários

Marcas

Modelos

Carros


🎨 Design System

Cores Principais

Componentes


🔒 Segurança


📊 Banco de Dados

Entidades Principais

  1. Usuario - Dados dos usuários do sistema
  2. Marca - Marcas dos veículos (Toyota, Honda, etc.)
  3. Modelo - Modelos específicos (Corolla, Civic, etc.)
  4. Carro - Veículos individuais para locação
  5. Locacao - Registros de locações realizadas

Relacionamentos


🚀 Deploy

O sistema está preparado para deploy no Railway com:


🤝 Contribuição

Este é um projeto acadêmico, mas sugestões e melhorias são bem-vindas através de issues e pull requests.


📄 Licença

Projeto desenvolvido para fins acadêmicos - UNIVALI 2025