{"id":26376568,"url":"https://github.com/itssheldondev/aloha-ss-backend","last_synced_at":"2025-03-17T03:18:05.360Z","repository":{"id":281488332,"uuid":"945415194","full_name":"ItsSheldonDev/aloha-ss-backend","owner":"ItsSheldonDev","description":"Official API for Aloha-Secourisme, a training center specialized in first aid and sea rescue courses. 🌊🚑 ","archived":false,"fork":false,"pushed_at":"2025-03-16T22:16:01.000Z","size":335,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T22:29:20.086Z","etag":null,"topics":["api","backend","backend-api","nestjs"],"latest_commit_sha":null,"homepage":"https://api.aloha-secourisme.fr/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ItsSheldonDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-09T11:20:04.000Z","updated_at":"2025-03-16T22:16:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"4aa204c7-2ff8-4706-8f03-ffa432aac226","html_url":"https://github.com/ItsSheldonDev/aloha-ss-backend","commit_stats":null,"previous_names":["itssheldondev/aloha-ss-backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsSheldonDev%2Faloha-ss-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsSheldonDev%2Faloha-ss-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsSheldonDev%2Faloha-ss-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ItsSheldonDev%2Faloha-ss-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ItsSheldonDev","download_url":"https://codeload.github.com/ItsSheldonDev/aloha-ss-backend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243965764,"owners_count":20375920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","backend","backend-api","nestjs"],"created_at":"2025-03-17T03:18:04.672Z","updated_at":"2025-03-17T03:18:05.352Z","avatar_url":"https://github.com/ItsSheldonDev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Aloha Secourisme   \n[![Better Stack Badge](https://uptime.betterstack.com/status-badges/v3/monitor/1tvdq.svg)](https://uptime.betterstack.com/?utm_source=status_badge)\n\nAPI 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.\n\n## 📋 Table des matières\n\n- [Fonctionnalités](#fonctionnalités)\n- [Prérequis](#prérequis)\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Utilisation](#utilisation)\n- [Architecture](#architecture)\n- [Documentation API](#documentation-api)\n- [Déploiement](#déploiement)\n- [Tests](#tests)\n- [Maintenance](#maintenance)\n- [Contribution](#contribution)\n- [Contact](#contact)\n\n## ✨ Fonctionnalités\n\n- 🧑‍🏫 **Gestion des formations** : Création, modification et suppression des sessions de formation\n- 📝 **Gestion des inscriptions** : Suivi des inscriptions aux formations, avec gestion des statuts et notifications\n- 📄 **Gestion des documents** : Upload et téléchargement de documents catégorisés\n- 🖼️ **Galerie d'images** : Upload et gestion d'images optimisées\n- 📰 **Actualités** : Publication d'articles et d'actualités\n- 👤 **Administration** : Gestion des utilisateurs et des droits d'accès\n- 📊 **Tableau de bord** : Statistiques et analyses de données\n- ⚙️ **Paramètres système** : Configuration globale de l'application\n- 💾 **Import/Export de données** : Sauvegarde et restauration de la base de données\n\n## 🔧 Prérequis\n\n- [Node.js](https://nodejs.org/) (v16 ou supérieur)\n- [npm](https://www.npmjs.com/) (v7 ou supérieur)\n- [PostgreSQL](https://www.postgresql.org/) (v14 ou supérieur)\n- [Docker](https://www.docker.com/) (optionnel, pour le déploiement)\n\n## 🚀 Installation\n\n1. Cloner le dépôt :\n```bash\ngit clone https://github.com/votre-organisation/aloha-secourisme-api.git\ncd aloha-secourisme-api\n```\n\n2. Installer les dépendances :\n```bash\nnpm install\n```\n\n3. Copier le fichier d'environnement exemple et le personnaliser :\n```bash\ncp .env.example .env\n```\n\n4. Générer les migrations Prisma et le client :\n```bash\nnpx prisma migrate dev --name init\n```\n\n5. Créer un premier super administrateur :\n```bash\nnpm run create-admin\n```\n\n6. Démarrer l'API en mode développement :\n```bash\nnpm run start:dev\n```\n\n## ⚙️ Configuration\n\n### Variables d'environnement\n\nPrincipales variables à configurer dans le fichier `.env` :\n\n```\n# Application\nNODE_ENV=development\nPORT=3000\n\n# Database\nDATABASE_URL=postgresql://postgres:postgres@localhost:5432/aloha_secourisme\n\n# JWT\nJWT_SECRET=your_jwt_secret_key\nJWT_EXPIRES_IN=1d\n\n# Admin\nADMIN_EMAIL=contact@aloha-secourisme.fr\n\n# SMTP\nSMTP_HOST=smtp.example.com\nSMTP_PORT=465\nSMTP_USER=noreply@example.com\nSMTP_PASS=your_smtp_password\n\n# Logging\nLOG_LEVEL=info\n```\n\n### Base de données\n\nCette API utilise PostgreSQL avec Prisma comme ORM. La structure de la base de données est définie dans le fichier `prisma/schema.prisma`.\n\n### Configuration des emails\n\nPour que les notifications par email fonctionnent correctement, configurez les paramètres SMTP dans le fichier `.env`.\n\n## 🛠️ Utilisation\n\n### Scripts disponibles\n\n- `npm run start:dev` : Démarrer l'API en mode développement avec hot-reload\n- `npm run build` : Compiler le projet TypeScript\n- `npm run start:prod` : Démarrer l'API en mode production\n- `npm run lint` : Exécuter ESLint pour vérifier le code\n- `npm run test` : Exécuter les tests unitaires\n- `npm run test:e2e` : Exécuter les tests end-to-end\n- `npm run create-admin` : Créer un compte super administrateur\n- `npm run prisma:studio` : Ouvrir Prisma Studio pour explorer la base de données\n\n### Accès à l'API\n\nUne fois démarrée, l'API est accessible à l'adresse `http://localhost:3000/api`.\n\n### Documentation Swagger\n\nLa documentation Swagger est disponible à l'adresse `http://localhost:3000/docs`.\n\n## 📐 Architecture\n\nL'API est construite avec NestJS, un framework progressif pour Node.js. Son architecture est modulaire et respecte les principes SOLID.\n\n### Structure des dossiers\n\n```\nsrc/\n├── common/             # Filtres, gardes, intercepteurs et outils communs\n├── config/             # Configuration de l'application\n├── modules/            # Modules fonctionnels de l'API\n│   ├── admin/          # Module d'administration\n│   ├── auth/           # Authentification et autorisation\n│   ├── dashboard/      # Statistiques et tableaux de bord\n│   ├── database/       # Import/Export de la base de données\n│   ├── documents/      # Gestion des documents\n│   ├── emails/         # Service d'envoi d'emails\n│   ├── formations/     # Gestion des formations\n│   ├── gallery/        # Gestion de la galerie d'images\n│   ├── health/         # Vérification de l'état de l'API\n│   ├── inscriptions/   # Gestion des inscriptions\n│   ├── news/           # Gestion des actualités\n│   ├── settings/       # Paramètres du système\n│   └── users/          # Gestion des utilisateurs\n├── prisma/             # Configuration Prisma et modèles de données\n├── scripts/            # Scripts utilitaires\n├── templates/          # Templates d'emails\n├── app.module.ts       # Module principal de l'application\n└── main.ts             # Point d'entrée de l'application\n```\n\n### Patterns utilisés\n\n- **Repository Pattern** : Séparation de la logique d'accès aux données\n- **Dependency Injection** : Injection de dépendances pour une meilleure testabilité\n- **DTO Pattern** : Data Transfer Objects pour valider et transférer les données\n- **Service Layer** : Séparation de la logique métier\n- **Module Pattern** : Organisation du code en modules fonctionnels\n\n## 📘 Documentation API\n\nLa documentation complète de l'API est disponible via Swagger à l'adresse `http://localhost:3000/docs`. Elle inclut :\n\n- Une description détaillée de chaque endpoint\n- Les paramètres attendus et leur format\n- Les réponses possibles et leurs structures\n- Des exemples de requêtes et de réponses\n- La documentation des modèles de données\n\n## 🚢 Déploiement\n\n### Avec Docker\n\n1. Construire et démarrer les conteneurs :\n```bash\n# En mode développement\n./start.sh development\n\n# En mode production\n./start.sh production\n```\n\n2. Accéder à l'API déployée :\n```\nAPI : http://localhost:3000\nDocumentation Swagger : http://localhost:3000/docs\nPGAdmin : http://localhost:5050\n```\n\n### Configuration de production\n\nPour un déploiement en production, assurez-vous de :\n- Définir `NODE_ENV=production` dans `.env`\n- Utiliser un secret JWT fort et unique\n- Configurer correctement les paramètres SMTP\n- Utiliser HTTPS pour sécuriser les communications\n- Configurer un proxy inverse comme Nginx devant l'API\n\n## 🧪 Tests\n\n### Tests unitaires\n\nLes tests unitaires vérifient le comportement des services et des contrôleurs isolément :\n\n```bash\nnpm run test\n```\n\n### Tests end-to-end\n\nLes tests end-to-end vérifient le comportement de l'API complète :\n\n```bash\nnpm run test:e2e\n```\n\n### Couverture de tests\n\nPour générer un rapport de couverture des tests :\n\n```bash\nnpm run test:cov\n```\n\n## 🔄 Maintenance\n\n### Migrations de base de données\n\nPour créer une nouvelle migration après modification du schéma Prisma :\n\n```bash\nnpx prisma migrate dev --name nom_de_la_migration\n```\n\nPour appliquer les migrations en production :\n\n```bash\nnpx prisma migrate deploy\n```\n\n### Mise à jour des dépendances\n\nPour mettre à jour les dépendances :\n\n```bash\nnpm update\n```\n\nPour vérifier les vulnérabilités :\n\n```bash\nnpm audit\n```\n\n## 🤝 Contribution\n\nLes contributions sont les bienvenues ! Voici comment contribuer :\n\n1. Forker le dépôt\n2. Créer une branche pour votre fonctionnalité (`git checkout -b feature/ma-fonctionnalite`)\n3. Effectuer des commits clairs et descriptifs (`git commit -m 'Ajout de ma fonctionnalité'`)\n4. Pousser vos modifications (`git push origin feature/ma-fonctionnalite`)\n5. Ouvrir une Pull Request\n\n### Normes de code\n\n- Suivre les normes de style d'Airbnb pour TypeScript\n- Documenter toutes les fonctions et classes\n- Ajouter des tests pour les nouvelles fonctionnalités\n- Respecter l'architecture existante\n\n## 📞 Contact\n\nPour toute question ou suggestion concernant cette API, contactez-nous :\n\n- Email : contact@aloha-secourisme.fr\n- Site web : https://www.aloha-secourisme.fr\n\n---\n\n© 2023-2025 Aloha Secourisme. Tous droits réservés.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitssheldondev%2Faloha-ss-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitssheldondev%2Faloha-ss-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitssheldondev%2Faloha-ss-backend/lists"}