O FasTravel é um sistema Fullstack para venda de passagens aéreas, permitindo:
- Cadastro e gerenciamento de voos (admin)
- Listagem de voos disponíveis (usuário)
- Reserva de passagens com cálculo de preço total
- Testes automatizados de API e interface
O projeto é desenvolvido como parte de um trabalho acadêmico, dividido em três entregas:
- Planejamento – Tema, protótipos, backlog
- Implementação – Frontend + Backend
- Testes e Documentação – Jest, Postman, Selenium e Swagger
- Node.js + Express
- Sequelize (MySQL)
- Jest + Supertest (testes)
- React (Create React App)
- Tailwind CSS
- Postman (coleção de endpoints)
- Selenium IDE (testes de funcionalidade)
- Swagger (documentação da API)
/FasTravel
├─ backend
│ ├─ .env.example
│ ├─ README.md
│ ├─ package.json
│ └─ src/
│ ├─ app.js
│ ├─ config/
│ ├─ controllers/
│ ├─ middlewares/
│ ├─ migrations/
│ ├─ models/
│ └─ routers/
│
├─ frontend
│ ├─ package.json
│ ├─ public/
│ └─ src/
│ ├─ components/
│ ├─ context/
│ ├─ pages/
│ ├─ services/
│ ├─ App.jsx
│ └─ index.js
│
└─ README.md
- Node.js instalado
- MySQL rodando localmente ou em Docker
cd backend
npm install
Copy-Item .env.example .env
# Edite .env (PORT, credenciais do banco, CORS_ORIGIN)
notepad .env
npm run devObservações:
- Porta padrão: se
PORTnão for definida, o backend sobe em3001. - CORS: defina
CORS_ORIGIN(ex.:http://localhost:3000ou múltiplas origens separadas por vírgula) para outro ambiente. - Banco: em modo não-produção, o backend faz
sequelize.sync({ alter: true }), criando/ajustando as tabelas automaticamente (sem necessidade de rodar migrations manualmente para a demo).
cd frontend
npm install
Copy-Item .env.example .env
# Ajuste REACT_APP_API_URL para apontar para o backend
notepad .env
npm startO app sobe em http://localhost:3000.
Se estiver usando Tailwind, você pode rodar o watcher (opcional) em outro terminal:
cd frontend
npm run tailwind:buildO frontend usa variáveis REACT_APP_* (Create React App):
Frontend (frontend/.env.example):
REACT_APP_API_URL=http://localhost:3001
REACT_APP_HERO_IMAGE=
REACT_APP_ASSETS_BASE_URL=
Crie frontend/.env copiando do exemplo e ajuste os valores locais. O arquivo .env já está no .gitignore do frontend e não será commitado.
Backend: configure as credenciais do banco e a PORT no .env do backend (ver backend/.env.example). Você também pode ajustar CORS_ORIGIN para a URL do frontend no ambiente onde rodará.
- Troque os ícones em
frontend/public/:favicon.ico(ideal ter 16/32/48/64 dentro do .ico)logo192.pngelogo512.png(PWA)manifest.json(nome do app e ícones; pode usarpurpose: "any maskable")
- Navbar usa
/logo512.svge Footer usa/logo192.svgpor padrão (coloque os arquivos emfrontend/public). - Para usar imagens sem colocar arquivos no projeto, configure:
REACT_APP_HERO_IMAGEcom a URL do bannerREACT_APP_ASSETS_BASE_URL(CDN/bucket) para as imagens dos destinos
- A pasta
frontend/build/é gerada pelonpm run builde contém os artefatos estáticos de produção. Não edite manualmente, faça alterações emsrc/epublic/. - Para publicar, sirva a pasta
build/em um host estático (Nginx/Apache/S3/CloudFront, Netlify, etc.).
- [✅] Completar CRUD de usuários e voos (GET/PUT/DELETE)
- [✅] Proteger rotas sensíveis com JWT e rate limit
- [✅] Filtros/paginação em voos e reservas
- [✅] Testes (Jest + Supertest) e coleção Postman