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 Expressapi.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 timelapseMeasurement.js- Gestion des mesures et imagesVideo.js- Gestion des vidéos généréesCamera.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 projetsmeasurementController.js- Gestion des mesuresvideoController.js- Gestion des vidéosimageController.js- Gestion des images et téléchargementscameraController.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 fichiersvideoService.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 projetsmeasurementRoutes.js- Routes pour les mesuresvideoRoutes.js- Routes pour les vidéosimageRoutes.js- Routes pour les imagescameraRoutes.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èlessrc/data/storage_manager.js- Redirige vers le nouveau service de stockagesrc/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 :
node cleanup.js delete
Documentation API
La documentation de l'API est disponible via Swagger à l'adresse /api-docs.