# Timelapse Backend Ce projet est une API de backend pour gérer une solution de timelapse avec capture, stockage et transformation d'images en vidéos. ## Architecture L'application a été refactorisée pour suivre un modèle MVC (Modèle-Vue-Contrôleur) et respecter le principe de séparation des préoccupations. Voici la structure du projet : ``` /src /config - Configuration centralisée de l'application /controllers - Logique de traitement des requêtes HTTP /database - Connexion à la base de données /data - Compatibilité avec l'ancienne version (à terme, à supprimer) /middlewares - Middlewares Express /models - Modèles de données et logique d'accès à la BDD /routes - Définition des routes de l'API /services - Services métier et logique complexe /utils - Utilitaires partagés /video - Compatibilité avec l'ancienne version (à terme, à supprimer) ``` ### Points d'entrée - `server.js` - Point d'entrée principal du serveur Express - `api.js` - Routes principales de l'API ## Composants principaux ### Modèles Les modèles encapsulent la logique d'accès aux données et les règles métier : - `Project.js` - Gestion des projets de timelapse - `Measurement.js` - Gestion des mesures et images - `Video.js` - Gestion des vidéos générées - `Camera.js` - Gestion de la caméra et des paramètres de capture ### Contrôleurs Les contrôleurs gèrent le traitement des requêtes HTTP et interagissent avec les modèles et services : - `projectController.js` - Gestion des projets - `measurementController.js` - Gestion des mesures - `videoController.js` - Gestion des vidéos - `imageController.js` - Gestion des images et téléchargements - `cameraController.js` - Gestion des paramètres de la caméra ### Services Les services implémentent la logique métier complexe : - `storageService.js` - Gestion du stockage des fichiers - `videoService.js` - Service de création de vidéos à partir d'images ### Routes Les routes définissent les points d'accès HTTP de l'API : - `projectRoutes.js` - Routes pour les projets - `measurementRoutes.js` - Routes pour les mesures - `videoRoutes.js` - Routes pour les vidéos - `imageRoutes.js` - Routes pour les images - `cameraRoutes.js` - Routes pour la caméra ## Déploiement Le déploiement est géré via Docker Compose, avec une configuration dans `docker-compose.yml`. Le script `deploy.sh` gère le déploiement automatisé. ## Phase de Transition L'application est actuellement en phase de transition de l'ancienne architecture vers la nouvelle. Les fichiers suivants sont des ponts de compatibilité qui seront progressivement supprimés : - `src/database/database_manager.js` - Redirige vers les nouveaux modèles - `src/data/storage_manager.js` - Redirige vers le nouveau service de stockage - `src/video/videoManager.js` - Redirige vers le nouveau service vidéo Pour supprimer les fichiers obsolètes une fois toutes les références mises à jour, utilisez : ```bash node cleanup.js delete ``` ## Documentation API La documentation de l'API est disponible via Swagger à l'adresse `/api-docs`.