Skip to content

AHAMED-Nasser/BdeLive

Repository files navigation

BDELive — Inform'Aix

La plateforme officielle du Bureau Des Étudiants du département Informatique — IUT Aix-Marseille

CI/CD Pipeline Vérification PHP Deploy Documentation PHP 8.2+ MySQL PHPStan PHPUnit PSR-12 Licence

🌐 Accéder au site

📚 Documentation en ligne


BDELive — Inform'Aix est la plateforme web officielle du BDE (Bureau Des Étudiants) du département BUT Informatique de l'IUT Aix-Marseille. Elle centralise la communication, la gestion des événements et l'accès aux actualités du campus, développée dans le cadre d'une SAÉ


Table des matières


Fonctionnalités Principales

Fonctionnalité Description
Actualités & Articles CRUD complet — publication, modification et suppression d'articles par les membres BDE
Billetterie & Événements Création d'événements, inscription individuelle, inscription en équipe avec système d'invitations par lien
Emploi du temps ADE Synchronisation live via parsing de fichiers ICS ADE — vue hebdomadaire pour les 3 promotions BUT
Espace Utilisateur Sécurisé Gestion de profil, consentement RGPD, export de données, suppression de compte différée
Panneau d'Administration Gestion des membres, modération des contenus, supervision des inscriptions
Dark Mode Thème sombre natif CSS3, persistant sans JavaScript framework
Export PDF Génération de billets et résumés d'inscription via DomPDF
Sécurité renforcée reCAPTCHA v2, vérification d'e-mail à l'inscription, protection anti-bruteforce

Architecture & Technologies

Stack Technique

PHP MySQL HTML5 CSS3 JavaScript Composer PHPMailer Cloudinary PHPStan PHPUnit GitHub Actions DomPDF

Couche Technologie
Backend PHP 8.2+, architecture MVC 2 custom (sans Laravel, sans Symfony)
Routeur app/rooter.php + Core/Application.php — dispatch centralisé
DI Container Core/Container.php + Core/ContainerFactory.php — injection de dépendances
Base de données MySQL / MariaDB via PDO, Prepared Statements exclusivement
Frontend HTML5 sémantique, CSS3 (Flexbox / Grid, Dark Mode), JavaScript Vanilla
Sécurité CSRF global (Core/Security/CsrfProtection.php), XSS (htmlspecialchars), reCAPTCHA v2
Emails PHPMailer 7 (SMTP)
Images CDN Cloudinary SDK PHP 3
Export PDF DomPDF 3
Tâches planifiées Scripts CRON — nettoyage tokens expirés, purge des comptes en attente
Qualité PHPStan level 8, PHPUnit 12, PHP_CodeSniffer (PSR-12)
CI/CD GitHub Actions — 3 pipelines (qualité, vérification PHP, déploiement doc)

Architecture MVC

BDELive suit un pattern MVC 2 organisé par domaine fonctionnel. Le routeur central (rooter.php) analyse la requête HTTP entrante et dispatche vers le contrôleur approprié via un conteneur d'injection de dépendances. Chaque domaine (Articles, Events, Users, Admin, Public…) regroupe ses propres contrôleurs, modèles, repositories et vues.

Le schéma ci-dessous illustre le cycle de vie d'une requête et met en valeur les patterns MVC 2, Data Mapper et Dependency Injection.

flowchart TD
    subgraph Client [Client]
        Nav[Client / Browser]
    end

    subgraph Core [Core]
        App[Application / Router]
    end

    subgraph DI [Dependency Injection]
        Ctrl[Controller]
    end

    subgraph Domain [Domain]
        Repo[Repository]
        DB[(Database)]
        Factory[Factory]
        Entity[Entity]
    end

    subgraph View [View]
        Template[View - PHP templates]
    end

    Nav -->|HTTP request| App
    App -->|Instantiates via DI| Ctrl
    Ctrl -->|Requests data| Repo
    Repo <-->|SQL query| DB
    Repo -->|Uses| Factory
    Factory -->|Creates| Entity
    Repo -->|Returns Entity| Ctrl
    Ctrl -->|Passes data| Template
    Template -->|HTML response| Nav
Loading

Patterns illustrés : MVC 2 — séparation Controller / View · Data Mapper — Repository + Factory → Entity pure · DI — Controller instancié par le Container · Clean Architecture — le Domain ne dépend pas des couches supérieures

Diagrammes et documentation

Document Formats
Architecture logicielle PUML · SVG
Cas d'utilisation (RBAC) Visiteur · Utilisateur · Admin · Super Admin
Diagramme de classes PUML · SVG
Schéma relationnel BDD PNG
Documentation API (PHPDoc) Index HTML — générée par phpDocumentor
Audit de sécurité OWASP ZAP Rapport HTML — scan ZAP by Checkmarx

Générer la documentation API : composer run doc

📂 docs/ — Voir docs/README.md pour la structure complète.


Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • PHP >= 8.2 avec les extensions pdo_mysql, mbstring, xml, curl
  • Composer >= 2.xgetcomposer.org
  • MySQL >= 5.7 ou MariaDB >= 10.4
  • Un serveur web Apache / Nginx ou le serveur CLI intégré PHP (développement uniquement)
  • Accès à un compte Cloudinary (gratuit) et à une adresse SMTP pour les e-mails

Installation & Démarrage Rapide

1. Cloner le dépôt

git clone https://github.com/AHAMED-Nasser/BdeLive.git
cd BdeLive

2. Installer les dépendances PHP

composer install --optimize-autoloader

3. Configurer l'environnement

cp .env.example .env

Éditez ensuite le fichier .env avec vos paramètres :

# Base de données
DB_HOST=localhost
DB_NAME=bdelive_db
DB_USER=votre_utilisateur
DB_PASSWORD=votre_mot_de_passe
DB_CHARSET=utf8mb4

# SMTP (PHPMailer)
SMTP_HOST=smtp.votre-fournisseur.com
SMTP_USER=votre@email.com
SMTP_PASSWORD=votre_mot_de_passe_smtp
FROM_EMAIL=noreply@votre-domaine.com

# Cloudinary (CDN images)
CLOUDINARY_URL=cloudinary://API_KEY:API_SECRET@CLOUD_NAME

# Google reCAPTCHA v2
RECAPTCHA_SITE_KEY=votre_site_key
RECAPTCHA_SECRET_KEY=votre_secret_key

4. Lancer le serveur de développement

php -S localhost:8000 -t app/

L'application est accessible sur http://localhost:8000.

Note : Pour un environnement de production, utilisez Apache ou Nginx avec le DocumentRoot pointant vers app/. Le fichier .htaccess inclus gère la réécriture des URLs.


Tests et Qualité

Le projet maintient un niveau de qualité élevé grâce à trois outils intégrés dans le pipeline CI/CD.

Tests unitaires (PHPUnit 12)

./vendor/bin/phpunit --testdox
# ou via le script Composer
composer test

Analyse statique (PHPStan — Level 8)

composer phpstan

PHPStan analyse l'intégralité du répertoire app/ au niveau de rigueur maximal (8/10), couvrant la résolution de types, les propriétés inaccessibles et les appels de méthodes incorrects.

Style de code PSR-12 (PHP_CodeSniffer)

# Vérification
composer lint

# Correction automatique
composer lint:fix

Documentation API (PHPDoc)

composer run doc

Génère la documentation des classes, méthodes et namespaces dans docs/api/ (phpDocumentor).

Les trois vérifications (PHPUnit, PHPStan, PHPCS) sont exécutées automatiquement sur chaque push et pull request via les workflows GitHub Actions.


Auteurs & Remerciements

Projet réalisé dans le cadre d'une SAÉ — Semestre 3, BUT Informatique · IUT Aix-Marseille

AHAMED Nasser BOUDHIB Mohamed-Amine CANTOR Romain
CHETIOUI Willem HELALI Amin PALOT Thomas

Remerciements

  • M. Olivier Gérard — encadrement pédagogique et suivi du projet
  • M. Samir Chtioui — accompagnement méthodologique et organisation
  • L'ensemble du corps enseignant du département Informatique, IUT Aix-Marseille

Projet académique — usage pédagogique uniquement · IUT Aix-Marseille · BUT Informatique · 2025–2026

Licence : voir LICENSE.

About

Site web officiel du BDE Inform'Aix. Projet de programmation web côté serveur (PHP/MVC) réalisé dans le cadre de la SAÉ du semestre 3.

Topics

Resources

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages