sochboard/ROADMAP.md
maxsoch 528e8bcbbb feat: initial Sochboard dashboard
- Next.js 16 App Router with TypeScript + Tailwind CSS v4
- YAML config read at runtime via server components (force-dynamic)
- Zod validation for config schema (site, theme, sections, links)
- Dark/light theme with CSS variables and client-side toggle
- Dashboard layout: header (logo + title), sections, responsive card grid
- Horizontal card layout (icon left, text right) with optional vertical mode
- Lucide React icons with fallback, custom iconUrl support for SVG icons
- Glassmorphism cards with hover/focus/keyboard accessibility
- Mobile responsive: 2 columns on mobile, up to 5 on xl screens
- Docker multi-stage build with docker-compose volume for config
- Standalone Next.js output for production
- CONFIGURATION.md and ROADMAP.md documentation
2026-07-24 08:59:17 +02:00

1.5 KiB

Roadmap

iOS — Bouton thème non fonctionnel

Le bouton de bascule thème clair/sombre ne répond pas au toucher sur Firefox iOS.

Pistes :

  • Contourner le système d'événements React (addEventListener natif) — essayé, sans effet
  • Remplacer <button> par un <a> ou <div role="button> — à tester
  • Vérifier le comportement iOS WebKit avec classList.toggle vs setAttribute
  • Tester avec un bouton complètement isolé (hors du header, hors des composants dashboard)
  • Vérifier si le problème persiste dans une page vide sans CSS gradient

Filtrage par en-têtes HTTP (ex: Authelia)

Masquer/afficher des sections ou des liens en fonction des en-têtes HTTP envoyés par un reverse proxy ou un provider d'authentification (Authelia, Authentik, etc.).

Cas d'usage : un lien d'administration n'apparaît que si l'utilisateur a le groupe admin dans X-Forwarded-Groups.

links:
  - id: "admin"
    name: "Admin"
    url: "https://admin.example.com"
    icon: "Shield"
    requiredHeaders:
      X-Forwarded-Groups: "admin"

sections:
  - id: "superviseurs"
    title: "Supervision"
    requiredHeaders:
      X-Forwarded-Groups: "superviseur"

Côté serveur : utiliser headers() de next/headers pour lire les en-têtes au SSR et filtrer les sections/liens avant le rendu.

Sécurité : les en-têtes ne sont pas modifiables côté client (ils viennent du reverse proxy). Pas de risque de contournement par un utilisateur non auth.