尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Puzzle en famille : compteur partagé en temps réel, historique visuel, suivi des absents.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Votre progression de puzzle, ensemble, en temps réel Un site web pour suivre ensemble l'avancement d'un puzzle : pièces placées, historique graphique, photos, checkpoints et partage par code. Disponible sur PC, tablette et mobile — pas d'inscription, pas de compte, juste un code à partager. Accueil Suivi de progression Suivre un puzzle à plusieurs, c'est le chaos. Qui a mis quoi ? Où en est-on ? Qui a travaillé dessus hier ? Mister Puzzle résoud ce problème avec une synchronisation temps réel ou asynchrone et un historique visuel clair.查看完整 README ↗
Votre progression de puzzle, ensemble, en temps réel
Un site web pour suivre ensemble l'avancement d'un puzzle : pièces placées, historique graphique, photos, checkpoints et partage par code.
Disponible sur PC, tablette et mobile — pas d'inscription, pas de compte, juste un code à partager.
Suivre un puzzle à plusieurs, c'est le chaos. Qui a mis quoi ? Où en est-on ? Qui a travaillé dessus hier ?
Mister Puzzle résoud ce problème avec une synchronisation temps réel ou asynchrone et un historique visuel clair.
Le problème : Un puzzle géant pendant les vacances de famille. Tout le monde participe à son rythme :
Mais les membres de la famille qui ne sont PAS là sont frustrés :
La solution Mister Puzzle :
Le petit plus fun ? Les stats ! Qui a posé le plus de pièces sur les dernières 24 heures, les 7 derniers jours ou depuis le début ? Qui tient la plus longue série ? La courbe, elle, montre le rythme. Pour le défi et les conversations de famille.
Un puzzle est installé dans une médiathèque. Chaque visiteur peut contribuer à son rythme :
Un puzzle dans une salle de repos :
Un projet pédagogique sur plusieurs semaines :
Un puzzle géant pendant un événement :
Un seul puzzleur qui utilise plusieurs appareils :
| Fonctionnalité | Bénéfice |
|---|---|
| Collaboration live | Voyez qui ajoute des pièces en temps réel |
| Historique visuel | Courbe de progression ; historique exportable en CSV ou JSON, carte d'avancement et classement des contributeurs en image PNG |
| Galerie photos | Capturez les étapes, réordonnez, faites pivoter |
| Checkpoints | Marquez les étapes (bordures finies, zones difficiles) |
| Partage simplifié | Un code à communiquer, rien de plus |
| Hors connexion | PWA installable ; sans réseau, le compteur de pièces est gardé sur l'appareil et envoyé au retour de la connexion, les autres actions attendent le réseau |
| Multi-appareils | Synchronisation automatique entre tous vos appareils |
| Thème clair/sombre | S'adapte à vos préférences |
| Internationalisation | Français et anglais |
Installez Mister Puzzle sur votre téléphone ou ordinateur pour un accès rapide :
index.html porte Mister Puzzle - suivi collaboratif de progression de puzzle ; une fois l'app chargée, src/hooks/useDocumentRoomTitle.ts le remplace par son titre par défaut, précédé du nom de la salle quand une salle est ouvertepublic/logo.svg — marque vectorielle (grille 3×3 sur dégradé indigo / violet)logo.svg ainsi que les PNG pwa-192x192.png et pwa-512x512.png à la racine de public/index.html, injectées au build) : canonical, hreflang (fr, en, x-default), Open Graph (og:*), Twitter Card, meta description / keywords / robots, theme-colorWebApplication + FAQPagedist/ au build : robots.txt, sitemap.xml, llms.txt (format utile aux crawlers " IA ")VITE_PUBLIC_SITE_ORIGIN (sans slash final), ex. https://votre-compte.github.io| Couche | Technologie |
|---|---|
| Framework | React 19 |
| Build | Vite 8 (cible ES2025, TypeScript strict avec verbatimModuleSyntax + erasableSyntaxOnly) |
| Style | Tailwind CSS 4 |
| State | état React et contextes (I18nContext, ThemeContext), sans bibliothèque |
| Validation | fonctions maison (src/utils/puzzleNormalize.ts, src/config/firebaseEnv.ts) |
| Données | Firebase Realtime Database + connexion anonyme Firebase Auth (firebase ^12) |
| Icônes UI | Lucide React |
| Dates | date-fns |
| Tests | Vitest 5 (jsdom) + Testing Library + Playwright + @axe-core/playwright ; règles de la base testées sur l'émulateur (npm run test:rules) |
| Mesure | @sentry/react : Sentry (région UE) démarre à l'ouverture, sans consentement, et ne reçoit un rapport technique que lorsqu'une erreur survient. : mesure d'audience PostHog (nuage européen), chargée seulement après accord dans le bandeau de consentement. : journal en développement seulement |
read:packages est exigé (cf. .npmrc) :
export NODE_AUTH_TOKEN=<jeton>
npm install
.env.local à partir de .env.example et renseignez les sept clés VITE_FIREBASE_*, dont VITE_FIREBASE_DATABASE_URL, absente du modèle ; laissez VITE_SENTRY_DSN vide en localnpm run dev
Si npm run build échoue sous Windows sur un binaire natif manquant (@rolldown/binding-win32-x64-msvc, @rollup/rollup-win32-x64-msvc…), lancez npx pwa-bindings : il installe les binaires de ce poste aux versions du lockfile. Ne supprimez pas package-lock.json : régénéré sous Windows, il perd les dépendances optionnelles des autres plates-formes et la CI le refuse.
L'application est prévue pour un déploiement automatique sur GitHub Pages via GitHub Actions lors d'un push sur la branche main.
Le chemin de base est configuré sur /mister-puzzle/ (voir vite.config.ts : base, manifest.start_url et manifest.scope).
Les règles de la base sont dans database.rules.json. Une connexion anonyme Firebase, invisible et sans inscription, identifie le créateur d'une salle : lui seul peut la supprimer ou en changer le nom, la grille, la visibilité et le mot de passe. La progression, les photos et les jalons restent modifiables par quiconque a le code. Les salles créées avant le 06/09/2026 n'ont pas de propriétaire : elles restent modifiables et supprimables par quiconque a le code.
Le « mot de passe » d'une salle privée n'est qu'un filtre d'interface : quiconque a le code peut lire la salle, photos comprises. Une salle privée ne figure simplement pas dans la liste publique.
Développé pour les passionnés de puzzles.
posthog-js| Bundle analyzer | rollup-plugin-visualizer (npm run build:analyze) |
| Socle partagé | @mister-guiiug/dev-pwa-config (GitHub Packages) : configs ESLint, Prettier, TS, Vitest, et modules exécutés dans l'app (observabilité, bandeau de consentement, images, CSP, SEO, mises à jour) |
| Photos téléversées | @mister-guiiug/dev-pwa-config/image (contrôle, ré-encodage JPEG sans EXIF/GPS) — voir src/utils/resizeJpegImage.ts |
| PWA | vite-plugin-pwa 1.3 |