O Reno é uma plataforma full-stack de marketplace especializada na compra, venda e busca de terrenos e propriedades rurais. O projeto foca em fornecer uma experiência rica em geolocalização, permitindo que os utilizadores explorem propriedades através de mapas interativos e giram os seus próprios anúncios de forma intuitiva.
- Framework:
Next.js(App Router) comTypeScript. - Frontend:
React,Tailwind CSSpara estilização responsiva eFramer Motionpara animações. - Backend as a Service:
Firebase(Firestore para base de dados, Auth para autenticação e Storage para imagens). - Mapas:
Leafletcom integração de camadas de satélite da Esri e Google Streets. - Validação de Dados:
Zodpara esquemas de dados rigorosos e segurança em formulários. - Gestão de Estado:
React Context APIpara autenticação, perfil de utilizador e busca global. - UI/UX:
Swiperpara galerias de imagens,Sonnerpara notificações eReact Icons.
- 📍 Exploração por Mapa: Visualização interativa de terrenos utilizando Leaflet, com marcadores dinâmicos que mostram preço e detalhes ao clicar.
- 🖼️ Gestão de Anúncios: Sistema completo de CRUD para anúncios, incluindo upload de múltiplas imagens com funcionalidade de drag-and-drop.
- 🔍 Busca Avançada: Filtros inteligentes por títulos, características (energia, água, topografia) e localização.
- 👤 Perfis de Utilizador: Sistema de perfis com "slugs" personalizados e verificação de vendedores.
- ❤️ Interação Social: Funcionalidade de "curtir" anúncios e guardar propriedades favoritas no perfil, utilizando transações do Firestore para garantir a consistência.
- 📐 Conversão Automática: Conversão inteligente de unidades de medida entre hectares, acres e metros quadrados.
- Arquitetura Baseada em Contexto: Centralização da lógica de autenticação e busca para garantir que o estado da aplicação seja consistente em diferentes rotas.
- Otimização de Performance: Uso de skeletons de carregamento para melhorar a percepção de performance (Lighthouse/Web Vitals).
- Tratamento de Erros: Sistema personalizado de tradução de erros do Firebase para garantir uma comunicação clara com o utilizador em português.
- Segurança de Dados: Implementação de
writeBatcherunTransactionno Firestore para garantir que operações complexas de escrita sejam atómicas.
src/
├── components/ # Componentes reutilizáveis (Layout, Feed, Modais)
├── context/ # Contextos de Autenticação, Perfil e Busca
├── config/ # Configurações do Firebase
├── utils/ # Esquemas Zod e funções auxiliares (Slug, Formatação)
└── app/ # Estrutura de rotas do Next.js
