Files
Business-Management/changelog/2026-04-17_customizable-home-dashboard.md
curo1305 ab15c17ffb Add customizable home dashboard with per-user pinned apps
- Users can pin/unpin any available service on their home page via a
  Customize mode; preferences persisted via PATCH /api/users/me/preferences
- Time-aware greeting renders the user's display name through React JSX
  (HTML-escaped by design — no dangerouslySetInnerHTML used)
- Added dashboard_app_ids JSON column to users table (migration c7e8f9a0b1d2)
- /settings now routes to a placeholder page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 21:15:33 +02:00

1.6 KiB

2026-04-17 — Customizable home dashboard and settings placeholder

Timestamp: 2026-04-17T14:00:00+00:00

Summary

Replaced the static dashboard page with a per-user customizable home screen. Each user can pin and unpin apps from the available services list. A time-aware greeting shows the user's display name (XSS-safe via React JSX text rendering). The Settings navigation item now routes to a placeholder page.

Files Added / Modified / Deleted

Added

  • backend/alembic/versions/c7e8f9a0b1d2_add_dashboard_app_ids_to_users.py — Migration adding dashboard_app_ids JSON column to users table (default []; non-nullable)
  • frontend/src/pages/SettingsPage.tsx — Placeholder settings page at /settings

Modified

  • backend/app/models/user.py — Added dashboard_app_ids: Mapped[list] JSON column
  • backend/app/schemas/user.py — Added DashboardPrefsOut and DashboardPrefsUpdate schemas; app_ids validated as safe slugs (regex, max 50, max 64 chars each)
  • backend/app/routers/users.py — Added GET /api/users/me/preferences and PATCH /api/users/me/preferences endpoints
  • frontend/src/api/client.ts — Added DashboardPrefs interface, getDashboardPrefs(), updateDashboardPrefs()
  • frontend/src/pages/DashboardPage.tsx — Full rewrite: greeting, pinned app cards grid, customize/edit mode with add/remove toggles, save via TanStack Query mutation
  • frontend/src/App.tsx — Imported SettingsPage, registered /settings route
  • backend/STATUS.md — Updated Users endpoints table and models table
  • frontend/STATUS.md — Added home dashboard section, added /settings to routes table