fidely
CLAUDE.md0 starsChanged 8 months agoMITView on GitHub
PWA de fidélité pour commerces, 100% offline et sans backend. Deux modes : commerçant (gestion cartes + scan client) et client (QR code personnel). Le service worker et le comportement offline/installable ne sont actifs qu'après pnpm build && pnpm preview. Ces conventions DOIVENT être respectées sur tout code écrit ou modifié, sans exception. Règles tests non négociables : - Toute nouvelle feature (composable, composant, règle métier) doit être accompagnée de tests - 0 test en échec avant de marquer une…
In this repository7 other files it gives its agents.
- nuxt-uiSkill
- coding-standardsSkill
- nuxt-standardsSkill
- security-checksSkill
- specs-checkerSkill
- testing-patternsSkill
- vue-componentSkill
The file
Files
Fidely
PWA de fidélité pour commerces, 100% offline et sans backend. Deux modes : commerçant (gestion cartes + scan client) et client (QR code personnel).
Stack & environnement
- Nuxt 4.4.2 — structure
app/(Nuxt 4 layer) - Vue 3 — Composition API +
<script setup>exclusivement - TypeScript 5.9.3
- Nuxt UI 4.5.1 — composants UI (UButton, UCard, UForm, UInput, UModal…)
- Tailwind CSS 4.2.1 — via
@import "tailwindcss"dansmain.css - @vite-pwa/nuxt 1.1.1 — PWA offline-first, auto-update
- qrcode 1.5.4 — génération QR côté client uniquement
- html5-qrcode 2.3.8 — scan QR via caméra, import dynamique dans
onMounted - Icônes : Lucide (
i-lucide-*) + Simple Icons (i-simple-icons-*) - Gestionnaire de paquets : pnpm 10.32.1
- Stockage : IndexedDB (object stores
cards+clients), localStorage pourclient_idetmode - State management : composables uniquement, pas de Pinia
- Tests : Vitest 4.1 +
@nuxt/test-utils4.0 +fake-indexeddb6.2 +happy-dom20.8
Commandes essentielles
pnpm dev # Serveur de développement
pnpm build # Build production (génère le service worker PWA)
pnpm preview # Preview du build (tester PWA offline)
pnpm lint # ESLint
pnpm typecheck # Vérification TypeScript via nuxt typecheck
pnpm postinstall # nuxt prepare (auto après install)
pnpm vitest run # Lancer tous les tests unitairesLe service worker et le comportement offline/installable ne sont actifs qu'après
pnpm build && pnpm preview.
Architecture du projet
app/
├── app.vue # Racine : <UApp><NuxtPage /></UApp> + useHead/useSeoMeta
├── app.config.ts # Thème Nuxt UI : primary=green, neutral=slate
├── assets/css/main.css # @import tailwindcss + @nuxt/ui + palette verte custom
├── components/
│ ├── CardItem.vue # Carte fidélité avec actions points
│ ├── QRCodeDisplay.vue # Rendu QR code (canvas, ClientOnly)
│ └── Scanner.vue # Scan QR via caméra (html5-qrcode, dynamic import)
├── composables/
│ ├── useDB.ts # Toutes les opérations IndexedDB
│ └── useClient.ts # Gestion UUID client (localStorage)
├── pages/
│ ├── index.vue # Sélection mode + redirect localStorage
│ ├── merchant.vue # Dashboard commerçant
│ ├── scan.vue # Scanner QR client
│ ├── me.vue # QR code client plein écran
│ └── client/[id].vue # Gestion points d'un client
└── utils/
└── uuid.ts # generateUUID() via crypto.randomUUID()
public/
├── pwa-192x192.png # Icône PWA
└── pwa-512x512.png # Icône PWA
nuxt.config.ts # Modules, ESLint stylistic, PWA manifest + workboxConventions obligatoires
Ces conventions DOIVENT être respectées sur tout code écrit ou modifié, sans exception.
| Domaine | Détails |
| Codage (TypeScript, ESLint, JSDoc, structure Vue, composables) | .claude/skills/coding-standards/SKILL.md |
| Nuxt (fichiers, layouts, pages, SSR, routing, performance) | .claude/skills/nuxt-standards/SKILL.md |
| Sécurité (RGPD, secrets, validation, stockage) | .claude/skills/security-checks/SKILL.md |
| Tests (patterns, isolation, mocks) | .claude/skills/testing-patterns/SKILL.md |
Règles tests non négociables :
- Toute nouvelle feature (composable, composant, règle métier) doit être accompagnée de tests
- 0 test en échec avant de marquer une tâche ✅
Tests automatisés
Framework configuré : Vitest + @nuxt/test-utils + fake-indexeddb + happy-dom
Règle absolue — toujours lancer les tests
Après toute modification de composable, composant ou utilitaire :
pnpm vitest run- 0 test en échec avant de marquer une tâche comme ✅
- Si un test échoue suite à un changement intentionnel : mettre à jour le test en même temps que le code
- Ne jamais commiter du code qui casse des tests existants
Ce que Claude ne doit PAS faire
- Ne pas modifier
nuxt.config.tssans confirmation explicite - Ne pas modifier
app/app.config.ts(thème de couleurs) sans confirmation - Ne pas changer la structure des dossiers dans
app/sans validation - Ne pas installer de nouvelles dépendances sans confirmation
- Ne pas écrire de code sans types TypeScript explicites (pas de
any) - Ne pas utiliser d'autres composants UI que ceux de
@nuxt/ui(pas de shadcn, Vuetify, etc.) - Ne pas ajouter de store Pinia sans discussion préalable (architecture composables en place)
- Ne pas prérenderer les pages (
routeRules prerender) — l'app dépend de localStorage/IndexedDB au montage - Ne pas importer
html5-qrcodeen import statique (crash SSR) - Ne pas utiliser
localStorage/indexedDBen dehors deonMountedou avec guardprocess.server
📝 Mise à jour README.md
Mettre à jour README.md pour toute nouvelle feature visible, commande ou dépendance.
Ne pas dupliquer avec CLAUDE.md ni TASKS.md.
🛠️ Skills disponibles
| Skill | Rôle |
coding-standards | TypeScript, ESLint, JSDoc, structure Vue, composables |
nuxt-standards | Structure Nuxt 4, pages, SSR, routing, performance |
vue-component | Créer/modifier un composant Vue 3 |
testing-patterns | Patterns Vitest, isolation IndexedDB, mocks |
security-checks | Sécurité RGPD, stockage, validation |
specs-checker | Vérification respect des specs et règles métier |
🤖 Agents disponibles
| Agent | Rôle |
architecture | Cohérence et qualité architecturale, KISS/SOLID |
testing | Écriture et audit des tests |
refactor | Détection et correction de la dette technique |
ui-components | Cohérence visuelle, Nuxt UI, UX mobile |
pwa | Configuration PWA, manifeste, service worker, offline, Lighthouse |
Règles
- Ne jamais supprimer une section existante sans raison — enrichir plutôt que remplacer
- Rester concis : le README est lu par quelqu'un qui découvre le projet, pas par quelqu'un qui le maintient
- Pas de duplication avec
CLAUDE.md(instructions Claude) niPLANNING.md(specs) niTASKS.md(avancement)
📋 Synchronisation PLANNING.md → TASKS.md
À chaque fois que PLANNING.md est modifié, analyse et mets
immédiatement à jour TASKS.md en conséquence.
Procédure obligatoire après toute modification de PLANNING.md
- Lire
TASKS.mddans son état actuel - Identifier ce qui a changé dans
PLANNING.md:- Nouvelle feature ajoutée → ajouter en
📋 À faire - Feature supprimée → déplacer en
🚫 Hors scopeavec date et raison - Règle métier modifiée → vérifier si une tâche
✅ Faitdoit repasser en⚠️ À revoir - Décision technique changée → vérifier les tâches impactées
- Hors scope étendu → vérifier si des tâches
📋 À fairedoivent être archivées
- Nouvelle feature ajoutée → ajouter en
- Mettre à jour le compteur d'avancement global en haut de
TASKS.md - Mettre à jour
_Dernière mise à jour_dansTASKS.md - Informer l'utilisateur avec ce format exact :
🔄 TASKS.md mis à jour suite à une modification de PLANNING.md
- ➕ Ajouté en "À faire" : [liste ou "aucun"]
- 🔁 Déplacé : [liste ou "aucun"]
- ⚠️ Repassé en "À revoir" : [liste ou "aucun"]
- 🚫 Archivé en "Hors scope" : [liste ou "aucun"]
Règles absolues
- Ne jamais modifier
TASKS.mdsans avoir luPLANNING.mden entier - Ne jamais supprimer une tâche — toujours déplacer ou archiver
- Ne jamais modifier
TASKS.mdsans en informer l'utilisateur - En cas de doute sur l'impact d'un changement → demander confirmation avant toute modification
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

