尚未检测到更新。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).