Aller au contenu principal

Stratégie des composants

Nous distinguons les primitives UI et les composants métier.

1. Système UI (components/ui)

Nous utilisons ShadCN UI. Ce sont des composants « muets » sans logique métier.

  • Boutons, champs, dialogues, cartes.
  • Ne pas modifier ces fichiers sauf pour changer le design system global.

2. Composants métier (components/dashboard, components/auth, features/*/components)

Ils contiennent la logique métier. Les composants spécifiques à un domaine sont dans features/<domain>/components/.

  • features/cameras/components/camera-card.tsx (CameraCard) : Affiche un flux caméra et son statut.
  • features/cameras/components/camera-alerts-panel.tsx, camera-events-timeline.tsx : Historique des alertes et timelines d'événements.
  • features/cameras/components/camera-form.tsx : Formulaire création/édition caméra (souvent dans un modal).

Composants serveur vs client

  • Composants serveur (par défaut) : Pour la récupération de données.
    • app/**/page.tsx, layout.tsx.
    • Accès DB direct ou appels API sécurisés.
  • Composants client : Pour l'interaction.
    • Formulaires et modaux (ex. camera-form, filter-dialog) qui utilisent useState.
    • Graphiques et vues temps réel (ex. TrendLineChart, RealTimeMetrics) qui utilisent useEffect.