尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Application web personnelle de suivi du salaire, des dépenses (permanentes, temporaires) et des crédits, avec calculs automatiques et prévisions mensuelles. Interface en français, mobile-first, montants en MAD/DH. • Next.js (App Router) + TypeScript • Tailwind CSS • Radix UI primitives + Lucide icons • PostgreSQL + Prisma ORM (base de données persistante, prête pour la production) • PWA (manifest + service worker basique) 1. Avoir une base PostgreSQL accessible (locale ou hébergée) et définir son URL : 2. Installer les dépendances, appliquer les migrations et semer les données de départ :檢視完整 README ↗
Application web personnelle de suivi du salaire, des dépenses (permanentes, temporaires) et des crédits, avec calculs automatiques et prévisions mensuelles. Interface en français, mobile-first, montants en MAD/DH.
Avoir une base PostgreSQL accessible (locale ou hébergée) et définir son URL :
cp .env.example .env
# éditer .env et renseigner DATABASE_URL
Installer les dépendances, appliquer les migrations et semer les données de départ :
npm install
npx prisma migrate deploy
npm run db:seed
Lancer le serveur de développement :
npm run dev
Ouvrir http://localhost:3000.
Le seed initial (prisma/seed.ts) est idempotent : il ne remplit la base que
si elle est vide, avec les données de départ (salaire 5 500 DH, crédit Dnya,
Zineb, Tomobil, Makla, Abonnements, Dar, Solaih).
Provisionner une base PostgreSQL (Vercel Postgres/Neon, Supabase, ou autre) et copier son URL de connexion.
Dans les réglages du projet Vercel, ajouter la variable d'environnement
DATABASE_URL avec cette URL (Production + Preview).
Connexion avec Google : AUTH_GOOGLE_ID et AUTH_GOOGLE_SECRET (client
OAuth « Application Web » du projet Google Cloud gx-salaire, avec
<site>/api/auth/callback/google dans ses URI de redirection) et
AUTH_SECRET (une valeur aléatoire, qui signe les sessions).
Importer ce dépôt dans Vercel (Next.js est détecté automatiquement).
npm run build exécute prisma generate && next build, et
postinstall exécute déjà prisma generate après npm install.
Appliquer les migrations sur la base de production (une fois, ou à chaque déploiement si le schéma change) :
npx prisma migrate deploy
puis semer les données de départ si la base est neuve :
npm run db:seed
Ces deux commandes se lancent depuis un environnement ayant accès à la
même DATABASE_URL que le déploiement Vercel (poste local avec la variable
exportée, ou vercel env pull puis vercel build).
Chacun se connecte avec Google (/connexion) et ne voit que ses propres
données : chaque table a un userId, et l'extension Prisma de
src/lib/prisma.ts l'ajoute à chaque requête (src/lib/user-scope.ts). La
session est un cookie signé (src/lib/session.ts), vérifié par
src/proxy.ts. Les données d'avant les comptes appartiennent à
[email protected].
prisma/schema.prisma — modèles Expense et Settings (mêmes champs que
src/lib/types.ts, dates gardées en chaînes "YYYY-MM-DD").prisma/seed.ts — données de départ, idempotent.src/lib/prisma.ts — client Prisma singleton (requêtes limitées à l'utilisateur connecté).src/lib/repository.ts — accès aux données (CRUD dépenses, réglages,
export/import), entièrement asynchrone.src/lib/engine.ts — moteur de calcul pur (échéancier des crédits, totaux
mensuels, prévisions), indépendant de la base de données. Rien n'est codé
en dur : tout est dérivé des dépenses et du salaire enregistrés.src/app — pages (Accueil, Crédits, Budget mensuel, Timeline, Réglages,
ajout/édition de dépense) et routes API (/api/expenses, /api/settings,
/api/export, /api/import).La couche de données est isolée dans repository.ts : le moteur de calcul et
l'interface n'ont aucune dépendance directe à Prisma ou PostgreSQL.
Depuis Réglages : export JSON complet (dépenses + réglages) et import JSON (remplace les données actuelles).