feat(database): Implement DatabaseManager for managing database structure and initialization
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
This commit is contained in:
2025-04-27 01:02:33 +02:00
parent 792bdca965
commit 4513af3aa0
30 changed files with 3006 additions and 763 deletions

86
README.md Normal file
View File

@@ -0,0 +1,86 @@
# 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`.