diff --git a/.vscode/settings.json b/.vscode/settings.json index 6f3a291..f673a71 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "liveServer.settings.port": 5501 + "liveServer.settings.port": 5502 } \ No newline at end of file diff --git a/README.md b/README.md index 321c6b6..da444cc 100644 --- a/README.md +++ b/README.md @@ -1 +1,78 @@ -# GestorCondominio +# CondoMaster Pro + + + +O **CondoMaster Pro** é uma aplicação web moderna e responsiva (Single Page Application - SPA) desenvolvida para simplificar e digitalizar a gestão de condomínios. Desenhado a pensar tanto na entidade gestora (Administradores) como nos habitantes (Moradores), o sistema integra todas as comunicações, finanças e ocorrências do dia a dia. + +--- + +## ✨ Funcionalidades Principais + +### Acesso Baseado em Perfis (Role-Based Access Control) +* **🧑💻 Administradores (`admin`)**: Visão 360º. Podem gerir moradores, registar receitas e despesas globais, cobrar dívidas, enviar faturas manuais (com um clique) e alterar papéis de acesso ("promover" ou "despromover"). +* **🏠 Moradores (`morador`)**: Painel simplificado desenhado para transparência. Permite verificar as próprias quotas em atraso, reportar danos/anomalias (manutenção) e reservar espaços comuns. + +### 💰 Faturação e Gestão Financeira (Exclusivo Admins) +- Visão geral completa de Fluxo de Caixa (Despesas vs. Receitas). +- Emissão instantânea de recibos avulso. +- Notificações de dívidas encaminhadas com apenas um clique na tabela integrada de **Faturação**. + +### 📅 Gestão de Reservas +* **Lista e Mapa**: Sistema visual de reservas em três ginásios, salões de festas e parques de jogos. +* **Histórico Completo**: Página exclusiva para listagem de todas as reservas agendadas, acessível a todas as entidades. + +### 🛠️ Ocorrências e Manutenção +- Secção para os condóminos relatarem problemas no edifício (ex: candeeiros partidos, problemas de elevador) indicando o grau de severidade. +- Os administradores avaliam a prioridade, resolvem as ocorrências digitalmente e mantêm os residentes notificados do estado. + +### 🎨 Design Moderno & UI Inteligente +* Compatível com **Mobile e Desktop**. +* Inclui um switch suave para **Modo Escuro (Dark Mode)**, Modo Claro e deteção por Sistema, integrados perfeitamente no menu de perfil. +* Sistema de notificações do tipo Themed/Toasts para validações imediatas (Confirmações, Erros, Avisos). + +--- + +## 💻 Stack Tecnológica + +O projeto foi construído usando uma arquitetura modular moderna num formato de ficheiro de entrada principal que integra os ecossistemas: + +* **React**: Implementado diretamente do navegador (sem build step local). Geração de componentes declarativos (UI Dinâmica). +* **Tailwind CSS**: Carregado dinamicamente para aplicar estilos sofisticados e reativos, acelerando o desenvolvimento visual da interface. +* **Lucide React**: Biblioteca adotada inteiramente para a vasta panóplia de ícones (`lucide-react`). + +--- + +## 🚀 Como Iniciar (Quick Start) + +Visto que o projeto já traz toda a lógica baseada na Web injetada, não é precisa uma instalação exaustiva na máquina. + +1. **Baixar o Projeto:** + Basta que tenhas o ficheiro principal (geralmente `index.html`) e o ambiente disponível na mesma pasta (neste caso `GestorCondominio`). + +2. **Abrir a Aplicação:** + - Para pré-visualizar rapidamente a aplicação, podes apenas fazer duplo-clique no **`index.html`** para abrir o sistema num browser moderno. + - Alternativamente, podes hospedar este ficheiro num serviço de Live Server ou num host online (ex: Vercel, Netlify, Github Pages), não existindo configuração complexa. + +--- + +## 🔐 Credenciais de Base (Ambiente de Testes) + +Neste momento as credenciais estão pré-programadas para experimentação do comportamento do sistema: + +**Acesso de Administrador:** +- **Email:** `administradores@gmail.com` +- **Palavra-passe:** `admin123` + +**Acesso de Morador:** +- **Email:** `moradores@gmail.com` +- **Palavra-passe:** `moradores123` + +*(Nota: Alguns moradores registados na base de dados fictícia no "Estado" da app podem aceder através da palavra-passe padrão de morador ou usando o respetivo contacto telefónico)*. + +--- + +## 👨🔧 Desenvolvimento e Melhorias Mapeadas +* Ligação completa de base de dados escalável com a inicialização nativa contida do **Firebase**. +* Emissão e importação de documentos faturação automatizados PDF. + +***Desenvolvido para criar comunidades perfeitamente ligadas.*** diff --git a/index.html b/index.html index 2c37329..2d085bc 100644 --- a/index.html +++ b/index.html @@ -98,13 +98,13 @@ Dumbbell, PartyPopper, Trophy, Map, Calendar, MapPin, Info } from 'lucide-react'; - + const INITIAL_RESIDENTS = [ - { id: 1, unit: '1º Esq', name: 'Ana Silva', contact: '912 345 678', email: 'ana.silva@email.com', status: 'Pago', pending: 0 }, - { id: 2, unit: '1º Dto', name: 'Carlos Santos', contact: '965 432 109', email: 'carlos.s@email.com', status: 'Pendente', pending: 45.00 }, - { id: 3, unit: '2º Esq', name: 'Maria Pereira', contact: '933 221 110', email: 'maria.p@email.com', status: 'Pago', pending: 0 }, - { id: 4, unit: '2º Dto', name: 'João Ferreira', contact: '918 765 432', email: 'joao.f@email.com', status: 'Atrasado', pending: 135.00 }, - { id: 5, unit: '3º Esq', name: 'Sofia Costa', contact: '922 334 455', email: 'sofia.c@email.com', status: 'Pago', pending: 0 }, + { id: 1, unit: '1º Esq', name: 'Ana Silva', contact: '912 345 678', email: 'ana.silva@email.com', status: 'Pago', pending: 0, role: 'morador' }, + { id: 2, unit: '1º Dto', name: 'Carlos Santos', contact: '965 432 109', email: 'carlos.s@email.com', status: 'Pendente', pending: 45.00, role: 'morador' }, + { id: 3, unit: '2º Esq', name: 'Maria Pereira', contact: '933 221 110', email: 'maria.p@email.com', status: 'Pago', pending: 0, role: 'morador' }, + { id: 4, unit: '2º Dto', name: 'João Ferreira', contact: '918 765 432', email: 'joao.f@email.com', status: 'Atrasado', pending: 135.00, role: 'morador' }, + { id: 5, unit: '3º Esq', name: 'Sofia Costa', contact: '922 334 455', email: 'sofia.c@email.com', status: 'Pago', pending: 0, role: 'morador' }, ]; const INITIAL_FINANCES = [ @@ -258,12 +258,9 @@ const handleSubmit = (e) => { e.preventDefault(); - if (email === 'admin@gmail.com' && password === 'admin123') { - onLogin({ role: 'admin', email }); - } else if (email === 'moradores@gmail.com' && password === 'moradores123') { - onLogin({ role: 'resident', email }); - } else { - setError('Credenciais incorretas'); + const success = onLogin(email, password); + if (!success) { + setError('Email ou Palavra-passe incorreta'); } }; @@ -280,13 +277,13 @@