Sistema simples, leve e eficiente para gerenciamento e publicação de Diários Oficiais municipais.
O DOECA foi desenvolvido para oferecer uma solução gratuita e de fácil manutenção para prefeituras e câmaras municipais que precisam dar transparência aos seus atos oficiais. O sistema conta com uma área pública de fácil leitura com busca textual avançada e um painel administrativo seguro para gestão de edições, usuários e métricas de acesso.
Esta versão traz ferramentas essenciais para a implantação do sistema em órgãos que já possuem um histórico de publicações:
- 📦 Central de Migração (Importação em Lote): Três novas ferramentas para carregar acervos antigos (legado):
- Via CSV: Importação estruturada usando planilha de dados.
- Automática: Reconhecimento baseado no nome do arquivo (
AAAA-MM-DD__EDICAO.pdf). - Inteligente (OCR): O sistema lê o cabeçalho dos PDFs para identificar a Data e o Número da Edição automaticamente, mesmo em arquivos com nomes aleatórios.
- 🔄 Backup e Portabilidade: Módulo de exportação que gera um arquivo
.ZIPcom todo o acervo. O sistema renomeia os arquivos para um padrão legível e gera um índice CSV automaticamente, facilitando migrações futuras. - 📊 Dashboard Gerencial: Acompanhamento visual de visitas, downloads e termos mais pesquisados com geração de relatório em PDF.
- 🔍 Busca Full-Text (OCR/Extração): O sistema lê automaticamente o texto dos PDFs no upload, permitindo buscas precisas dentro do conteúdo.
- 📂 Armazenamento Inteligente: Arquivos salvos em subpastas (
uploads/ANO/MES), garantindo performance.
- Busca Inteligente: Barra de pesquisa estilo "Google" que encontra termos dentro dos PDFs e nos metadados.
- Listagem Otimizada: Exibição clara das edições recentes.
- Visualizador Integrado: Leitura do PDF sem sair do site (layout responsivo).
- Download Seguro: Botão de download protegido via proxy.
- Autenticação segura com criptografia (Bcrypt).
- Ferramentas: Hub central para importação de legado e exportação de backups.
- Dashboard: Gráficos de acessos, downloads e ranking de pesquisas.
- Gestão de Edições: Upload, exclusão e visualização.
- Gestão de Usuários: Cadastro com níveis (Admin/Editor).
- Auditoria: Histórico visual (timeline) de todas as alterações.
- Segurança: Proteção do login com rate limit e Cloudflare Turnstile.
Para rodar o DOECA, você precisará de um servidor web básico com suporte a PHP.
- PHP: Versão 7.4 ou superior (Recomendado 8.0+).
- Banco de Dados: MySQL ou MariaDB.
- Servidor Web: Apache (Recomendado) ou Nginx.
- Gerenciador de Dependências: Composer (para instalar o leitor de PDF).
- Extensões PHP:
pdo_mysql,mbstring.
https://github.com/adrianolerner/doeca-docker/
📦 Instalação via docker (usando imagem, método mais simples) - Verificar o funcionamento antes de colocar em produção:
https://hub.docker.com/r/albiesek/doeca
Siga os passos abaixo para colocar o sistema no ar:
Faça o download dos arquivos e coloque na pasta pública do seu servidor (ex: htdocs ou www).
git clone https://github.com/adrianolerner/doeca.git
cd doeca
O sistema utiliza a biblioteca smalot/pdfparser. Instale via Composer na raiz do projeto:
composer install
- Edite o arquivo
config.php. - Configure suas credenciais (você pode usar variáveis de ambiente aqui ao invés de manter as credenciais no arquivo, siga as instruções do arquivo config.php):
$host = 'localhost';
$db = 'doeca_db';
$user = 'root';
$pass = 'suasenha';
$cf_site_key = 'SEU_SITE_KEY_AQUI';
$cf_secret_key = 'SEU_SECRET_KEY_AQUI';4. Criar o Banco de Dados (O sistema na versão 0.5.2 possui script de criação do banco automáticamente, neste caso o passo 4 pode ser ignorado, caso não funcione, será necessário seguir este passo para criação)
Rode o script SQL completo no seu gerenciador de banco de dados:
CREATE DATABASE IF NOT EXISTS doeca_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE doeca_db;
-- Tabela de Edições
CREATE TABLE edicoes (
id INT AUTO_INCREMENT PRIMARY KEY,
numero_edicao VARCHAR(50) NOT NULL,
data_publicacao DATE NOT NULL,
arquivo_path VARCHAR(255) NOT NULL,
conteudo_indexado LONGTEXT,
visualizacoes INT DEFAULT 0,
criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
ALTER TABLE edicoes ADD FULLTEXT(conteudo_indexado);
-- Tabela de Usuários
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
senha VARCHAR(255) NOT NULL,
nivel ENUM('admin', 'editor') DEFAULT 'editor',
criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- Tabela de Logs
CREATE TABLE logs (
id INT AUTO_INCREMENT PRIMARY KEY,
usuario_nome VARCHAR(100),
acao VARCHAR(50),
alvo VARCHAR(255),
detalhes TEXT,
ip VARCHAR(45),
criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- Tabelas Dashboard
CREATE TABLE visitas_diarias (
data_visita DATE PRIMARY KEY,
quantidade INT DEFAULT 0
) ENGINE=InnoDB;
CREATE TABLE termos_pesquisados (
id INT AUTO_INCREMENT PRIMARY KEY,
termo VARCHAR(255) UNIQUE,
quantidade INT DEFAULT 1,
ultima_busca TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- Usuário Padrão (Senha: admin)
INSERT INTO usuarios (nome, email, senha, nivel) VALUES
('Administrador', 'admin@municipio.gov.br', '$2y$10$OSzVz6E6vdRVzhZW3jzS7u9DIJgt/s9MxoW6pBILcGu7JatFcCZJm', 'admin');
Dê permissão de escrita nas pastas ("sudo chown -R www-data:www-data" ou equivalente e "sudo chmod 775 -R"):
uploads/importacao/(se for usar a ferramenta de importação em lote)
Acesse o novo sistema em:
- http://SERVIDOR/doeca/
- Usuário e Senha Padrão: admin@municipio.gov.br / admin
OBS.: O sistema de login usa o captcha do Cloudflare, o Turnstile, é necessário configurar o mesmo no arquivo config.php, você pode criar uma conta gratuita e usar em até 10 sites sem custos. Lembrando que para funcionar é necesssário ter um domínio válido e estar corretamente apontado para este servidor, caso contrário, será impossibilitado de fazer login.
/doeca
├── admin/
│ ├── index.php # Lista de Edições
│ ├── dashboard.php # Gráficos e Relatórios
│ ├── ferramentas.php # (Novo) Hub de Importação/Exportação
│ ├── importar.php # Script Importação Automática
│ ├── importar_csv.php # Script Importação via CSV
│ ├── importar_inteligente.php # Script Importação via OCR (Cabeçalho)
│ ├── exportar.php # Script Backup ZIP
│ ├── usuarios.php # Gestão de Usuários
│ ├── historico.php # Auditoria
│ ├── ... # Outros arquivos do admin
├── assets/ # CSS/JS
├── importacao/ # Pasta temporária para carga de arquivos
├── uploads/ # Armazenamento oficial (Protegido)
├── vendor/ # Dependências (Composer)
├── arquivo.php # Proxy de download
├── config.php # Conexão DB
├── index.php # Área Pública
└── README.md # Documentação
- Faça um Fork.
- Crie uma Branch (
git checkout -b feature/NovaFeature). - Commit (
git commit -m 'Nova feature'). - Push (
git push origin feature/NovaFeature). - Pull Request.
Licença MIT. Livre para uso em órgãos públicos.