50e8519220
- Add 6 renderer components: StatCard, Gauge, List, Progress, AlertBanner, Chart - Add IntegrationWidget container with auto-refresh, loading, error states - Add IntegrationAlertOverlay for layout-level critical alerts - Add IntegrationConfigFields for dynamic form generation from Zod schemas - Register integration type in WidgetRenderer - Extend WidgetCreationForm with integration app/endpoint pickers - Extend AppForm with integration config section and test connection button - Add /api/integrations/alerts endpoint
2.1 KiB
2.1 KiB
Feature Context: Service Integrations
Configuration
- Development mode: Automated
- Execution mode: Orchestrator
- Strategy: Big Bang
- Build:
npm run build - Test:
npm test - Lint:
npm run lint - Check:
npm run check - Dev server:
npm run dev(port: 5173)
Current State
Feature not yet started. Codebase is stable on master with 14 widget types, full app CRUD, healthcheck system, and notification infrastructure.
Existing Patterns to Follow
- Service pattern: See
appService.ts,metricService.ts,systemStatsService.tsfor adapter/client/transform pattern - Caching:
metricService.tshas TTL-based cache — reuse for integration data - API envelope: All routes use
success(),error(),paginated()from response helpers - Zod validation: All inputs validated via Zod schemas in
validators.ts - Widget rendering:
WidgetRenderer.sveltedispatches to type-specific components - Config storage: Widget configs stored as stringified JSON in
Widget.config - Encrypted JSON:
SystemSettings.oauthConfigpattern for storing credentials
Temporary Workarounds
(none yet)
Cross-Phase Dependencies
- Phase 1 (architecture) must complete before all other phases
- Phase 2 (UI) must complete before Phase 10 (polish)
- Phases 3-9 (individual integrations) depend only on Phase 1
- Phase 10 depends on all prior phases
Deferred Work
(none yet)
Failed Approaches
(none yet)
Review Findings Log
(none yet)
Phase Execution Log
| Phase | Agent Used | Test Writer | Parallel | Notes |
|---|---|---|---|---|
| (not started) |
Environment & Runtime Notes
- Platform: Windows 10, Git Bash shell
- Database: SQLite via Prisma
- NUT integration requires raw TCP socket (Node
netmodule) - Deluge uses JSON-RPC, NPM uses session-based auth
Implementation Notes
- Integration credentials stored encrypted in
integrationConfig(JSON string on App model) - NUT is the only non-HTTP integration — uses direct TCP protocol
- Alert banners (NUT on-battery, Authentik brute-force) need layout-level rendering, not just widget-level