All checks were successful
SSH Backend Deploy / ssh-deploy (push) Successful in 1m51s
feat(routes): Add camera, image, measurement, project, and video routes with Swagger documentation feat(services): Create storageService and videoService for file management and video processing fix(errorHandler): Enhance error handling with standardized responses and database operation wrappers
86 lines
3.1 KiB
Markdown
86 lines
3.1 KiB
Markdown
# 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`. |