c6a7de895d
- JSON import/export with conflict resolution (skip/overwrite) + admin UI - Ping history sparklines on AppWidget and AppCard (24h, 288 points) - Hourly cleanup job for old AppStatus records - User theme preferences (hue, saturation, mode, background, locale) - Settings page with ThemeCustomizer (sliders, toggles, live preview) - Prisma migration for user preference fields - i18n translations for all new strings (EN/RU)
1.4 KiB
1.4 KiB
Phase 1: Import/Export
Status: ✅ Done Parent plan: PLAN.md Domain: fullstack
Tasks
- Task 1: Create
src/lib/server/services/exportService.ts— export all data (apps, boards, sections, widgets, groups, settings) as JSON - Task 2: Create
src/lib/server/services/importService.ts— import JSON with conflict resolution (skip/overwrite) - Task 3: Create
src/routes/api/admin/export/+server.ts— GET endpoint, returns JSON file download - Task 4: Create
src/routes/api/admin/import/+server.ts— POST endpoint, accepts JSON upload - Task 5: Update admin settings page — add Import/Export section with download button and file upload
- Task 6: Create
src/lib/components/admin/ImportExportPanel.svelte— UI with export button, file picker, preview, and import button - Task 7: Add Zod schema for validating import data structure
- Task 8: Add i18n translations for import/export strings (EN/RU)
Handoff to Next Phase
All import/export functionality implemented. Export service gathers all apps, boards (with sections/widgets), groups, and system settings into a versioned JSON structure. Import service validates with Zod, supports skip/overwrite conflict resolution, and runs in a Prisma transaction. Admin-only API endpoints with Content-Disposition for file download. UI panel with file upload, JSON preview, mode selector, and status feedback.