Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
여러 사람이 함께 푸는 퍼즐, 배치·남은 조각·히스토리·사진·체크포인트 제공, PWA 웹앱, 프랑스·영어 지원
Suivez un puzzle à plusieurs : pièces placées ou restantes, historique, photos, checkpoints. Web app installable (PWA), français et anglais.
라이프스타일TypeScript · CSSGitHub @mister-guiiug온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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 |