feat: Implementação completa do NoIdle - Cliente, Backend e Scripts
- Cliente Windows com modo silencioso e auto-start robusto - Backend Node.js + API REST - Frontend Next.js + Dashboard - Scripts PowerShell de configuração e diagnóstico - Documentação completa - Build scripts para Windows e Linux - Solução de auto-start após reinicialização Resolução do problema: Cliente não voltava ativo após reboot Solução: Registro do Windows + Task Scheduler + Modo silencioso
This commit is contained in:
332
README.md
Normal file
332
README.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# NoIdle - Sistema de Monitoramento de Atividades
|
||||
|
||||
> **Zero Idle, Maximum Productivity**
|
||||
|
||||
Sistema completo de monitoramento de atividades de usuários em tempo real, incluindo cliente Windows, backend Node.js e dashboard web.
|
||||
|
||||
---
|
||||
|
||||
## 📋 Sobre o Projeto
|
||||
|
||||
NoIdle é um sistema de monitoramento de produtividade que captura e registra:
|
||||
- ✅ Aplicativos ativos
|
||||
- ✅ Títulos de janelas
|
||||
- ✅ URLs navegadas (Chrome, Edge, Firefox)
|
||||
- ✅ Tempo ocioso
|
||||
- ✅ Eventos de logon/logoff
|
||||
- ✅ Heartbeat de dispositivos
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Arquitetura
|
||||
|
||||
```
|
||||
NoIdle/
|
||||
├── backend/ # API Node.js + Express + PostgreSQL
|
||||
├── frontend/ # Dashboard Next.js + React
|
||||
├── CLIENTE_CORRIGIDO.py # Cliente Windows (Python)
|
||||
└── scripts/ # Scripts PowerShell de configuração
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Componentes
|
||||
|
||||
### 1. Cliente Windows (`CLIENTE_CORRIGIDO.py`)
|
||||
|
||||
Cliente Python que roda em segundo plano nos computadores Windows:
|
||||
|
||||
**Recursos:**
|
||||
- ✅ Monitoramento de janelas ativas
|
||||
- ✅ Captura de URLs dos navegadores
|
||||
- ✅ Detecção de tempo ocioso
|
||||
- ✅ Auto-start após reinicialização
|
||||
- ✅ Modo silencioso (`--silent`)
|
||||
- ✅ System tray icon
|
||||
- ✅ Eventos de sessão (logon/logoff)
|
||||
|
||||
**Instalação:**
|
||||
```powershell
|
||||
# Ativar o cliente
|
||||
.\NoIdle.exe
|
||||
|
||||
# Modo silencioso (após ativação)
|
||||
.\NoIdle.exe --silent
|
||||
```
|
||||
|
||||
### 2. Backend (Node.js)
|
||||
|
||||
API REST que processa e armazena os dados.
|
||||
|
||||
**Tecnologias:**
|
||||
- Node.js + Express
|
||||
- PostgreSQL
|
||||
- PM2 (gerenciamento de processos)
|
||||
|
||||
**Endpoints:**
|
||||
- `POST /api/devices/activate` - Ativar dispositivo
|
||||
- `POST /api/devices/heartbeat` - Heartbeat
|
||||
- `POST /api/activity/log` - Registrar atividade
|
||||
- `POST /api/activity/session` - Eventos de sessão
|
||||
|
||||
### 3. Frontend (Next.js)
|
||||
|
||||
Dashboard web para visualização e gerenciamento.
|
||||
|
||||
**URL:** https://admin.noidle.tech
|
||||
|
||||
**Recursos:**
|
||||
- 📊 Dashboard de atividades em tempo real
|
||||
- 👥 Gerenciamento de usuários e dispositivos
|
||||
- 📈 Relatórios e estatísticas
|
||||
- 🔍 Histórico de navegação
|
||||
- ⏱️ Análise de tempo ocioso
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Problema Resolvido: Auto-Start
|
||||
|
||||
### ❌ Problema
|
||||
O cliente não iniciava automaticamente após reinicialização do Windows.
|
||||
|
||||
### ✅ Solução Implementada
|
||||
|
||||
**3 Camadas de Proteção:**
|
||||
1. **Registro do Windows** - Método primário
|
||||
2. **Task Scheduler** - Backup com auto-restart
|
||||
3. **Modo Silencioso** - Execução sem interface
|
||||
|
||||
**Scripts de Correção:**
|
||||
- `CONFIGURAR_AUTOSTART_NOIDLE.ps1` - Configurar auto-start
|
||||
- `VERIFICAR_E_CORRIGIR_NOIDLE.ps1` - Diagnóstico + correção automática
|
||||
|
||||
**Documentação:**
|
||||
- `LEIA_PRIMEIRO.md` - Guia rápido
|
||||
- `SOLUCAO_AUTOSTART.md` - Documentação técnica completa
|
||||
|
||||
---
|
||||
|
||||
## 📦 Compilação do Cliente
|
||||
|
||||
### Windows (Recomendado)
|
||||
|
||||
```powershell
|
||||
# Usando script automatizado
|
||||
.\BUILD_NOIDLE.ps1
|
||||
|
||||
# Ou manualmente
|
||||
pip install pyinstaller pywin32 psutil requests pystray pillow schedule
|
||||
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py
|
||||
```
|
||||
|
||||
### Linux (Docker)
|
||||
|
||||
```bash
|
||||
# Usando script automatizado
|
||||
./BUILD_LINUX.sh
|
||||
|
||||
# Ou manualmente
|
||||
docker run --rm -v $(pwd):/src cdrx/pyinstaller-windows:python3 \
|
||||
/bin/bash -c "pip install pywin32 psutil requests pystray pillow schedule && \
|
||||
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py"
|
||||
```
|
||||
|
||||
**Documentação:** Ver `BUILD_CLIENTE.md` para detalhes completos.
|
||||
|
||||
---
|
||||
|
||||
## 📚 Documentação
|
||||
|
||||
### Para Usuários Finais
|
||||
- **`LEIA_PRIMEIRO.md`** - Comece por aqui!
|
||||
- **`GUIA_RAPIDO_AUTOSTART.md`** - Guia rápido de resolução de problemas
|
||||
|
||||
### Para Suporte Técnico
|
||||
- **`SOLUCAO_AUTOSTART.md`** - Troubleshooting completo
|
||||
- **`VERIFICAR_E_CORRIGIR_NOIDLE.ps1`** - Script de diagnóstico
|
||||
|
||||
### Para Desenvolvedores
|
||||
- **`BUILD_CLIENTE.md`** - Como compilar o cliente
|
||||
- **`COMANDOS_BUILD.md`** - Quick reference de comandos
|
||||
- **`README_SOLUCAO_AUTOSTART.md`** - Visão geral da solução
|
||||
- **`CLIENT_CONFIG.md`** - Configuração da API
|
||||
- **`ESPECIFICACAO_CLIENTE_WINDOWS.md`** - Especificação técnica
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### 1. Backend
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 2. Frontend
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 3. Cliente Windows
|
||||
|
||||
```powershell
|
||||
# Compilar
|
||||
.\BUILD_NOIDLE.ps1
|
||||
|
||||
# Testar
|
||||
.\dist\NoIdle.exe
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Configuração
|
||||
|
||||
### Backend (.env)
|
||||
```env
|
||||
DATABASE_URL=postgresql://user:pass@localhost:5432/noidle
|
||||
PORT=3000
|
||||
NODE_ENV=production
|
||||
```
|
||||
|
||||
### Cliente (config.json)
|
||||
```json
|
||||
{
|
||||
"device_id": "DEV-XXXX",
|
||||
"api_url": "https://admin.noidle.tech/api"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Estrutura do Banco de Dados
|
||||
|
||||
```sql
|
||||
-- Principais tabelas
|
||||
devices -- Dispositivos cadastrados
|
||||
activities -- Atividades registradas
|
||||
browsing_history -- Histórico de navegação
|
||||
session_events -- Eventos de logon/logoff
|
||||
users -- Usuários do sistema
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Scripts PowerShell
|
||||
|
||||
### Configuração
|
||||
- **`INSTALADOR_POWERSHELL.ps1`** - Instalador completo
|
||||
- **`CONFIGURAR_AUTOSTART_NOIDLE.ps1`** - Configurar auto-start
|
||||
|
||||
### Diagnóstico
|
||||
- **`VERIFICAR_E_CORRIGIR_NOIDLE.ps1`** - Diagnóstico completo
|
||||
- **`DIAGNOSTICO_CLIENTE_WINDOWS.ps1`** - Diagnóstico detalhado
|
||||
- **`VERIFICAR_CLIENTE_SIMPLES.ps1`** - Verificação rápida
|
||||
|
||||
### Build
|
||||
- **`BUILD_NOIDLE.ps1`** - Build automatizado (Windows)
|
||||
- **`BUILD_LINUX.sh`** - Build automatizado (Linux)
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Testes
|
||||
|
||||
### Testar Cliente
|
||||
|
||||
```powershell
|
||||
# Iniciar em modo silencioso
|
||||
.\NoIdle.exe --silent
|
||||
|
||||
# Verificar processo
|
||||
Get-Process -Name "NoIdle"
|
||||
|
||||
# Verificar auto-start
|
||||
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "NoIdle"
|
||||
```
|
||||
|
||||
### Testar API
|
||||
|
||||
```bash
|
||||
# Heartbeat
|
||||
curl -X POST https://admin.noidle.tech/api/devices/heartbeat \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"device_id":"TEST"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📦 Distribuição
|
||||
|
||||
### Pacote Completo
|
||||
|
||||
```
|
||||
NoIdle-v1.0.zip
|
||||
├── NoIdle.exe
|
||||
├── CONFIGURAR_AUTOSTART_NOIDLE.ps1
|
||||
├── VERIFICAR_E_CORRIGIR_NOIDLE.ps1
|
||||
├── GUIA_RAPIDO_AUTOSTART.md
|
||||
└── LEIA_PRIMEIRO.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Changelog
|
||||
|
||||
### v1.0 (2025-11-16)
|
||||
- ✅ Cliente com modo silencioso
|
||||
- ✅ Auto-start robusto (Registry + Task Scheduler)
|
||||
- ✅ Scripts de diagnóstico e correção
|
||||
- ✅ Documentação completa
|
||||
- ✅ Build scripts para Windows e Linux
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Contribuindo
|
||||
|
||||
1. Fork o projeto
|
||||
2. Crie uma branch (`git checkout -b feature/nova-funcionalidade`)
|
||||
3. Commit suas mudanças (`git commit -m 'Adiciona nova funcionalidade'`)
|
||||
4. Push para a branch (`git push origin feature/nova-funcionalidade`)
|
||||
5. Abra um Pull Request
|
||||
|
||||
---
|
||||
|
||||
## 📄 Licença
|
||||
|
||||
Proprietary - Todos os direitos reservados
|
||||
|
||||
---
|
||||
|
||||
## 👨💻 Autor
|
||||
|
||||
**Sérgio Corrêa**
|
||||
- Repositório: https://meurepositorio.com/sergio.correa/NoIdle
|
||||
|
||||
---
|
||||
|
||||
## 🆘 Suporte
|
||||
|
||||
Para problemas ou dúvidas:
|
||||
1. Consulte `LEIA_PRIMEIRO.md`
|
||||
2. Execute `VERIFICAR_E_CORRIGIR_NOIDLE.ps1`
|
||||
3. Verifique a documentação em `/docs`
|
||||
|
||||
---
|
||||
|
||||
## ✅ Status do Projeto
|
||||
|
||||
- ✅ Backend: Funcionando
|
||||
- ✅ Frontend: Funcionando
|
||||
- ✅ Cliente Windows: Funcionando
|
||||
- ✅ Auto-start: Resolvido
|
||||
- ✅ Documentação: Completa
|
||||
- ✅ Build Scripts: Prontos
|
||||
|
||||
---
|
||||
|
||||
**NoIdle - Zero Idle, Maximum Productivity** 🚀
|
||||
|
||||
Reference in New Issue
Block a user