{"id":23477655,"url":"https://github.com/devpaulpops/appfytback","last_synced_at":"2026-04-10T04:34:54.511Z","repository":{"id":268301964,"uuid":"902405527","full_name":"DevPaulPOps/appFytBack","owner":"DevPaulPOps","description":"Backend Node.js/TypeScript de Find Your Team - API RESTful avec Docker, K8s et déploiement GCP 🚀","archived":false,"fork":false,"pushed_at":"2024-12-15T21:55:11.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-20T20:49:55.621Z","etag":null,"topics":["api","devops","docker","express","google","google-cloud-platform","jest","kubernetes","mongodb","nodejs","terraform","typescript"],"latest_commit_sha":null,"homepage":"","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/DevPaulPOps.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":"2024-12-12T14:00:38.000Z","updated_at":"2024-12-15T21:55:15.000Z","dependencies_parsed_at":"2024-12-15T22:28:32.209Z","dependency_job_id":"3018ff01-cbd0-4082-bc9a-1e1196597c45","html_url":"https://github.com/DevPaulPOps/appFytBack","commit_stats":null,"previous_names":["devpaulpops/appfytback"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DevPaulPOps/appFytBack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevPaulPOps%2FappFytBack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevPaulPOps%2FappFytBack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevPaulPOps%2FappFytBack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevPaulPOps%2FappFytBack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DevPaulPOps","download_url":"https://codeload.github.com/DevPaulPOps/appFytBack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DevPaulPOps%2FappFytBack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28131073,"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","status":"online","status_checked_at":"2025-12-30T02:00:05.476Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","devops","docker","express","google","google-cloud-platform","jest","kubernetes","mongodb","nodejs","terraform","typescript"],"created_at":"2024-12-24T18:28:00.085Z","updated_at":"2025-12-30T19:00:01.711Z","avatar_url":"https://github.com/DevPaulPOps.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏃 Find Your Team (FYT) - Backend\r\n\r\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.3.3-blue)](https://www.typescriptlang.org/)\r\n[![Node.js](https://img.shields.io/badge/Node.js-20.x-green)](https://nodejs.org/)\r\n[![Express](https://img.shields.io/badge/Express-4.18.2-lightgrey)](https://expressjs.com/)\r\n[![MongoDB](https://img.shields.io/badge/MongoDB-6.3.0-green)](https://www.mongodb.com/)\r\n[![Jest](https://img.shields.io/badge/Jest-29.7.0-red)](https://jestjs.io/)\r\n\r\nAPI Backend pour l'application Find Your Team, permettant aux sportifs de trouver des partenaires d'entraînement.\r\n\r\n## 📑 Table des Matières\r\n\r\n- [Fonctionnalités](#-fonctionnalités)\r\n- [Architecture](#-architecture)\r\n- [Installation](#-installation)\r\n- [API Reference](#-api-reference)\r\n- [Infrastructure](#-infrastructure)\r\n- [Tests](#-tests)\r\n\r\n## 🎯 Fonctionnalités\r\n\r\n- **👥 Gestion Utilisateurs**\r\n\r\n  - Authentification sécurisée\r\n  - Profils sportifs personnalisés\r\n  - Préférences d'entraînement\r\n\r\n- **📅 Gestion Événements**\r\n\r\n  - Création/modification d'événements sportifs\r\n  - Recherche géolocalisée\r\n  - Filtrage par sport et niveau\r\n\r\n- **🏷️ Catalogue Sports**\r\n  - Catégorisation des sports\r\n  - Niveaux de pratique\r\n  - Informations détaillées\r\n\r\n## 🏗️ Architecture\r\n\r\n```\r\nsrc/\r\n├── app.ts                 # Point d'entrée\r\n├── event/                 # Gestion des événements\r\n│   ├── event.model.ts\r\n│   └── eventsRoutes.ts\r\n├── sport/                 # Catalogue des sports\r\n│   ├── enum/\r\n│   ├── sports.model.ts\r\n│   └── sportsRoutes.ts\r\n└── user/                  # Gestion utilisateurs\r\n    ├── user.model.ts\r\n    └── usersRoutes.ts\r\n\r\ntests/\r\n├── integration/           # Tests d'intégration\r\n└── unit/                 # Tests unitaires\r\n```\r\n\r\n## 🚀 Installation\r\n\r\n### Prérequis\r\n\r\n- Node.js \u003e= 20.11\r\n- npm \u003e= 10.x\r\n- MongoDB \u003e= 6.3\r\n- TypeScript \u003e= 5.3\r\n\r\n### Méthode 1: Docker (Recommandée)\r\n\r\n```bash\r\n# Installation complète avec Docker\r\nmake install\r\n\r\n# Ou étape par étape\r\nmake create-network\r\nmake run-mongodb\r\nmake run-backend\r\n```\r\n\r\n### Méthode 2: Installation Locale\r\n\r\n```bash\r\n# Cloner le projet\r\ngit clone git@github.com:DevPaulPOps/appFytBack.git\r\ncd appFytBack\r\n\r\n# Installer les dépendances\r\nnpm install\r\n\r\n# Démarrer en développement\r\nnpm run dev\r\n```\r\n\r\n## 📘 API Reference\r\n\r\n### Événements\r\n\r\n```http\r\nGET /api/events               # Liste des événements\r\nPOST /api/events              # Créer un événement\r\nGET /api/events/:id           # Détails d'un événement\r\nPUT /api/events/:id           # Modifier un événement\r\nDELETE /api/events/:id        # Supprimer un événement\r\n```\r\n\r\n### Utilisateurs\r\n\r\n```http\r\nGET /api/users               # Liste des utilisateurs\r\nPOST /api/users              # Créer un utilisateur\r\nGET /api/users/:id           # Profil utilisateur\r\nPUT /api/users/:id           # Modifier un profil\r\n```\r\n\r\n## 🏗️ Infrastructure\r\n\r\n### Docker\r\n\r\n```bash\r\n# Build de l'image\r\ndocker build -t fyt-backend .\r\n\r\n# Lancer le conteneur\r\ndocker run -p 3000:3000 fyt-backend\r\n```\r\n\r\n### Kubernetes (k8s)\r\n\r\nLes manifestes Kubernetes sont disponibles dans le dossier `k8s/`:\r\n\r\n- Déploiements pour backend, frontend, et base de données\r\n- Services correspondants\r\n- Configuration Ingress\r\n\r\n### CI/CD (Google Cloud)\r\n\r\nPipeline configuré dans `cloudbuild.yaml`:\r\n\r\n1. Installation des dépendances\r\n2. Build de l'application\r\n3. Tests\r\n4. Build et push Docker\r\n5. Déploiement Terraform\r\n6. Déploiement sur Cloud Run\r\n\r\n## 🧪 Tests\r\n\r\n```bash\r\n# Lancer tous les tests\r\nnpm test\r\n\r\n# Tests unitaires uniquement\r\nnpm run test:unit\r\n\r\n# Tests d'intégration\r\nnpm run test:integration\r\n\r\n# Couverture de code\r\nnpm run test:coverage\r\n```\r\n\r\n## 🔧 Variables d'Environnement\r\n\r\n```env\r\nPORT=3000\r\nMONGODB_URI=mongodb://localhost:27017/fyt\r\nNODE_ENV=development\r\nJWT_SECRET=your_jwt_secret\r\n```\r\n\r\n## 📦 Stack Technique\r\n\r\n### Core\r\n\r\n- Node.js avec TypeScript 5.3.3\r\n- Express.js 4.18.2\r\n- MongoDB 6.3.0\r\n- Mongoose 8.1.1\r\n\r\n### Développement\r\n\r\n- Jest 29.7.0\r\n- ts-node 10.9.2\r\n- ts-jest 29.1.2\r\n- TypeScript 5.3.3\r\n\r\n### Utilitaires\r\n\r\n- cors 2.8.5\r\n- body-parser 1.20.2\r\n- node-cron 3.0.3\r\n- express-oauth2-jwt-bearer 1.6.0\r\n\r\n### Testing\r\n\r\n- Supertest 6.3.4\r\n- Faker 5.5.3\r\n\r\n### Scripts Disponibles\r\n\r\n```bash\r\nnpm start        # Démarre avec ts-node\r\nnpm run build    # Compile TypeScript\r\nnpm run dev      # Développement avec hot-reload\r\nnpm test         # Lance les tests avec couverture\r\nnpm run test:watch # Tests en mode watch\r\n```\r\n\r\n---\r\n\r\n_Développé avec ❤️ pour la communauté sportive_\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevpaulpops%2Fappfytback","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevpaulpops%2Fappfytback","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevpaulpops%2Fappfytback/lists"}