Suivi de stickers Panini entre amis
Une petite plateforme personnelle pour suivre les stickers manquants, cocher les trouvailles et maintenir une liste commune depuis un téléphone, un ordinateur ou une tablette.
Un outil simple pour une collection partagée
Ce projet est né d'un besoin très concret: suivre les stickers Panini manquants entre amis sans multiplier les listes personnelles, les messages éparpillés ou les fichiers mis à jour à la main. L'idée était de créer une application web légère, accessible rapidement, qui donne à tout le monde la même version de la collection.
Le site n'a pas été pensé comme une grande plateforme publique. Il s'agit d'un outil personnel, temporaire, partagé avec un petit cercle de personnes de confiance. Cette contrainte a guidé les choix techniques: simplicité, rapidité de mise en ligne, facilité d'utilisation et absence de barrière à l'entrée.
Centraliser les stickers manquants dans un seul endroit
Le but principal était de remplacer les listes isolées par une version commune et toujours à jour. Chaque personne peut consulter les stickers manquants, rechercher une référence, cocher les stickers trouvés, puis mettre à jour la liste partagée.
- Consulter les stickers manquants par pays, équipe ou section de l'album.
- Rechercher rapidement une référence précise comme
FRA 10ouMEX 5. - Cocher les stickers trouvés, les supprimer de la liste commune et suivre la progression globale.
- Utiliser la plateforme depuis plusieurs navigateurs ou appareils sans perdre l'état partagé.
Une application pensée pour un usage privé et temporaire
La plateforme est destinée à un petit groupe d'amis. Elle n'a donc pas de comptes utilisateurs, de rôles ou de permissions complexes. En théorie, toute personne disposant du lien peut modifier la liste, mais ce choix est assumé parce que l'usage est court et limité à des personnes de confiance.
J'ai volontairement supprimé les frictions: pas d'inscription, pas de mot de passe, pas de configuration à expliquer. Les utilisateurs ouvrent simplement le lien, consultent la liste et participent directement.
PHP et JSON pour rester compact
L'application repose sur une architecture volontairement simple. Elle tient principalement dans deux fichiers: index.php pour l'interface, le JavaScript et les petites routes côté serveur, puis data.json pour stocker l'état commun de la collection.
index.php
Affiche la page, gère les actions envoyées par le navigateur et met à jour les données côté serveur.
data.json
Joue le rôle d'une mini base de données partagée: stickers manquants, doublons, progression et statistiques.
Ce choix évite l'installation d'une base MySQL ou PostgreSQL. Pour quelques utilisateurs et une collection limitée, un fichier JSON est suffisant, facile à héberger et facile à comprendre.
Une lecture rapide sur mobile comme sur ordinateur
L'interface a été conçue pour être immédiatement compréhensible. Elle présente le contexte du site, les statistiques globales, une barre de progression, une recherche et des cartes par pays ou section.
- Les statistiques indiquent le total initial, les stickers encore manquants, les stickers trouvés et le pourcentage de progression.
- La barre de recherche permet de filtrer une référence sans parcourir toute la liste.
- Les cartes reprennent la logique d'un album: pays, code, drapeau ou icône, puis numéros manquants.
- Une section doublons peut aider à organiser les échanges entre amis.
Des actions rapides, sauvegardées côté serveur
Au chargement, le JavaScript récupère les données depuis le serveur, construit l'affichage et met à jour les statistiques. Lorsqu'un sticker est coché, il est ajouté à une sélection temporaire. La suppression n'est validée qu'après confirmation, avec une demande de nom pour garder une trace légère.
Cette logique permet de garder une interface fluide tout en conservant une source commune côté serveur. Une notification email peut aussi être envoyée lors d'une suppression afin de savoir qui a trouvé quoi et quelles références ont été retirées.
Un calcul qui reste cohérent après les suppressions
La progression ne peut pas se baser uniquement sur les stickers encore visibles. Si le site commence avec 200 stickers manquants et que 20 sont supprimés parce qu'ils ont été trouvés, le total de départ ne doit pas devenir 180.
Pour éviter ce problème, le fichier de données conserve deux valeurs importantes: initialTotal, qui représente le nombre de stickers manquants au lancement, et found, qui représente les stickers déjà trouvés. La progression reste donc fiable même après plusieurs suppressions, rafraîchissements ou changements de navigateur.
Une seule source de vérité pour tout le monde
L'un des objectifs principaux était que tous les utilisateurs voient la même liste. Le stockage local du navigateur ne suffisait pas, car chaque appareil aurait gardé sa propre version. Avec data.json, l'état est sauvegardé sur le serveur.
- Une modification faite depuis un téléphone est enregistrée pour les autres utilisateurs.
- Un autre navigateur récupère ensuite la version mise à jour.
- Un rafraîchissement de page ne remet pas la progression à zéro.
- Le verrouillage du fichier limite les conflits lors d'écritures proches dans le temps.
Une sécurité volontairement proportionnée
Le site ne contient pas de données sensibles et n'est pas destiné au public. L'absence d'authentification forte est donc un choix volontaire: elle rend l'accès plus simple pour un usage court, privé et basé sur la confiance.
Quelques précautions restent en place: validation des données reçues, nettoyage des informations envoyées par email, verrouillage du fichier lors de l'écriture et suppression du bouton de réinitialisation complète pour éviter les erreurs accidentelles.
Des limites assumées pour un projet pragmatique
La principale limite est l'absence d'authentification: toute personne avec le lien peut théoriquement modifier la liste. Pour une application publique, ce serait insuffisant. Dans ce contexte, le risque est accepté, car la plateforme est temporaire et partagée avec un cercle restreint.
Le stockage dans un fichier JSON est aussi adapté à une petite quantité de données, mais une base SQLite, MySQL ou PostgreSQL serait plus robuste pour une version durable. Des améliorations possibles seraient un mot de passe partagé, un historique complet, une protection CSRF, un export CSV/PDF ou une synchronisation en temps réel.
Un projet simple, utile et adapté à son contexte
Cette plateforme est un bon exemple d'application web pragmatique. Elle ne cherche pas à être plus complexe que nécessaire: elle répond à un besoin précis, avec une architecture légère, une interface pratique et une sécurité proportionnée.
Le résultat repose sur un équilibre clair: faciliter l'accès, centraliser les données, garder une progression fiable et permettre à chacun de participer sans friction.