Nixpacks was auto-detecting Vite and using 'npx serve dist' which only
serves the frontend. The API server handles both API routes and SPA fallback.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove PieChart (caused empty space above legend)
- Show clean category list with colored dots directly
- Add total sum row at bottom with separator line
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reduce pie chart height from 240px to 180px (less empty space)
- Increase legend text from text-xs to text-sm
- Larger color dots (w-3 h-3) and more spacing between items
- Bold values with tabular-nums for alignment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New /financial page with sales/expenses cards, monthly bar chart and
expense distribution pie chart (Recharts)
- New API endpoint GET /api/financial with queries on tblinvoices and
tblexpenses
- Compact services grid (2-col dots layout) in Monitor page
- Add Syncthing to critical services monitoring
- Add Financeiro nav link to Dashboard, Monitor and Financial headers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace sshpass with ssh2 Node.js library for reliable SSH connections.
Add all 6 servers (CWP, EasyPanel, MCP Hub, Meet, WhatsApp, WhatSMS).
Add 5-minute auto-collection scheduler in production mode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Renomear "Plan EAL" para "Dashboard Descomplicar" (header + footer)
- Adicionar menu hamburger mobile com navegacao Dashboard/Monitor
- Excluir leads com lembrete futuro da seccao "Contactar" (NOT EXISTS tblreminders)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Added static file serving in Express for production
- Added SPA fallback for client-side routing
- Created Dockerfile with NODE_ENV=production
- Frontend now properly served at dash.descomplicar.pt
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed fetch URL from /api/monitor.php to /api/monitor
- Updated MonitorData interface to match API response structure
- Fixed stats calculation (MySQL returning strings instead of numbers)
- Updated mock data with realistic values from production DB
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change build script to compile API TypeScript to api/dist/
- Update start script to use compiled JS
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add POST /api/wp-monitor endpoint for WP plugin data
- Add GET /api/wp-monitor for listing monitored sites
- Add checkSiteAvailability() function for HTTP health checks
- Add checkAllSitesAvailability() for batch checking
- Add /api/scripts/check-sites.ts for cron execution
- Add POST /api/monitor/check-sites for manual trigger
DeskCRM Task: #1556
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adiciona dotenv para carregar variáveis de ambiente
- Configura DB_HOST para servidor remoto (176.9.3.158)
- Cria endpoint /api/diagnostic para testes
- Actualiza título: "Plan EAL" → "Dashboard Descomplicar"
- Adiciona tsconfig.json para pasta /api
- Fix: Carrega .env antes de inicializar MySQL pool
Tarefa: #1556
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- React Router para SPA routing
- Página /monitor com status de sistemas
- Cards de servidores, serviços, sites, containers
- Barras de progresso animadas
- Auto-refresh de 60s
- Link no header do dashboard
DeskCRM Task: #1604
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>