La plateforme officielle du Bureau Des Étudiants du département Informatique — IUT Aix-Marseille
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É
- Fonctionnalités Principales
- Architecture & Technologies
- Prérequis
- Installation & Démarrage Rapide
- Tests et Qualité
- Auteurs & Remerciements
| 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 |
| 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) |
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
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
| 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.
Avant de commencer, assurez-vous de disposer des éléments suivants :
- PHP
>= 8.2avec les extensionspdo_mysql,mbstring,xml,curl - Composer
>= 2.x— getcomposer.org - MySQL
>= 5.7ou 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
git clone https://github.com/AHAMED-Nasser/BdeLive.git
cd BdeLivecomposer install --optimize-autoloadercp .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_keyphp -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
DocumentRootpointant versapp/. Le fichier.htaccessinclus gère la réécriture des URLs.
Le projet maintient un niveau de qualité élevé grâce à trois outils intégrés dans le pipeline CI/CD.
./vendor/bin/phpunit --testdox
# ou via le script Composer
composer testcomposer phpstanPHPStan 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.
# Vérification
composer lint
# Correction automatique
composer lint:fixcomposer run docGé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
pushetpull requestvia les workflows GitHub Actions.
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 |
- 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.