Slide 0
~30 sec
Page de garde
"Bonjour à tous. Je m'appelle Bruno Guns et je me présente aujourd'hui dans le cadre du titre professionnel de niveau 6 Concepteur Développeur d'Application, aboutissement de ma formation de 9 mois au sein de SEM Numérica."
Slide 1
~1 min
Introduction aux 11 compétences
"Durant cette présentation de 40 minutes, je vais vous démontrer ma maîtrise des 11 compétences requises pour l'obtention de ce titre professionnel, à travers des expériences concrètes que j'ai vécues durant ma formation."
"Vous remarquerez que sur chaque slide, en haut à droite, j'indique à quelle compétence je fais référence."
Slide 2
~1 min 30
Présentation du projet FailDaily
"Laissez-moi vous présenter
FailDaily - un réseau social mobile pour partager ses galères du quotidien."
Les fonctionnalités principales :
- Publier : Les utilisateurs peuvent publier leurs fails avec texte, photo, choix de catégorie et mode anonyme
- Réagir : 4 réactions positives uniquement - pas de négativité, c'est important pour l'ambiance bienveillante
- Gamification : Points et badges pour encourager l'engagement
- Sécurité : Modération active et accord parental pour les mineurs
Slide 3
~1 min 30
Analyser les besoins - Compétence 5
"La première étape : analyser les besoins. J'ai identifié les fonctionnalités essentielles."
Points clés :
- Inscription avec vérification email - important pour la sécurité
- Mode anonyme ou visible - l'utilisateur choisit pour chaque fail
- 4 réactions positives uniquement - pas de dislike, pas de négativité
- Modération - pour protéger la communauté
Slide 4
~1 min
Créer les maquettes - Compétence 5
"Une fois les besoins identifiés, j'ai créé des maquettes de toutes les pages de l'application. C'est comme un architecte qui dessine une maison avant de la construire."
"Voici les deux premières pages : l'inscription et la connexion. J'ai veillé à ce que les formulaires soient simples et clairs, avec des icônes pour guider l'utilisateur."
Slide 4B
~1 min
Maquettes - Liste et Création
"J'ai conçu le fil d'actualité où les utilisateurs voient les fails publiés, et le formulaire de création pour publier un nouveau fail. Vous remarquerez les réactions en bas de chaque carte, et les catégories colorées."
Slide 4C
~1 min
Maquettes - Badges et Profil
"J'ai designé la page des badges qui montre la progression de l'utilisateur avec une barre de niveau, et la page profil qui affiche ses statistiques et ses fails publiés."
Décisions de design :
- Navigation en bas pour faciliter l'accès sur mobile
- Gradients violet/bleu pour une ambiance moderne
- Badges oranges pour attirer l'œil
Slide 5
~2 min
Définir l'architecture - Compétence 6
"J'ai défini une
architecture 3-tiers professionnelle."
Les 3 couches :
- Frontend (Présentation) : Angular 17 + Ionic 7 - Interface utilisateur cross-platform
- Backend (Logique métier) : Node.js + Express - API REST pour traiter les requêtes
- Base de données : MySQL - Stockage persistant des données
"Cette séparation permet de modifier une couche sans impacter les autres."
Slide 6
~1 min 30
Concevoir la base de données - Compétence 7
"J'ai conçu une base de données relationnelle avec
8 tables."
Tables principales :
- USERS : Utilisateurs avec pseudo, email, points, niveau
- FAILS : Publications avec texte, photo, catégorie, mode anonyme
- REACTIONS : Réactions des utilisateurs sur les fails
- BADGES : Système de gamification
Slide 6B
~1 min 30
Schéma de la base de données
"Voici le schéma complet avec les relations entre les tables."
Relations importantes :
- Un utilisateur peut publier plusieurs fails (1-N)
- Un fail peut recevoir plusieurs réactions (1-N)
- Un utilisateur peut débloquer plusieurs badges (N-N)
"J'ai utilisé des clés étrangères pour garantir l'intégrité référentielle."
Slide 7
~1 min 30
Installer l'environnement - Compétence 1
"Pour développer ce projet, j'ai installé et configuré mon environnement de travail."
Outils installés :
- Node.js 20 : Runtime JavaScript pour le backend
- MySQL 8.0 : Serveur de base de données
- VS Code : Éditeur avec extensions (ESLint, Prettier)
- Git : Gestion de versions
Slide 8
~1 min 30
Gérer le projet avec Git - Compétence 4
"J'ai utilisé Git pour versionner mon code."
Workflow :
git init : Initialiser le dépôt
git add . : Ajouter les fichiers modifiés
git commit -m "message" : Créer un point de sauvegarde
git push : Envoyer sur GitHub
"Git me permet de revenir en arrière en cas d'erreur et de travailler sur plusieurs fonctionnalités en parallèle avec les branches."
Slide 9
~4 min
Développer l'accès aux données - Compétence 8
"J'ai développé une API REST avec Node.js et Express pour accéder aux données."
Exemple : Route GET /api/fails
- Client envoie une requête HTTP GET
- Le serveur exécute
SELECT * FROM fails WHERE status='approved'
- Les données sont converties en JSON
- Le serveur renvoie un tableau de fails au format JSON
"J'utilise des requêtes préparées pour prévenir les injections SQL - c'est essentiel pour la sécurité."
Slide 10
~3 min
Logique métier : Gamification - Compétence 3
"J'ai implémenté un système de
gamification pour encourager l'engagement."
Système de points :
- Chaque réaction donne des points : courage=5pts, laugh=3pts, empathy=2pts, support=3pts
- Les points s'accumulent et débloquent des niveaux
Système de badges :
- Premier Fail, Social, Fail Master, etc.
- Fonction
checkBadges() vérifie après chaque action si un nouveau badge est débloqué
Slide 11A
~4 min
Interface Angular + Ionic - Compétence 2
"J'ai développé l'interface utilisateur avec
Angular 17 et
Ionic 7."
Pourquoi ce stack ?
- Angular : Framework TypeScript avec data binding bidirectionnel
- Ionic : Cross-platform - même code pour iOS, Android et Web
Exemple : Composant fail-card
"Le composant reçoit les données du fail, affiche les informations, et permet de réagir. Quand l'utilisateur clique sur une réaction, le compteur s'incrémente en temps réel grâce au data binding d'Angular."
Slide 11B
~4-5 min
Panel Admin + Modération - Compétences 2, 3 et 8
"Pour gérer l'application et protéger la communauté, j'ai développé un
panel d'administration avec système de modération."
Dashboard avec statistiques en temps réel :
- 1,245 Utilisateurs
- 523 Fails publiés
- 12 En attente de modération
- 8,431 Réactions
File de modération :
"Liste des fails en attente avec boutons Approuver ou Rejeter pour traiter rapidement les publications."
Sécurité :
"Un middleware
requireAdmin vérifie que l'utilisateur est admin avant d'accéder aux routes protégées. Si ce n'est pas le cas, erreur 403 Accès refusé."
Pourquoi la modération ?
"L'application accepte les utilisateurs dès 13 ans. La modération est ESSENTIELLE pour bloquer les contenus inappropriés et protéger les mineurs - c'est une obligation légale."
Slide 12
~3 min
Tests unitaires + intégration - Compétence 9
"Une fois l'application développée, il faut la tester. J'ai utilisé
Jest pour écrire mes tests."
Exemples de tests :
- Test 1 - Bloquer enfants -13 ans : Un utilisateur de 10 ans tente de s'inscrire → Résultat : Refusé avec erreur 403 ✅
- Test 2 - Système de points : Réaction 'courage' sur un fail → Résultat : +5 points ajoutés ✅
- Test 3 - Modération : Admin rejette un fail → Résultat : Status='rejected' ✅
"J'ai écrit 127 tests au total couvrant 85% du code backend."
Slide 13
~1 min 30
Documenter le déploiement - Compétence 10
"J'ai créé une
documentation complète pour que d'autres développeurs puissent déployer l'application."
Ma documentation contient :
- README.md : Description du projet et installation
- Guide d'installation : Prérequis (Node.js, MySQL) et commandes
- Variables d'environnement : Configuration de la base de données
- Procédure de déploiement : Déploiement sur serveur de production
Slide 14
~1 min 30
Déployer avec DevOps - Compétence 11
"J'ai mis en place une démarche
DevOps pour automatiser le déploiement."
Pipeline CI/CD avec GitHub Actions :
- Intégration Continue : Les tests s'exécutent automatiquement à chaque push
- Build automatique : Si les tests passent, une image Docker est créée
- Déploiement Continu : L'image est déployée automatiquement sur le serveur
"Cela me permet de déployer une nouvelle version en quelques minutes, sans intervention manuelle."
Slide 15
~2 min
Conclusion
"Je viens de vous démontrer ma maîtrise des 11 compétences du titre professionnel CDA à travers le projet FailDaily."
"Ce projet m'a permis de mettre en pratique l'ensemble des compétences acquises durant ma formation chez SEM Numérica. Je suis maintenant prêt à les appliquer en entreprise en tant que Concepteur Développeur d'Application."
"Je suis à votre disposition pour répondre à vos questions."