Este projeto é um clone funcional do Airbnb, permitindo que usuários cadastrem acomodações, reservem estadias, filtrem locais por data e características, e realizem login com autenticação segura. O sistema oferece uma interface moderna, responsiva e interativa. O objetivo é aplicar boas práticas de engenharia de software com arquitetura MVC, React Router e TypeScript fullstack.
- frontend: React + TypeScript + React Router DOM v7 + TailwindCSS + Axios
- backend: Node.js + TypeScript + MVC + Express ou Fastify + MongoDB + Prisma + REST API
- deploy: Vercel (frontend) + Render (backend)
- database: MongoDB (principais entidades: User, Listing, Reservation, Conversation)
- autenticação: JWT + OAuth (Google)
- armazenamento de imagem: Cloudinary
- validação: Zod
- email: Nodemailer (confirmação e notificações)
- Cadastro e login com e-mail/senha ou Google OAuth
- Criar listagens de acomodações
- Visualizar listagens com filtros (local, preço, tipo, data, hóspedes)
- Reservar acomodações disponíveis
- Ver histórico de reservas
- Editar e deletar próprias acomodações
- Entrar em contato com o anfitrião (mensagens)
- Receber confirmação de reserva por e-mail
- Login persistente via token JWT + cookies
- Logout com limpeza de cookies
- Desempenho
- Tempo de resposta inferior a 2 segundos
- Suporte a 500 usuários simultâneos
- Usabilidade
- Layout moderno e limpo
- Responsivo (mobile, tablet e desktop)
- Figma como base de design
- Segurança
- Criptografia de senhas com bcrypt
- Validação de dados com Zod
- Proteção contra XSS e CSRF
- CORS configurado
- Confiabilidade
- Backup diário do banco
- Logs de erro e monitoramento
- Disponibilidade
- API e frontend disponíveis 24h
- Ambiente de staging para testes
- Prazos
- Semana 1: Setup backend MVC + autenticação
- Semana 2: Frontend com React Router + pages principais
- Semana 3: Integração frontend/backend + deploy
- Custos
- Cloudinary
- Render
- MongoDB Atlas
- Vercel
- Disponibilidade: 24h por dia
- Segurança: HTTPS obrigatório + headers configurados
- Compatível com dispositivos móveis, tablets e desktops
- Compatível com navegadores modernos (Chrome, Firefox, Safari)
- Todos os testes funcionais e visuais devem ser executados antes de publicação
- Imagens devem estar otimizadas via CDN
- Cookies seguros e expirando corretamente
- Backup e logging configurados no backend
- draw.io: Relacionamento de entidades (User, Listing, Reservation...)
- Usuário consegue se cadastrar, criar e reservar acomodações
- Frontend responsivo e funcional
- Backend estruturado com MVC
- Login persistente e logout funcional
- Integração entre frontend e backend testada
- Somente usuários autenticados podem criar reservas ou listagens
- Usuário só pode editar/deletar listagens que criou
- Não é permitido reservar acomodações com datas conflitantes
- Listagens só aparecem se estiverem ativas
- Reservas só são criadas se houver disponibilidade de datas
- Mensagens entre usuário e anfitrião devem ser salvas e exibidas corretamente