[ 0.000 ] Initializing portfolio...
[ 0.212 ] Loading modules... OK
[ 0.445 ] Mounting filesystem... OK
[ 0.673 ] Starting services... OK
[ 0.891 ] Welcome, user.
Boutique e-commerce fictive développée de A à Z sans backend réel. Les produits, le panier et le thème du site sont entièrement gérés en localStorage. L'espace admin est protégé par un hash SHA-256 calculé côté client. Projet école en BUT MMI.
L'idée de ce projet, c'était de construire un e-commerce complet sans passer par un backend. Tout ce qu'on attend d'un shop en ligne — catalogue, panier, gestion des stocks, interface admin — devait fonctionner uniquement avec le navigateur. Une contrainte volontaire pour explorer les limites du JavaScript côté client.
La partie la plus intéressante était la sécurisation de l'espace admin : plutôt qu'un vrai système d'authentification serveur, j'ai implémenté une vérification par hash SHA-256. Le mot de passe n'est jamais stocké en clair — seul son hash est comparé, calculé directement dans le navigateur via l'API Web Crypto.
$ Fonctionnalités
$ Contexte
// Vérification du mot de passe admin par SHA-256 (Web Crypto API)
async function checkAdminPassword(input) {
const encoder = new TextEncoder();
const data = encoder.encode(input);
const hashBuf = await crypto.subtle.digest('SHA-256', data);
const hashArr = Array.from(new Uint8Array(hashBuf));
const hashHex = hashArr
.map(b => b.toString(16).padStart(2, '0'))
.join('');
return hashHex === ADMIN_HASH;
}