Dashboard — Morty's Dashboard
Статус: ✅ Production
PM2: dashboard
Порт: 3000
Путь: /home/app/dashboard/backend-update/index.js
Скилл: /home/app/skills/dashboard/SKILL.md
Stack
- React 18 + TypeScript + Vite (frontend)
- Express (backend)
- TailwindCSS, shadcn/ui, @dnd-kit, React Query
Карточки проектов (9 шт)
| Карточка |
ID |
Данные |
| System |
system |
Real (systeminformation + PM2 all procs + service health) |
| Bender Bot |
bender-bot |
Real (PM2 metrics) |
| AlphaPulse |
alphapulse |
Real (SQLite + PM2, Vancouver time) |
| Piewell |
piewell |
Real (WordPress API) |
| Futures Screener |
futures-screener |
Real (localhost:3200 densities API) |
| Traffic Arbitrage |
affiliate |
Planned (roadmap checklist) |
| Options Screener |
options-screener |
Placeholder |
| YouTube |
youtube-ai-channel |
Placeholder |
| Ideas |
ideas |
Real (JSON) |
Фичи
- Drag-and-drop карточки (порядок сохраняется в localStorage)
- Kanban задачи по проектам
- Files modal (просмотр кода)
- Brain modal (Obsidian заметки, редактирование)
- Daily Report, Health Status, KPI Modal
- Auth (Bearer token, HMAC-SHA256)
- Service uptime monitoring (Options API, Futures, Dashboard, Piewell)
- PM2 all processes на SystemCard (status, CPU, RAM, uptime, restarts)
- Alerts API (
/api/alerts) — Bender может поллить для Telegram алертов
- Vancouver time в AlphaPulse nextPost
API Endpoints (новые)
GET /health — no auth, для мониторинга
GET /api/services/health — пинг всех сервисов с response time
GET /api/alerts — автоматические алерты (service down, CPU/RAM/disk high, PM2 issues)
Deploy
cd /home/app/dashboard
npm run build
pm2 restart dashboard
Auth
- Dashboard пароль:
xC9LuZEL3pmQBqPi
- Bearer token auth
Улучшения (roadmap)
Заметки
- 23 Mar 2026: Batch улучшения #1-#9 за одну сессию
- Билд уменьшился 822KB → 560KB (убрали Recharts sparkline из SystemCard)
- futures-screener 339 рестартов → показывает warning в alerts
- AlphaPulse расписание UTC: 02,08,11,15,18,21 → конвертируется в PDT
- PWA: иконки 192+512, SW v2, apple-touch-icon, safe-area-inset
- overflow-x: hidden ТОЛЬКО на body (на html ломает вертикальный скролл!)