LevelEstate - Plataforma Imobiliária Gamificada
Plataforma imobiliária gamificada full-stack constituída por API ASP.NET Core 8 em C# com WebSockets, portal web em Angular 19 com pesquisa geográfica Mapbox, aplicação móvel Android nativa em Kotlin com Jetpack Compose, agendamento de tarefas Quartz.NET e pipelines CI/CD automatizadas no GitLab.
Gamificando o setor imobiliário e a interação agente-cliente.
Desenvolvida na unidade curricular de Laboratório de Desenvolvimento de Software (LDS) do Politécnico do Porto, a LevelEstate liga Agentes Imobiliários e Clientes ao introduzir mecânicas inovadoras de gamificação (rankings, pontos e medalhas/badges) para motivar o desempenho dos agentes.
A plataforma compreende três pilares de código: Backend REST & WebSockets em ASP.NET Core 8 (EF Core 9, SQL Server, tarefas Quartz.NET), Portal Web em Angular 19 (TailwindCSS 4, DaisyUI 5, Mapbox GL JS 3.16 para pesquisa por delimitação geográfica) e App Android Nativa em Kotlin (Jetpack Compose, Room SQLite local, Retrofit 2, Firebase Push).

Mockup das interfaces multiplataforma do LevelEstate destacando o portal web em Angular e a app móvel Android
O Problema & Desafios Chave
As plataformas imobiliárias tradicionais carecem de mecanismos interativos de incentivo para os agentes e sofrem de lentidão na comunicação cliente-agente e filtros de pesquisa rígidos.
O LevelEstate resolve este desafio ao integrar comunicação bidirecional em tempo real por WebSockets, filtros geográficos por Bounding Box em mapa interativo, consolidação automática de pontos e uma experiência móvel nativa de alto desempenho.
- Implementar endpoints WebSockets nativos em ASP.NET Core 8 (/ws/chat, /ws/chatHistory, /ws/notifications) para mensagens instantâneas sem latência
- Configurar tarefas Quartz.NET em segundo plano (ConvertPointsJob, BadgeAssignmentJob, CreateRankingJob) para atribuição diária de pontos e rankings mensais
- Integrar Mapbox GL JS e Turf.js no Angular 19 para cálculo de áreas e pesquisas delimitadas por Bounding Box no mapa
- Desenvolver a aplicação Android nativa em Kotlin com Jetpack Compose, armazenamento offline Room SQLite e notificações Push via Firebase FCM
- Automatizar a pipeline CI/CD no GitLab executando testes unitários em xUnit, testes de integração Postman/Newman, testes E2E em Selenium e cobertura JaCoCo
Arquitetura & Decisões Técnicas
Arquitetura orientada a domínios em camadas com API REST e WebSockets em ASP.NET Core 8, portal Web desacoplado em Angular 19, aplicação Android nativa em Kotlin e base de dados SQL Server.
- Arquitetura de monólito modular bem estruturado por domínios garante transações atómicas no SQL Server e fácil manutenção
- Comunicação por WebSockets elimina overhead de polling HTTP para chat e notificações ao vivo
- Cliente Android nativo oferece excelente desempenho com renderização declarativa em Jetpack Compose e suporte offline com Room DB
Stack Tecnológica & Infraestrutura
Diagramas e Interfaces do Projeto

Mockup das interfaces multiplataforma do LevelEstate destacando o portal web em Angular e a app móvel Android

Diagrama de classes de entidades do domínio cobrindo Imóveis, Utilizadores, Visitas, Chat e Gamificação

Diagrama da camada de serviços no backend com injeção de dependências e repositórios

Máquina de estados do ciclo de vida dos imóveis (Available, Unavailable, Sold, Leased, Archived)

Diagrama de sequência da comunicação em tempo real via WebSockets para chat e agendamento de visitas

Modelo Entidade-Relacionamento do esquema de base de dados SQL Server