尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Application personnelle mono-utilisateur (PWA, mobile d'abord) qui centralise nutrition, agenda, courses, tâches, habitudes, documents, notes, collection, pharmacie, musculation et le carnet « Vider ma tête ». La description produit complète est dans PRODUCT.md, le design system dans DESIGN.md.
Stack : Next.js 16 (App Router, Turbopack), React 19, TypeScript, Tailwind CSS v4, Supabase (Postgres, Storage, Edge Functions), TanStack Query, Dexie (cache et file hors ligne). Déployé sur Vercel, branche par défaut kiliomain.
Cette version de Next.js a des changements incompatibles : lire
AGENTS.mdet les guides denode_modules/next/dist/docs/avant de coder.
npm ci
npm run dev # http://localhost:3000
Il faut un fichier .env.local (jamais commité). Variables lues par le code :
| Variable | Rôle |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | URL du projet Supabase |
SUPABASE_SERVICE_ROLE_KEY | Clé de service, côté serveur uniquement : toutes les lectures et écritures passent par elle |
NEXT_PUBLIC_VAPID_PUBLIC_KEY | Clé publique des notifications push |
GEMINI_API_KEY | Transcription de « Vider ma tête » et Réveil |
VIDAGE_SESSION_SECRET | Secret de session (32 caractères minimum) ; sans lui, « Vider ma tête » reste fermé |
AGENDA_FEED_TOKEN | Jeton du flux ICS de l'agenda |
Les Edge Functions lisent en plus VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY et VAPID_SUBJECT (secrets Supabase).
| Commande | Rôle |
|---|---|
npm run lint | ESLint |
npm run typecheck | Types de routes puis tsc --noEmit |
npm test | Tests unitaires (Vitest, mode watch ; npx vitest run pour une passe unique) |
npm run test:instant | Banc e2e de navigation instantanée, avec un faux Supabase (voir instant-nav.rig.md) |
npm run analyze | Analyse du poids des bundles |
npm run knip | Détection de code inutilisé |
La CI (.github/workflows/ci.yml) lance lint, typecheck et Vitest (job verifier), puis le banc e2e (job e2e).
src/app/(app)/<module>/ : pages et composants de chaque module (loading.tsx quand la page attend des données).src/app/actions/ : Server Actions par domaine, avec leurs tests.src/lib/<domaine>/ : logique métier (calculs purs dans compute.ts, hors ligne, Gemini, vidage…).src/lib/offline/ : cache Dexie et file des écritures hors ligne (voir flush-policy.ts pour les règles de rejeu et d'abandon).supabase/functions/ : Edge Functions (notifications push, nettoyage), appelées par pg_cron. Elles ne sont pas déployées par la CI : après une modification, les redéployer sur Supabase.scripts/ : migrations SQL datées, appliquées à la main (voir ci-dessous).reports/ : journaux d'audit et de décisions, datés ; le code fait foi.Le schéma initial n'est pas versionné dans ce dépôt : la base de production est la référence. Les fichiers scripts/migration-*.sql sont des changements datés, sans outil de suivi : vérifier l'état réel de la base avant d'en rejouer un. La sécurité par ligne (RLS) est activée sur toutes les tables de public sans règle d'accès : seule la clé de service lit et écrit. Les buckets de stockage sont publics (lecture par adresse), sauf vider-tete.