Sistema completo para gerenciamento da producao cientifica dos Programas de Pos-Graduacao da Universidade de Mogi das Cruzes.
- ✅ Busca avancada multi-indice (Elasticsearch)
- ✅ Importacao automatica de curruculos Lattes
- ✅ Integracao com ORCID e OpenAlex
- ✅ Dashboard com metricas e graficos interativos
- ✅ Sistema de gestao de PPGs, pesquisadores e projetos
- ✅ Autenticacao segura com bcrypt
- ✅ Sessoes com timeout e regeneracao de ID
- ✅ Recuperacao de senha por email
- ✅ Troca de senha para usuarios logados
- ✅ Bloqueio automatico apos tentativas falhas
- ✅ Log de auditoria de logins
- ✅ Protecao contra brute force
- ✅ Politica de Privacidade (LGPD compliant)
- ✅ Termos de Uso
- ✅ Consentimento de cookies
- PHP 8.0+
- MySQL 5.7+ ou MariaDB 10.3+
- Elasticsearch 8.x
- Composer
- Node.js 16+ (para Cypress)
php-mysqli
php-pdo
php-mbstring
php-curl
php-json
php-xml
git clone https://github.com/Matheus904-12/Prodmais.git
cd Prodmaiscomposer installCrie o banco de dados:
CREATE DATABASE prodmais_umc CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Execute os schemas:
mysql -u root -p prodmais_umc < sql/schema.sql
mysql -u root -p prodmais_umc < sql/schema_auth.sqlCopie e edite o arquivo de configuracao:
cp config/config.example.php config/config.phpEdite config/config.php:
// Banco de dados
$db_host = 'localhost';
$db_name = 'prodmais_umc';
$db_user = 'seu_usuario';
$db_pass = 'sua_senha';
// Elasticsearch
$elasticsearch_host = 'localhost:9200';
// Email (para recuperacao de senha)
// Configure no php.ini ou use biblioteca como PHPMailer# Windows
.\start_elasticsearch.ps1
# Linux/Mac
./elasticsearch-8.10.0/bin/elasticsearchO usuario padrao e criado automaticamente:
- Username: admin
- Email: admin@umc.br
- Senha: Admin@2025
php -S localhost:8000 -t publicAcesse: http://localhost:8000
Os usuarios sao armazenados na tabela usuarios_admin com senhas criptografadas usando bcrypt.
Para criar novos usuarios via SQL:
INSERT INTO usuarios_admin (username, email, password_hash, nome_completo)
VALUES ('novo.usuario', 'usuario@umc.br', '$2y$10$...', 'Nome Completo');Para gerar hash bcrypt em PHP:
$hash = password_hash('SuaSenha@123', PASSWORD_BCRYPT);O sistema envia emails automaticamente para recuperacao de senha:
- Usuario solicita recuperacao em
/esqueci-senha.php - Sistema gera token seguro (validade: 1 hora)
- Email e enviado com link de redefinicao
- Usuario redefine senha em
/redefinir-senha.php?token=...
Configurar email no servidor:
Edite php.ini:
[mail function]
SMTP = smtp.seu-servidor.com
smtp_port = 587
sendmail_from = noreply@umc.brOu use PHPMailer para SMTP autenticado.
Configuracoes automaticas:
- HttpOnly cookies (protecao XSS)
- SameSite=Strict (protecao CSRF)
- Timeout de inatividade: 2 horas
- Regeneracao de ID a cada 30 minutos
- Bloqueio apos 5 tentativas falhas (15 minutos)
Todos os logins sao registrados em log_login:
- Usuario, IP, User-Agent
- Sucesso/Falha
- Motivo da falha
- Timestamp
O sistema usa 3 indices:
producoes_umc- Producoes cientificascvs_umc- Curriculos Lattesprojetos_umc- Projetos de pesquisa
php bin/indexer.php /caminho/para/lattes_xml- Framework: Bootstrap 5.3
- Icones: Font Awesome 6.4
- Fonte: Inter (Google Fonts)
- Tema: Blue gradient (#1a56db → #0369a1 → #0ea5e9)
/index_umc.php- Busca principal/pesquisadores.php- Listagem de pesquisadores/ppgs.php- Programas de pos-graduacao/projetos.php- Projetos de pesquisa/dashboard.php- Dashboard admin/admin.php- Painel administrativo
Execute testes Cypress:
npx cypress openExecute periodicamente:
CALL limpar_tokens_expirados();Ou configure um cron job:
# Diariamente as 2h
0 2 * * * mysql -u root -p prodmais_umc -e "CALL limpar_tokens_expirados();"mysqldump -u root -p prodmais_umc > backup_$(date +%Y%m%d).sqlProdmais/
├── bin/ # Scripts utilitarios
├── config/ # Configuracoes
├── data/ # Dados e uploads
│ ├── backups/
│ ├── cache/
│ ├── lattes_xml/
│ └── uploads/
├── docs/ # Documentacao
├── public/ # Paginas publicas (document root)
├── sql/ # Schemas SQL
├── src/ # Classes PHP
└── vendor/ # Dependencias Composer
- DEPLOY_RESUMO.md - 📊 Visao geral e comparacao de opcoes
- DEPLOY_DEMO.md - 🎯 Deploy para demonstracao (Railway, 7 dias)
- DEPLOY_LOCAWEB.md - 💼 Deploy para producao (Locaweb)
# Preparar projeto para deploy
.\prepare-deploy.ps1
# Escolha:
# 1. Demonstracao (Railway/Render)
# 2. Producao (Locaweb)
# 3. Docker Local- Railway.app (~$5 por 7 dias) ⭐ RECOMENDADO
- Render.com (free tier limitado)
- DigitalOcean ($200 credito trial)
Inclui: PHP + MySQL + Elasticsearch + Kibana
Opcao 1: Locaweb + Elastic Cloud
- Locaweb: R$ 59,90/mes (PHP + MySQL)
- Elastic Cloud:
$95/mes (~R$ 475) - Total: ~R$ 535/mes
Opcao 2: Locaweb + VPS (Economica)
- Locaweb: R$ 59,90/mes (PHP + MySQL)
- DigitalOcean VPS:
$18/mes (~R$ 90) - Total: ~R$ 150/mes
# Desenvolvimento local
docker-compose up -d
# Acessar
http://localhost:8080
# Expor publicamente (ngrok)
ngrok http 8080- Fork o projeto
- Crie uma branch (
git checkout -b feature/NovaFuncionalidade) - Commit suas mudancas (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/NovaFuncionalidade) - Abra um Pull Request
Sistema desenvolvido para a Universidade de Mogi das Cruzes - PIVIC 2025
- Matheus Lucindo - Desenvolvimento principal
- Orientacao: Prof. Dr. [Nome]
- Email: prodmais@umc.br
- DPO: dpo@umc.br
- Telefone: (11) 4798-7000