https://github.com/itssheldondev/aloha-ss-backend
Official API for Aloha-Secourisme, a training center specialized in first aid and sea rescue courses. đđ
https://github.com/itssheldondev/aloha-ss-backend
api backend backend-api nestjs
Last synced: over 1 year ago
JSON representation
Official API for Aloha-Secourisme, a training center specialized in first aid and sea rescue courses. đđ
- Host: GitHub
- URL: https://github.com/itssheldondev/aloha-ss-backend
- Owner: ItsSheldonDev
- Created: 2025-03-09T11:20:04.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-16T22:16:01.000Z (over 1 year ago)
- Last Synced: 2025-03-16T22:29:20.086Z (over 1 year ago)
- Topics: api, backend, backend-api, nestjs
- Language: TypeScript
- Homepage: https://api.aloha-secourisme.fr/
- Size: 327 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# API Aloha Secourisme
[](https://uptime.betterstack.com/?utm_source=status_badge)
API REST complÚte pour la gestion de l'application Aloha Secourisme. Cette API permet de gérer les formations, les inscriptions, les documents, la galerie d'images, les actualités et l'administration du systÚme.
## đ Table des matiĂšres
- [Fonctionnalités](#fonctionnalités)
- [Prérequis](#prérequis)
- [Installation](#installation)
- [Configuration](#configuration)
- [Utilisation](#utilisation)
- [Architecture](#architecture)
- [Documentation API](#documentation-api)
- [Déploiement](#déploiement)
- [Tests](#tests)
- [Maintenance](#maintenance)
- [Contribution](#contribution)
- [Contact](#contact)
## ⚠Fonctionnalités
- đ§âđ« **Gestion des formations** : CrĂ©ation, modification et suppression des sessions de formation
- đ **Gestion des inscriptions** : Suivi des inscriptions aux formations, avec gestion des statuts et notifications
- đ **Gestion des documents** : Upload et tĂ©lĂ©chargement de documents catĂ©gorisĂ©s
- đŒïž **Galerie d'images** : Upload et gestion d'images optimisĂ©es
- đ° **ActualitĂ©s** : Publication d'articles et d'actualitĂ©s
- đ€ **Administration** : Gestion des utilisateurs et des droits d'accĂšs
- đ **Tableau de bord** : Statistiques et analyses de donnĂ©es
- âïž **ParamĂštres systĂšme** : Configuration globale de l'application
- đŸ **Import/Export de donnĂ©es** : Sauvegarde et restauration de la base de donnĂ©es
## đ§ PrĂ©requis
- [Node.js](https://nodejs.org/) (v16 ou supérieur)
- [npm](https://www.npmjs.com/) (v7 ou supérieur)
- [PostgreSQL](https://www.postgresql.org/) (v14 ou supérieur)
- [Docker](https://www.docker.com/) (optionnel, pour le déploiement)
## đ Installation
1. Cloner le dépÎt :
```bash
git clone https://github.com/votre-organisation/aloha-secourisme-api.git
cd aloha-secourisme-api
```
2. Installer les dépendances :
```bash
npm install
```
3. Copier le fichier d'environnement exemple et le personnaliser :
```bash
cp .env.example .env
```
4. Générer les migrations Prisma et le client :
```bash
npx prisma migrate dev --name init
```
5. Créer un premier super administrateur :
```bash
npm run create-admin
```
6. Démarrer l'API en mode développement :
```bash
npm run start:dev
```
## âïž Configuration
### Variables d'environnement
Principales variables Ă configurer dans le fichier `.env` :
```
# Application
NODE_ENV=development
PORT=3000
# Database
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/aloha_secourisme
# JWT
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRES_IN=1d
# Admin
ADMIN_EMAIL=contact@aloha-secourisme.fr
# SMTP
SMTP_HOST=smtp.example.com
SMTP_PORT=465
SMTP_USER=noreply@example.com
SMTP_PASS=your_smtp_password
# Logging
LOG_LEVEL=info
```
### Base de données
Cette API utilise PostgreSQL avec Prisma comme ORM. La structure de la base de données est définie dans le fichier `prisma/schema.prisma`.
### Configuration des emails
Pour que les notifications par email fonctionnent correctement, configurez les paramĂštres SMTP dans le fichier `.env`.
## đ ïž Utilisation
### Scripts disponibles
- `npm run start:dev` : Démarrer l'API en mode développement avec hot-reload
- `npm run build` : Compiler le projet TypeScript
- `npm run start:prod` : Démarrer l'API en mode production
- `npm run lint` : Exécuter ESLint pour vérifier le code
- `npm run test` : Exécuter les tests unitaires
- `npm run test:e2e` : Exécuter les tests end-to-end
- `npm run create-admin` : Créer un compte super administrateur
- `npm run prisma:studio` : Ouvrir Prisma Studio pour explorer la base de données
### AccĂšs Ă l'API
Une fois démarrée, l'API est accessible à l'adresse `http://localhost:3000/api`.
### Documentation Swagger
La documentation Swagger est disponible Ă l'adresse `http://localhost:3000/docs`.
## đ Architecture
L'API est construite avec NestJS, un framework progressif pour Node.js. Son architecture est modulaire et respecte les principes SOLID.
### Structure des dossiers
```
src/
âââ common/ # Filtres, gardes, intercepteurs et outils communs
âââ config/ # Configuration de l'application
âââ modules/ # Modules fonctionnels de l'API
â âââ admin/ # Module d'administration
â âââ auth/ # Authentification et autorisation
â âââ dashboard/ # Statistiques et tableaux de bord
â âââ database/ # Import/Export de la base de donnĂ©es
â âââ documents/ # Gestion des documents
â âââ emails/ # Service d'envoi d'emails
â âââ formations/ # Gestion des formations
â âââ gallery/ # Gestion de la galerie d'images
â âââ health/ # VĂ©rification de l'Ă©tat de l'API
â âââ inscriptions/ # Gestion des inscriptions
â âââ news/ # Gestion des actualitĂ©s
â âââ settings/ # ParamĂštres du systĂšme
â âââ users/ # Gestion des utilisateurs
âââ prisma/ # Configuration Prisma et modĂšles de donnĂ©es
âââ scripts/ # Scripts utilitaires
âââ templates/ # Templates d'emails
âââ app.module.ts # Module principal de l'application
âââ main.ts # Point d'entrĂ©e de l'application
```
### Patterns utilisés
- **Repository Pattern** : Séparation de la logique d'accÚs aux données
- **Dependency Injection** : Injection de dépendances pour une meilleure testabilité
- **DTO Pattern** : Data Transfer Objects pour valider et transférer les données
- **Service Layer** : Séparation de la logique métier
- **Module Pattern** : Organisation du code en modules fonctionnels
## đ Documentation API
La documentation complĂšte de l'API est disponible via Swagger Ă l'adresse `http://localhost:3000/docs`. Elle inclut :
- Une description détaillée de chaque endpoint
- Les paramĂštres attendus et leur format
- Les réponses possibles et leurs structures
- Des exemples de requĂȘtes et de rĂ©ponses
- La documentation des modÚles de données
## đą DĂ©ploiement
### Avec Docker
1. Construire et démarrer les conteneurs :
```bash
# En mode développement
./start.sh development
# En mode production
./start.sh production
```
2. Accéder à l'API déployée :
```
API : http://localhost:3000
Documentation Swagger : http://localhost:3000/docs
PGAdmin : http://localhost:5050
```
### Configuration de production
Pour un déploiement en production, assurez-vous de :
- Définir `NODE_ENV=production` dans `.env`
- Utiliser un secret JWT fort et unique
- Configurer correctement les paramĂštres SMTP
- Utiliser HTTPS pour sécuriser les communications
- Configurer un proxy inverse comme Nginx devant l'API
## đ§Ș Tests
### Tests unitaires
Les tests unitaires vérifient le comportement des services et des contrÎleurs isolément :
```bash
npm run test
```
### Tests end-to-end
Les tests end-to-end vérifient le comportement de l'API complÚte :
```bash
npm run test:e2e
```
### Couverture de tests
Pour générer un rapport de couverture des tests :
```bash
npm run test:cov
```
## đ Maintenance
### Migrations de base de données
Pour créer une nouvelle migration aprÚs modification du schéma Prisma :
```bash
npx prisma migrate dev --name nom_de_la_migration
```
Pour appliquer les migrations en production :
```bash
npx prisma migrate deploy
```
### Mise à jour des dépendances
Pour mettre à jour les dépendances :
```bash
npm update
```
Pour vérifier les vulnérabilités :
```bash
npm audit
```
## đ€ Contribution
Les contributions sont les bienvenues ! Voici comment contribuer :
1. Forker le dépÎt
2. Créer une branche pour votre fonctionnalité (`git checkout -b feature/ma-fonctionnalite`)
3. Effectuer des commits clairs et descriptifs (`git commit -m 'Ajout de ma fonctionnalité'`)
4. Pousser vos modifications (`git push origin feature/ma-fonctionnalite`)
5. Ouvrir une Pull Request
### Normes de code
- Suivre les normes de style d'Airbnb pour TypeScript
- Documenter toutes les fonctions et classes
- Ajouter des tests pour les nouvelles fonctionnalités
- Respecter l'architecture existante
## đ Contact
Pour toute question ou suggestion concernant cette API, contactez-nous :
- Email : contact@aloha-secourisme.fr
- Site web : https://www.aloha-secourisme.fr
---
© 2023-2025 Aloha Secourisme. Tous droits réservés.