Next.js image optimizer mkdirs <distDir>/cache/images on first
optimized-image request. In the Nix store that path is read-only, so
every image request throws EACCES unhandledRejection. images.maximumDiskCacheSize=0
plus experimental.isrFlushToDisk=false keep the optimizer in-memory only.
- Moved dashboard components (Donut, Gauge, Sparkline) to their own files for better organization.
- Created a new DashboardHeader component to manage the header state and display service status.
- Introduced a layout component for the dashboard to encapsulate common layout styles.
- Simplified the Dashboard component by utilizing new components and reducing inline logic.
- Added type definitions for dashboard data in a new types.ts file.
- Enhanced the visual representation of data with improved SVG elements and accessibility attributes.
- Removed redundant code and improved overall readability and maintainability.