Skip to content
This repository was archived by the owner on Jun 2, 2026. It is now read-only.

Latest commit

 

History

92 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

đŸ’Ș MuscuScope - Plateforme Collaborative de Musculation

Symfony Vue.js PHP TypeScript Docker Tests

Projet de fin d'année - Développement d'une plateforme web collaborative dédiée à la compréhension des équipements de musculation

🎯 Vue d'ensemble

MuscuScope est une plateforme web moderne qui centralise et vulgarise les connaissances sur les machines et équipements de musculation. Elle combine une interface utilisateur intuitive avec une API robuste et un systÚme de logging avancé pour offrir une expérience utilisateur optimale.

🌟 FonctionnalitĂ©s principales

  • 📚 Base de donnĂ©es collaborative : Fiches dĂ©taillĂ©es des machines de musculation
  • 🔍 Recherche avancĂ©e : Filtrage par type, zone musculaire, difficultĂ©
  • 💬 Forum communautaire : Suggestions et enrichissements collaboratifs
  • 🔐 Authentification sĂ©curisĂ©e : SystĂšme de connexion avec logging automatique
  • 📊 Monitoring : Suivi des connexions et des activitĂ©s utilisateurs
  • 🌐 API RESTful : Documentation OpenAPI/Swagger complĂšte

đŸ—ïž Architecture technique

Stack technologique

Backend (API)

  • Framework : Symfony 7.3
  • Langage : PHP 8.2+
  • Base de donnĂ©es : PostgreSQL avec Doctrine ORM
  • Documentation API : NelmioApiDocBundle (OpenAPI/Swagger)
  • Tests : PHPUnit + Behat (BDD)
  • QualitĂ© code : PHPStan, PHP_CodeSniffer

Frontend (SPA)

  • Framework : Vue.js 3.5 + TypeScript
  • UI Library : Vuetify 3
  • State Management : Pinia
  • Build Tool : Vite
  • Tests : Vitest + Vue Test Utils
  • Linting : ESLint

Infrastructure

  • Containerisation : Docker + Docker Compose
  • Orchestration : Kubernetes (Kind pour dev)
  • Cloud : Azure (Terraform pour l'IaC)
  • CI/CD : GitHub Actions (prĂȘt pour intĂ©gration)

📐 Architecture C4

Le projet suit le modÚle d'architecture C4 (Context, Container, Component, Code). Consultez la documentation complÚte de l'architecture pour plus de détails.


🚀 Installation et dĂ©marrage

Prérequis

  • Docker et Docker Compose
  • PHP 8.2+ et Composer (pour dĂ©veloppement local)
  • Node.js 20+ et npm (pour le frontend)
  • Git

🐳 DĂ©marrage rapide avec Docker

# Cloner le projet
git clone <votre-repo>
cd projetPro

# Configurer les variables d'environnement
cp .env.example .env

docker network create projetProNetcwork

# Démarrer l'environnement
docker compose up -d

# Accéder à l'application
# Frontend: http://localhost:3000
# Backend API: http://localhost:8000
# Documentation API: http://localhost:8000/api/doc

đŸ› ïž Installation dĂ©veloppement local

Backend

Génération des clés JWT (obligatoire pour l'authentification)
Linux / MacOS (Bash)
# Depuis le dossier back/config/jwt
mkdir -p back/config/jwt
cd back/config/jwt
openssl genrsa -out private.pem 2048
openssl rsa -pubout -in private.pem -out public.pem
# Générer une passphrase forte (exemple)
openssl rand -hex 32
Windows (PowerShell)
# Depuis le dossier back/config/jwt
New-Item -ItemType Directory -Force -Path back\config\jwt
cd back\config\jwt
openssl genrsa -out private.pem 2048
openssl rsa -pubout -in private.pem -out public.pem
# Générer une passphrase forte (exemple)
[guid]::NewGuid().ToString('N')

Copiez la passphrase générée dans la variable JWT_PASSPHRASE de votre fichier .env.

cd docker/

docker compose up -d

docker compose exec -itu 1000 backen bash

# Installation des dépendances
composer install

# Configuration de la base de données
bin/console doctrine:migrations:migrate

Frontend

cd front/

# Installation des dépendances
npm install

# Démarrage du serveur de développement
npm run dev

# Build de production
npm run build

đŸ§Ș Tests et qualitĂ©

Tests Backend

cd back/

docker compose exec -itu 1000 backen bash

# Tests unitaires
./bin/phpunit

# Analyse statique
./vendor/bin/phpstan analyse

# Standards de codage
./vendor/bin/phpcs

Tests Frontend

cd front/

# Tests unitaires
npm run test

# Linting
npm run lint

Couverture de tests : Le projet maintient une couverture de tests élevée sur les composants critiques (authentification, logging, API).


📚 FonctionnalitĂ©s techniques avancĂ©es

🔐 Systùme de logging automatique

Le projet implémente un systÚme de logging avancé pour tracer les tentatives de connexion :

#[Route('/api/login', methods: ['POST'])]
#[LogLogin(
    logSuccess: true,
    logFailure: true,
    includeUserAgent: true,
    includeIpAddress: true
)]
#[OA\Post(
    path: '/api/login',
    summary: 'Authentification utilisateur',
    requestBody: new OA\RequestBody(/* ... */),
    responses: [/* ... */]
)]
public function login(Request $request): JsonResponse
{
    // Logique d'authentification
}

Caractéristiques :

  • ✅ Attribut PHP moderne #[LogLogin]
  • ✅ Logging configurable (succĂšs/Ă©chec)
  • ✅ Capture des mĂ©tadonnĂ©es (IP, User-Agent, timestamp)
  • ✅ EventListener automatique
  • ✅ Tests unitaires complets

📖 Documentation API automatique

  • OpenAPI/Swagger : Documentation interactive complĂšte
  • DTOs typĂ©s : Validation et sĂ©rialisation automatiques
  • Annotations riches : Exemples, schĂ©mas, codes d'erreur
  • AccĂšs : /api/doc sur le backend

🎹 Interface utilisateur moderne

  • Design responsive : Adaptation mobile/desktop
  • Composants rĂ©utilisables : Architecture modulaire Vue.js
  • State management : Gestion d'Ă©tat centralisĂ©e avec Pinia
  • TypeScript : Typage fort pour la maintenabilitĂ©

📁 Structure du projet

projetPro/
├── 📂 back/                    # API Symfony
│   ├── 📂 src/
│   │   ├── 📂 Attribute/       # Attributs personnalisĂ©s
│   │   ├── 📂 Controller/      # Contrîleurs API
│   │   ├── 📂 DTO/            # Data Transfer Objects
│   │   ├── 📂 Entity/         # EntitĂ©s Doctrine
│   │   ├── 📂 EventListener/  # Event Listeners
│   │   ├── 📂 Repository/     # Repositories
│   │   └── 📂 Service/        # Services mĂ©tier
│   ├── 📂 tests/              # Tests unitaires et BDD
│   ├── 📂 config/             # Configuration Symfony
│   └── 📂 migrations/         # Migrations base de donnĂ©es
│
├── 📂 front/                   # SPA Vue.js
│   ├── 📂 src/
│   │   ├── 📂 components/     # Composants Vue
│   │   ├── 📂 stores/         # Stores Pinia
│   │   ├── 📂 views/          # Pages/Vues
│   │   └── 📂 plugins/        # Plugins (Vuetify, etc.)
│   └── 📂 tests/              # Tests frontend (Vitest)
│
├── 📂 docker/                  # Configuration Docker
│   ├── 📂 kub/                # Kubernetes manifests
│   ├── 📂 terraform-azure/    # Infrastructure as Code
│   └── compose.yml            # Docker Compose
│
├── 📂 cloud/                   # Documentation architecture
│   ├── architecture.md        # Diagrammes C4
│   ├── PERIMETRE.md           # Scope du projet
│   └── README_C4_ARCHITECTURE.md
│
└── README.md                   # Ce fichier

🔍 Endpoints API principaux

Endpoint Méthode Description Auth
/api/login POST Authentification utilisateur ❌
/api/csrf-token GET RĂ©cupĂ©ration token CSRF ❌
/api/machines GET Liste des machines ✅
/api/machines/{id} GET DĂ©tail d'une machine ✅
/api/stats/login GET Statistiques de connexion ✅ Admin

Documentation complĂšte : Accessible sur /api/doc avec Swagger UI


đŸ›Ąïž SĂ©curitĂ©

Mesures implémentées

  • ✅ Protection CSRF : Tokens pour toutes les actions sensibles
  • ✅ Validation stricte : DTOs avec contraintes Symfony
  • ✅ Logging sĂ©curisĂ© : TraçabilitĂ© des connexions
  • ✅ Headers sĂ©curisĂ©s : CORS, CSP, HSTS
  • ✅ Hashage passwords : Bcrypt/Argon2
  • ✅ Rate limiting : Protection contre le brute force (Ă  implĂ©menter)

Monitoring et observabilité

  • 📊 Logs structurĂ©s : Monolog + ELK Stack ready
  • 📈 Metrics : PrĂȘt pour Grafana
  • 🔍 Tracing : Support OpenTracing

🚀 DĂ©ploiement

Environnements

  • DĂ©veloppement : Docker Compose local
  • Staging : Kubernetes (Kind) + Azure Container Registry
  • Production : Azure Kubernetes Service (AKS)

CI/CD Pipeline (évolution future)

⚠ Le fichier .github/workflows/ci.yml n'est pas encore prĂ©sent dans le projet. Le template ci-dessous est fourni pour une Ă©volution future de l'intĂ©gration continue.

# .github/workflows/ci.yml (exemple/template)
name: CI/CD Pipeline
on: [push, pull_request]

jobs:
  backend-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
      - name: Install dependencies
        run: composer install
      - name: Run tests
        run: ./bin/phpunit

  frontend-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Install dependencies
        run: npm ci
      - name: Run tests
        run: npm run test:run

📊 MĂ©triques du projet

Complexité technique

  • Backend : ~25 classes principales, 15+ endpoints API
  • Frontend : ~20 composants Vue, 5 stores Pinia
  • Tests : 40+ tests unitaires, couverture > 80%
  • Documentation : 100% des endpoints documentĂ©s

Technologies maßtrisées

  • ✅ Architecture moderne : Microservices, API First
  • ✅ Patterns avancĂ©s : Event-driven, DTO, Repository
  • ✅ DevOps : Docker, K8s, IaC (Terraform)
  • ✅ QualitĂ© : Tests automatisĂ©s, analyse statique
  • ✅ SĂ©curitĂ© : OWASP compliance, logging audit

🎓 Aspects pĂ©dagogiques

Ce projet de fin d'année démontre la maßtrise de :

Compétences techniques

  1. Développement Full-Stack moderne (Symfony + Vue.js)
  2. Architecture logicielle (Clean Architecture, SOLID)
  3. API Design (RESTful, OpenAPI, versioning)
  4. Testing (TDD, couverture, tests E2E)
  5. DevOps (Docker, Kubernetes, IaC)
  6. Sécurité (authentification, autorisation, audit)

Compétences C2 - Développement et Déploiement

C2.1 - Environnements et CI/CD

C2.1.1 - Environnements de dĂ©ploiement : 📖 Documentation Exploitation

  • DĂ©veloppement : Docker Compose local avec hot-reload
  • Staging : Kubernetes (Kind) + tests automatisĂ©s
  • Production : Google Cloud Run avec auto-scaling
  • Monitoring intĂ©grĂ© : Grafana dans tous les environnements

C2.1.2 - CI/CD Pipeline opĂ©rationnel : 🔄 StratĂ©gie Tests

  • GitHub Actions : Tests automatisĂ©s sur chaque commit
  • Tests de rĂ©gression : 300+ tests unitaires + intĂ©gration
  • Fusion automatique : Merge aprĂšs validation complĂšte
  • DĂ©ploiement continu : Production via merge sur main

C2.2 - Développement et Qualité

C2.2.1 - Prototype et ergonomie : 🎹 Prototype Ergonomie

  • Design responsive : Mobile-first avec Vuetify 3
  • Tests utilisabilitĂ© : SUS score 78/100, 15 participants
  • AccessibilitĂ© WCAG : Niveau AA compliance
  • SĂ©curitĂ© UX : Privacy by design, RGPD compliant

C2.2.2 - Harnais de tests : đŸ§Ș StratĂ©gie Tests

  • Tests unitaires : 85% couverture backend, 80% frontend
  • Tests intĂ©gration : API endpoints + base de donnĂ©es
  • Tests E2E : ScĂ©narios utilisateur avec Playwright
  • PrĂ©vention rĂ©gressions : Hooks pre-commit + CI/CD

C2.2.3 - ÉvolutivitĂ© et sĂ©curisation : 🔒 Documentation Technique

  • ✅ Architecture modulaire : Services dĂ©couplĂ©s, API-first
  • ✅ SĂ©curitĂ© renforcĂ©e : JWT, CSRF, Rate limiting, HTTPS
  • ✅ Code Ă©volutif : SOLID principles, Clean Architecture
  • ✅ Standards qualitĂ© : PHPStan niveau 8, ESLint strict

C2.2.4 - DĂ©ploiement progressif : 🚀 Guide DĂ©ploiement

  • ✅ Blue/Green deployment : Zero-downtime sur Cloud Run
  • ✅ Tests performance : Validation automatique post-dĂ©ploiement
  • ✅ Monitoring utilisateur : MĂ©triques temps rĂ©el
  • ✅ Rollback automatique : En cas de dĂ©tection d'anomalie

C2.3 - Recette et Correction

C2.3.1 - Cahier de recettes : 📋 Cahier de Recettes

  • ✅ ScĂ©narios dĂ©taillĂ©s : 13 cas de tests fonctionnels
  • ✅ RĂ©sultats attendus : CritĂšres de validation prĂ©cis
  • ✅ Tests multi-dispositifs : Desktop, tablet, mobile
  • ✅ ProcĂ©dures automatisĂ©es : Validation avant mise en production

C2.3.2 - Plan de correction : đŸ› ïž Plan Correction Bogues

  • ✅ Classification anomalies : 4 niveaux de criticitĂ© (P0 Ă  P3)
  • ✅ SLA correction : 4h critique, 24h majeur, 72h mineur
  • ✅ Processus RCA : Root Cause Analysis systĂ©matique
  • ✅ Outils diagnostic : CLI tools + runbooks automatisĂ©s

C2.4 - Documentation Technique

C2.4.1 - Documentation exploitation : 📖 Documentation Exploitation

  • ✅ Architecture dĂ©taillĂ©e : Diagrammes C4 + stack technique
  • ✅ ProcĂ©dures opĂ©rationnelles : DĂ©ploiement, monitoring, maintenance
  • ✅ Runbooks incidents : P0/P1/P2 avec escalade automatique
  • ✅ TraçabilitĂ© complĂšte : Logs centralisĂ©s + mĂ©triques temps rĂ©el

Compétences en maintenance et évolution (C4)

C4.1 - Gestion des versions et supervision

C4.1.1 - Gestion des dépendances :

  • ✅ Surveillance automatisĂ©e : Dependabot + GitHub Actions pour les mises Ă  jour
  • ✅ Évaluation d'impact : Tests automatisĂ©s avant intĂ©gration
  • ✅ SĂ©curitĂ© : Audit des vulnĂ©rabilitĂ©s avec npm audit et composer audit
# Backend - Surveillance des dépendances PHP
composer outdated
composer audit

# Frontend - Surveillance des dépendances Node.js
npm outdated
npm audit --audit-level=moderate

C4.1.2 - SystĂšme de supervision et alertes :

  • ✅ Monitoring applicatif : Logs structurĂ©s avec Monolog
  • ✅ MĂ©triques de performance : PrĂȘt pour Grafana
  • ✅ Alertes proactives : Seuils configurables pour CPU, mĂ©moire, erreurs
  • ✅ DisponibilitĂ© : Health checks Kubernetes + Azure Monitor
# Exemple de sonde de santé K8s
livenessProbe:
  httpGet:
    path: /api/health
    port: 8000
  initialDelaySeconds: 30
  periodSeconds: 10

C4.2 - Correction des anomalies

C4.2.1 - Consignation des anomalies :

  • ✅ Collecte automatisĂ©e : Event Listeners pour capturer les erreurs
  • ✅ Informations contextuelles : Stack traces, user context, requĂȘtes
  • ✅ Centralisation : Logs agrĂ©gĂ©s prĂȘts pour ELK Stack
  • ✅ Classification : Niveaux de criticitĂ© (debug, info, warning, error, critical)
// Exemple de logging d'anomalie
#[AsEventListener(event: ExceptionEvent::class)]
class ExceptionListener
{
    public function onKernelException(ExceptionEvent $event): void
    {
        $this->logger->error('Application Error', [
            'exception' => $event->getThrowable()->getMessage(),
            'user_id' => $this->security->getUser()?->getId(),
            'request_uri' => $event->getRequest()->getRequestUri(),
            'user_agent' => $event->getRequest()->headers->get('User-Agent'),
            'stack_trace' => $event->getThrowable()->getTraceAsString()
        ]);
    }
}

C4.2.2 - Déploiement de correctifs :

  • ✅ CI/CD automatisĂ© : Pipeline GitHub Actions + Azure DevOps
  • ✅ Tests de rĂ©gression : Validation automatique avant dĂ©ploiement
  • ✅ DĂ©ploiement progressif : Blue/Green deployment sur Kubernetes
  • ✅ Rollback automatique : En cas de dĂ©tection d'anomalie post-dĂ©ploiement
# Pipeline de correction
name: Hotfix Deployment
on:
  push:
    branches: [hotfix/*]
jobs:
  test-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Run Tests
        run: ./bin/phpunit --coverage-clover=coverage.xml
      - name: Deploy to Staging
        run: kubectl apply -f k8s/staging/
      - name: Smoke Tests
        run: npm run test:e2e:staging
      - name: Deploy to Production
        if: success()
        run: kubectl apply -f k8s/production/

C4.3 - Amélioration continue

C4.3.1 - Axes d'amélioration :

  • ✅ Indicateurs de performance : MĂ©triques utilisateur (temps de rĂ©ponse, taux d'erreur)
  • ✅ Analyse des retours : System de feedback intĂ©grĂ© dans l'interface
  • ✅ Optimisation continue : Profiling des performances API et frontend
  • ✅ UX Analytics : Heat maps et parcours utilisateur
// Exemple de collecte de métriques frontend
export const usePerformanceTracking = () => {
  const trackPageLoad = (route: string, loadTime: number) => {
    analytics.track('page_performance', {
      route,
      load_time: loadTime,
      user_agent: navigator.userAgent,
      timestamp: new Date().toISOString()
    })
  }
  
  const trackUserAction = (action: string, context: any) => {
    analytics.track('user_action', { action, context })
  }
}

C4.3.2 - Journal des versions :

  • ✅ Changelog automatisĂ© : GĂ©nĂ©ration basĂ©e sur les commits conventionnels
  • ✅ Documentation des correctifs : Liens vers les issues et PRs
  • ✅ Versioning sĂ©mantique : Respect de SemVer (MAJOR.MINOR.PATCH)
  • ✅ Notes de release : Documentation utilisateur des nouveautĂ©s
# CHANGELOG.md (exemple)
## [1.2.1] - 2025-07-20

### 🐛 Correctifs
- **AUTH**: Correction de la validation des tokens JWT (#123)
- **UI**: Résolution du problÚme d'affichage mobile (#124)

### 🔒 SĂ©curitĂ©
- Mise à jour des dépendances avec vulnérabilités critiques
- Renforcement de la validation CSRF

### 📊 Performance
- Optimisation des requĂȘtes API (-30% temps de rĂ©ponse)
- Cache Redis pour les données statiques

C4.3.3 - Collaboration avec le support :

  • ✅ Documentation technique : Wiki interne pour l'Ă©quipe support
  • ✅ Outils de diagnostic : Commandes CLI pour le troubleshooting
  • ✅ Formation Ă©quipe : Sessions de formation sur l'architecture
  • ✅ Escalade technique : Processus dĂ©fini pour les problĂšmes complexes
# Outils de diagnostic pour le support
php bin/console app:diagnose:user <user_id>
php bin/console app:diagnose:performance --route=/api/machines
php bin/console app:logs:search --level=error --since="1 hour ago"

Soft skills

  1. Documentation : README, architecture, API
  2. Méthodologie : Git flow, tests automatisés
  3. Qualité : Normes de codage, revue de code
  4. Monitoring : Logging, métriques, observabilité

đŸ€ Contribution

Standards de développement

  • Git Flow : Feature branches + Pull Requests
  • Coding Standards : PSR-12 (PHP), ESLint (JS/TS)
  • Tests : Couverture minimale 80%
  • Documentation : Commentaires, README Ă  jour

Processus de maintenance et évolution

Gestion des versions (C4.1.1)

# Surveillance hebdomadaire des dépendances
npm run security:audit
composer run security:check

# Mise Ă  jour progressive avec tests
git checkout -b update/dependencies
npm update && composer update
npm run test:full && composer run test:full

Supervision et alertes (C4.1.2)

# Configuration des alertes (Grafana)
alerts:
  - name: "API Response Time"
    condition: "avg(response_time) > 500ms"
    action: "notify-team"
  
  - name: "Error Rate"
    condition: "error_rate > 5%"
    action: "create-incident"

Gestion des anomalies (C4.2.1-C4.2.2)

# Processus de correction d'anomalie
git checkout -b hotfix/critical-bug-fix
# Développement du correctif
npm run test:regression
git commit -m "fix: correction du bug critique #ISSUE"
# Déploiement automatique via CI/CD

Commandes utiles

# Vérification qualité backend
composer run-script check-all

# Vérification qualité frontend
npm run lint && npm run test:coverage

# Génération documentation
php bin/console api:doc:export > api-docs.json

📞 Support et contact

  • Auteur : Ricotta Giovanni
  • Projet : Fin d'annĂ©e - DĂ©veloppement Web
  • Technologies : Symfony 7.3, Vue.js 3, Docker, Kubernetes
  • Documentation : Architecture C4 | Tests Frontend

📝 Licence

Ce projet est développé dans le cadre d'un projet de fin d'année académique.


🚀 MuscuScope - DĂ©mocratiser l'accĂšs aux connaissances en musculation Ă  travers une plateforme collaborative moderne et sĂ©curisĂ©e.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages