73 lines
5.3 KiB
Markdown
73 lines
5.3 KiB
Markdown
# 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](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:
|
|
```bash
|
|
./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.
|