Aller au contenu principal

Référence de Développement

Organisation du code

  • Composants : src/components/ avec sous-répertoires :
    • ui/ - composants shadcn/ui et éléments d'interface utilisateur réutilisables
    • dashboard/ - Composants spécifiques au Tableau de bord
    • settings/ - Composants de la page Paramètres
    • server-details/ - Composants de la page Détails du Serveur
  • Routes API : src/app/api/ avec structure de points de terminaison RESTful (voir Référence API)
  • Base de données : SQLite avec better-sqlite3, utilitaires dans src/lib/db-utils.ts, migrations dans src/lib/db-migrations.ts
  • Types : Interfaces TypeScript dans src/lib/types.ts
  • Configuration : Configurations par défaut dans src/lib/default-config.ts
  • Service Cron : src/cron-service/ (s'exécute sur le port 8667 en développement, 9667 en production)
  • Scripts : Scripts utilitaires dans le répertoire scripts/
  • Sécurité : Protection CSRF dans src/lib/csrf-middleware.ts, utilisez le middleware withCSRF pour les points de terminaison protégés

Tests et débogage

  • Génération de données de test : pnpm generate-test-data --servers=N
  • Tester les notifications : endpoint /api/notifications/test
  • Vérifications de santé Cron : curl http://localhost:8667/health ou curl http://localhost:8666/api/cron/health
  • Tester la sauvegarde en retard : pnpm run-overdue-check
  • Mode développement : journalisation détaillée et stockage de fichiers JSON
  • Maintenance de la base de données : utiliser le menu de maintenance pour les opérations de nettoyage
  • Pré-vérifications : scripts/pre-checks.sh pour dépanner les problèmes de démarrage

Références de développement

Frameworks et Bibliothèques

Gestion du runtime et des packages

  • Node.js >=24.12.0
  • pnpm >=10.24.0 (packageManager: pnpm@10.30.3)

Frameworks et bibliothèques principaux

  • Next.js ^16.1.6 (App Router)
  • React ^19.2.4 et React-DOM ^19.2.4
  • Radix UI (@radix-ui/react-*) : ^1.1.8 - ^2.2.6 (accordion ^1.2.12, alert-dialog ^1.1.15, avatar ^1.1.11, checkbox ^1.3.3, dialog ^1.1.15, dropdown-menu ^2.1.16, label ^2.1.8, menubar ^1.1.16, popover ^1.1.15, progress ^1.1.8, radio-group ^1.3.8, scroll-area ^1.2.10, select ^2.2.6, separator ^1.1.8, slider ^1.3.6, slot ^1.2.4, switch ^1.2.6, tabs ^1.1.13, toast ^1.2.15, tooltip ^1.2.8)
  • Tailwind CSS ^4.2.1 + tailwindcss-animate ^1.0.7
  • Better-sqlite3 ^12.6.2
  • Recharts ^3.7.0, react-day-picker ^9.14.0, react-hook-form ^7.71.2, react-datepicker ^9.1.0
  • lucide-react ^0.575.0, clsx ^2.1.1, class-variance-authority ^0.7.1
  • date-fns ^4.1.0, uuid ^13.0.0
  • express ^5.2.1 (service cron), node-cron ^4.2.1
  • nodemailer ^8.0.1, qrcode ^1.5.4
  • intlayer ^8.1.8, next-intlayer ^8.1.8, react-intlayer ^8.1.8, @intlayer/editor-react ^8.1.8, @intlayer/swc ^8.1.8

Vérification des types et linting

  • TypeScript ^5.9.3
  • TSX ^4.21.0
  • ESLint ^9.16.0 (via next lint)
  • intlayer-editor ^8.1.8
  • webpack ^5.105.3

Compilation et déploiement

  • Sortie autonome Next.js (output: 'standalone') avec point d'entrée de conteneur démarrant server.js
  • Docker (base node:alpine) avec compilations multi-architectures (AMD64, ARM64)
  • Workflows GitHub Actions pour CI/CD
  • Inkscape pour les logos et les images
  • Docusaurus pour la documentation
  • Greenfish Icon Editor pour les icônes

Configuration du Projet

  • tsconfig.json, next.config.ts, tailwind.config.ts, postcss.config.mjs
  • pnpm-workspace.yaml, components.json (shadcn/ui)

Caractéristiques du Système

  • Service Cron : Service distinct pour les tâches planifiées, démarré par docker-entrypoint.sh dans les déploiements Docker
  • Notifications : Intégration ntfy.sh et e-mail SMTP (nodemailer), modèles configurables
  • Actualisation automatique : Actualisation automatique configurable pour le tableau de bord et les pages de détails