尚未偵測到更新。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 |