Comprendre l'architecture, le flux d'authentification et comment construire une application similaire avec Firebase.
Cette plateforme est une Single Page Application (SPA) "légère". Contrairement aux SPAs complexes utilisant React ou Angular, nous utilisons ici du Javascript Vanilla (natif) pour manipuler le DOM. Cela permet de garder le code simple, lisible et extrêmement performant.
/
├── index.html # Point d'entrée (Login/Landing)
├── dashboard.html # Tableau de bord sécurisé
├── assets/
├── js/
├── app.js # Cerveau de l'application
├── firebase-config.js # Configuration
└── sidebar.js # Composant UI réutilisable
L'authentification est la partie la plus critique. Voici comment elle fonctionne, étape par étape, dans
app.js.
Firebase maintient une session persistante (comme un cookie). Pour savoir si un utilisateur est connecté, on n'utilise pas de simple variable, mais un Listener qui se déclenche à chaque changement d'état.
// app.js
initAuthObserver() {
// On "écoute" les changements (connexion, déconnexion)
window.auth.onAuthStateChanged(async (user) => {
if (user) {
// 1. Utilisateur connecté
// -> On charge ses données depuis Firestore
const doc = await db.collection('users').doc(user.uid).get();
// -> On vérifie s'il est banni ou en attente
if (userData.status === 'pending') showPendingModal();
} else {
// 2. Utilisateur déconnecté
// -> On protège les pages sensibles
if (isProtectedPage()) window.location.href = 'index.html';
}
});
}
L'inscription se fait en deux temps atomiques :
// Exemple simplifié
const cred = await auth.createUserWithEmailAndPassword(email, password);
// Une fois Auth réussi, on crée le profil en BDD
await db.collection('users').doc(cred.user.uid).set({
email: email,
firstName: "Hugo",
role: "student",
createdAt: new Date()
});
Nous utilisons Firestore, une base de données NoSQL orientée documents. Imaginez-la comme un énorme fichier JSON géant organisée en Collections.
Collection: users (Chaque document = 1 utilisateur)
{
uid: "xyz123...",
firstName: "Jean",
role: "student" | "admin",
watchedModules: ["course1_intro", "course1_chap1"], // Suivi progression
xp: 150
}
Collection: courses (Chaque document = 1 formation)
{
title: "Devenir Développeur Python",
image: "url_image.jpg",
curriculum: [ ...JSON complexe des chapitres... ]
}
Vous voulez créer une application similaire ? Suivez ce guide pour configurer l'infrastructure backend en moins de 10 minutes.
1. Allez sur console.firebase.google.com.
2. Cliquez sur "Ajouter un projet" et donnez-lui un nom.
3. Désactivez Google Analytics pour commencer simple.
1. Dans le menu gauche, cliquez sur Authentication >
Commencer.
2. Dans l'onglet "Mode de connexion", activez Adresse e-mail/Mot de passe.
3. (Optionnel) Activez Google si vous voulez la connexion sociale.
1. Cliquez sur Firestore Database > Créer une base de données.
2. Choisissez le mode de production ou test.
3. Choisissez un emplacement serveur proche (ex: eur3 pour l'Europe).
1. Cliquez sur l'icône </> (Web) dans la vue d'ensemble du projet.
2. Copiez la configuration (apiKey, etc.) et collez-la dans un fichier
firebase-config.js :
const firebaseConfig = {
apiKey: "AIzaSy...",
authDomain: "mon-projet.firebaseapp.com",
projectId: "mon-projet",
// ...
};
firebase.initializeApp(firebaseConfig);
Pour mettre votre site en ligne gratuitement avec SSL :
# Dans votre terminal
npm install -g firebase-tools
firebase login
firebase init hosting
# Sélectionnez votre projet et le dossier "public" (ou racine)
firebase deploy