Sistema de gestão de pessoas e relacionamentos para gabinetes de vereadores e pessoas públicas
- Sobre o Projeto
- Funcionalidades
- Tecnologias Utilizadas
- Arquitetura do Sistema
- Instalação e Configuração
- Estrutura do Projeto
- Guia de Uso
- Sistema de Permissões
- Segurança e LGPD
- Contribuição
- Licença
O PDR (Plataforma Digital de Relacionamento) é um sistema web moderno desenvolvido para auxiliar gabinetes de vereadores e pessoas públicas na gestão eficiente de relacionamentos com cidadãos, parceiros e colaboradores. A plataforma oferece ferramentas completas para cadastro, acompanhamento de interações, geração de relatórios e gestão de tarefas.
- Centralizar o relacionamento com cidadãos e stakeholders
- Organizar interações e atendimentos de forma estruturada
- Facilitar o acompanhamento de demandas e solicitações
- Gerar relatórios e análises para tomada de decisão
- Garantir conformidade com a LGPD (Lei Geral de Proteção de Dados)
- Métricas em tempo real de pessoas cadastradas
- Indicadores de interações pendentes e concluídas
- Gráficos de relacionamentos por tipo e região
- Visão geral das atividades recentes
- Cadastro completo de cidadãos com dados pessoais e endereço
- Categorização por tipo de relacionamento (eleitor, parceiro, colaborador, etc.)
- Busca avançada com múltiplos filtros
- Histórico completo de interações
- Conformidade LGPD com mascaramento de dados sensíveis
- Registro de atendimentos presenciais, telefônicos e digitais
- Acompanhamento de status (pendente, em andamento, concluído)
- Agendamento de reuniões e compromissos
- Histórico detalhado de todas as comunicações
- Cadastro de gabinetes com informações institucionais
- Gerenciamento de credenciais de acesso
- Controle de status (ativo, pendente, inativo)
- Auditoria completa de alterações
- Criação e atribuição de tarefas e atividades
- Categorização por tipo de atividade parlamentar
- Controle de prazos e prioridades
- Visualização em lista ou grid
- Acompanhamento de progresso
- Relatórios personalizáveis por período e critérios
- Exportação em múltiplos formatos
- Análises demográficas e geográficas
- Métricas de atendimento e produtividade
- Autenticação robusta com diferentes níveis de acesso
- Controle de permissões granular por funcionalidade
- Auditoria completa de ações do sistema
- Modo de manutenção para atualizações
- React 18 - Biblioteca para interfaces de usuário
- TypeScript - Tipagem estática para JavaScript
- Vite - Build tool e servidor de desenvolvimento
- React Router DOM - Roteamento de páginas
- Tailwind CSS - Framework CSS utilitário
- Radix UI - Componentes acessíveis e customizáveis
- Lucide React - Biblioteca de ícones
- React Hook Form - Gerenciamento de formulários
- Zod - Validação de esquemas TypeScript
- @hookform/resolvers - Integração entre React Hook Form e Zod
- date-fns - Manipulação de datas
- crypto-js - Criptografia e hashing
- clsx - Utilitário para classes CSS condicionais
- class-variance-authority - Variantes de componentes
- ESLint - Linting de código
- PostCSS - Processamento de CSS
- Autoprefixer - Prefixos CSS automáticos
- Component-Based Architecture - Componentes reutilizáveis e modulares
- Context API - Gerenciamento de estado global
- Service Layer - Camada de serviços para lógica de negócio
- Custom Hooks - Lógica reutilizável entre componentes
┌─────────────────────────────────────┐
│ Presentation Layer │
│ (Pages & Components) │
├─────────────────────────────────────┤
│ Context Layer │
│ (State Management) │
├─────────────────────────────────────┤
│ Service Layer │
│ (Business Logic) │
├─────────────────────────────────────┤
│ Utils Layer │
│ (Helpers & Utilities) │
└─────────────────────────────────────┘
- Node.js (versão 18 ou superior)
- npm ou yarn
- Git
-
Clone o repositório
git clone <url-do-repositorio> cd PDR-Versao2
-
Instale as dependências
npm install
-
Configure as variáveis de ambiente
cp .env.example .env # Edite o arquivo .env com suas configurações -
Execute o projeto em modo de desenvolvimento
npm run dev
-
Acesse a aplicação
http://localhost:5173
npm run dev- Inicia o servidor de desenvolvimentonpm run build- Gera build de produçãonpm run preview- Visualiza o build de produçãonpm run lint- Executa o linting do código
src/
├── components/ # Componentes reutilizáveis
│ ├── ui/ # Componentes base da interface
│ ├── cabinet-management/ # Componentes de gestão de gabinetes
│ ├── cabinet-registration/ # Componentes de cadastro
│ ├── interactions/ # Componentes de interações
│ ├── settings/ # Componentes de configurações
│ └── tasks/ # Componentes de tarefas
├── contexts/ # Contextos React (estado global)
│ ├── AuthContext.tsx
│ └── MaintenanceContext.tsx
├── pages/ # Páginas da aplicação
│ ├── DashboardPage.tsx
│ ├── PersonSearchPage.tsx
│ ├── CabinetManagementPage.tsx
│ ├── TaskManagementPage.tsx
│ └── ...
├── services/ # Camada de serviços
│ ├── authService.ts
│ ├── personService.ts
│ ├── auditService.ts
│ └── ...
├── types/ # Definições de tipos TypeScript
│ └── index.ts
├── utils/ # Utilitários e helpers
│ ├── validation.ts
│ └── lgpd.ts
└── lib/ # Configurações de bibliotecas
└── utils.ts
- Acesse a página inicial do sistema
- Clique em "Acessar Sistema"
- Faça login com suas credenciais
- Explore o dashboard para visão geral
- Navegue para "Buscar Pessoas"
- Clique em "Nova Pessoa"
- Preencha os dados obrigatórios
- Selecione o tipo de relacionamento
- Salve o cadastro
- Acesse o perfil da pessoa
- Clique em "Nova Interação"
- Selecione o tipo de interação
- Preencha os detalhes
- Defina status e agendamento
- Acesse "Gestão de Tarefas"
- Clique em "Nova Tarefa"
- Defina tipo de atividade
- Configure prazo e responsável
- Acompanhe o progresso
- Navegue para "Relatórios"
- Configure filtros desejados
- Visualize os dados
- Exporte se necessário
| Papel | Descrição | Permissões |
|---|---|---|
| Admin | Administrador do sistema | Acesso total, gestão de usuários, configurações |
| Chefe de Gabinete | Gestor do gabinete | Gestão completa do gabinete, relatórios |
| Assessor | Assessor parlamentar | Cadastro e interações, tarefas |
| Visualizador | Acesso somente leitura | Consulta de dados, relatórios básicos |
- Criação: Quem pode criar novos registros
- Edição: Quem pode modificar dados existentes
- Exclusão: Quem pode remover registros
- Exportação: Quem pode exportar dados
- Auditoria: Quem pode visualizar logs de sistema
- Mascaramento de dados sensíveis em listagens
- Controle de acesso baseado em permissões
- Auditoria completa de todas as ações
- Anonimização de dados quando necessário
- Autenticação com tokens JWT
- Validação rigorosa de entrada de dados
- Criptografia de dados sensíveis
- Logs de auditoria para rastreabilidade
- Sessões com timeout automático
Todas as ações são registradas incluindo:
- Criação, edição e exclusão de registros
- Acessos e consultas a dados
- Exportações e relatórios
- Login e logout de usuários
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Use TypeScript para tipagem estática
- Siga as convenções de nomenclatura estabelecidas
- Documente funções e componentes complexos
- Teste suas alterações antes de submeter
- Mantenha consistência com o estilo existente
type(scope): description
[optional body]
[optional footer]
Tipos: feat, fix, docs, style, refactor, test, chore
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Para suporte técnico ou dúvidas sobre o sistema:
- Documentação: Consulte este README e comentários no código
- Issues: Abra uma issue no repositório para bugs ou sugestões
- Contato: Entre em contato com a equipe de desenvolvimento
Desenvolvido com ❤️ para modernizar a gestão pública