Files
GestorCondominio/RELATORIO_TECNICO.md
2026-05-06 12:43:37 +01:00

5.3 KiB

Relatório Técnico - MyCondominium

1. Visão Geral do Projeto

O MyCondominium é uma aplicação web moderna dedicada à gestão de condomínios. Permite uma interação contínua entre administradores e moradores, fornecendo ferramentas para gestão de quotas, ocorrências de manutenção, reservas de espaços comuns, faturação e comunicação em tempo real (chat privado, global e em grupo).


2. Arquitetura de Código e Tecnologias

A aplicação foi desenvolvida focada na simplicidade de implementação e execução, dispensando a necessidade de servidores complexos (arquitetura Serverless) e processos de build pesados.

Tecnologias Utilizadas:

  • HTML5 & CSS3: Estrutura base e definições globais.
  • JavaScript (React standalone): O coração da aplicação (localizado no ficheiro index.html). O uso de React importado diretamente pelo browser (esm.sh/react) juntamente com o compilador Babel (@babel/standalone) permite criar componentes interativos, gerir estados (useState, useEffect) de forma reativa sem necessitar de instalar Node.js ou usar ferramentas como Vite/Webpack no ambiente de produção final.
  • Tailwind CSS (via CDN): Utilizado para o design visual, garantindo uma interface bonita, responsiva (adaptada a telemóveis) e com suporte automático para Dark Mode (Modo Escuro).
  • Lucide-React: Biblioteca de ícones moderna utilizada ao longo de toda a interface.
  • PWA (Progressive Web App): A aplicação contém um ficheiro manifest.json e configurações de theme-color, permitindo que os utilizadores a "instalem" nos seus telemóveis como se fosse uma aplicação nativa.

3. Base de Dados (Backend)

O projeto não tem um servidor backend tradicional; em vez disso, utiliza a infraestrutura segura e em tempo real da Google (Firebase).

3.1. Autenticação (Firebase Auth)

Gere os logins e registos. Garante que apenas utilizadores validados acedem à plataforma.

3.2. Firebase Realtime Database

É uma base de dados NoSQL (baseada em documentos JSON) que envia atualizações para todos os utilizadores no exato momento em que algo muda, sem precisarem de fazer refresh à página.

Estrutura da Base de Dados (Nós Principais):

  1. condominos/: Guarda a lista de moradores, informações de contacto (NIF, Telemóvel), número da fração e o estatuto de aprovação (pendente vs aprovado).
  2. financas/: Registo contabilístico do condomínio (despesas como "Limpeza" e receitas como "Quotas").
  3. manutencao/: Pedidos de reparação reportados pelos moradores, com prioridade, localização e estado ("Resolvido", "Em Progresso").
  4. reservas/: Calendário de ocupação dos espaços comuns (Salão de Festas, Ginásio, etc.).
  5. faturacao/ e faturas/: Registo e emissão de recibos e avisos de cobrança gerados pelo sistema.
  6. notificacoes/: Sistema de alertas (dividido entre pastas admin e ID_do_morador) para avisar o utilizador de ações pendentes ou sucessos.
  7. mural_mensagens/: Histórico do chat "Fórum Geral" onde todos os moradores interagem.
  8. mensagens_privadas/: Canais de comunicação 1-para-1. O ID do caminho é gerado combinando os IDs dos dois utilizadores.
  9. grupos_chat/: Contém as definições dos grupos criados (Nome do grupo, lista de IDs de membros autorizados e quem o criou).
  10. mensagens_grupo/: Mensagens restritas aos grupos de chat criados.

4. Publicação e Alojamento (Hosting)

A aplicação está hospedada no Firebase Hosting, uma rede de distribuição global (CDN) ultrarrápida.

  • URL Oficial Atual: https://mycondominium-web.web.app
  • Configuração de Segurança e Performance (firebase.json):
    • Cache-Control: Os recursos estáticos têm instruções para ficar na cache dos browsers durante 1 ano, permitindo que a app carregue quase instantaneamente após a primeira visita.
    • Rewrites (SPA): Qualquer URL acedido é reencaminhado para o index.html. Isto previne que ocorra um Erro 404 se um utilizador fizer "Refresh" no browser.

5. Como Fazer Atualizações (Guia Passo-a-Passo)

Se quiser editar o código e publicar uma nova versão, o processo é o seguinte:

  1. Editar Localmente: Abra os seus ficheiros (index.html, style.css, etc.) no seu editor de código (como o VS Code) e faça as modificações desejadas. Pode testar abrindo o index.html no seu browser localmente.
  2. Abrir o Terminal: No seu Mac, abra o terminal e navegue para a pasta do projeto (cd /Users/230414/GestorCondominio).
  3. Fazer o Deploy: Execute o comando que envia os ficheiros novos para o servidor:
    ./firebase deploy --only hosting
    
  4. Verificar: Aguarde que o terminal diga Deploy complete!. A partir desse segundo, a alteração está disponível mundialmente no link do projeto.

6. Conclusão

A plataforma está otimizada para ser expansível, rápida e orientada ao "Real-time". A eliminação da barreira de reloads de página cria a sensação de uma aplicação fluida. Toda a lógica condicional está bem contida dentro da função componente App() em React, com validações sólidas como as de NIF e Cartão de Cidadão isoladas em funções utilitárias.