Skip to content

feat(dashboard): add annual view (breakdown, trends, savings) - #26

Merged
Periicles merged 11 commits into
mainfrom
feat/annual-dashboard
Jun 11, 2026
Merged

feat(dashboard): add annual view (breakdown, trends, savings)#26
Periicles merged 11 commits into
mainfrom
feat/annual-dashboard

Conversation

@Periicles

Copy link
Copy Markdown
Collaborator

Ce que fait cette PR

Ajoute la vue annuelle du tableau de bord — dernier prérequis fonctionnel manquant du cahier des charges — accessible via un toggle Mois / Année sur /dashboard.

Pourquoi

Le cahier des charges demande un dashboard annuel (répartition globale des dépenses, tendances de consommation, progression de l'épargne). Seule la vue mensuelle existait. Cette PR couvre les 3 éléments :

  • Répartition de l'année — donut 50/30/20 sur 12 mois (centre = total dépensé) + totaux par catégorie
  • Tendances mensuelles — aires empilées des 3 catégories mois par mois
  • Épargne accumulée — courbe cumulée des dépenses de catégorie savings (progrès mis en avant)

Architecture : lib/annual.ts agrège une année en une seule requête Prisma (mois YYYY-MM → filtre startsWith) avec des Decimal. La page branche sur ?view=year (rendu serveur, force-dynamic). Navigation années via DashboardYearNav calqué sur la nav mensuelle. Le CategoryDonut existant est généralisé avec centerValue/centerLabel optionnels (comportement mensuel inchangé).

Spec : docs/superpowers/specs/2026-06-11-annual-dashboard-design.md
Plan : docs/superpowers/plans/2026-06-11-annual-dashboard.md

Comment tester

  1. Se connecter, ouvrir /dashboard → basculer sur Année
  2. Vérifier le donut + 3 lignes de totaux, le graphe de tendances empilées, la courbe d'épargne
  3. Naviguer entre les années (flèche suivante désactivée sur l'année courante)
  4. Vérifier mobile + desktop, light + dark, et la bascule FR/EN (libellés traduits)

Astuce démo : npm run db:reset pour un jeu de données riche.

Checklist

  • Le code respecte les conventions du CLAUDE.md
  • Aucun console.log de debug laissé
  • Les types TypeScript sont complets (pas de any)
  • Les tests passent localement (npm run test — 238 ✓)
  • L'UI a été vérifiée sur mobile et desktop
  • L'UI fonctionne en light mode et dark mode
  • Les textes visibles passent par i18n (pas de string en dur)

@vercel

vercel Bot commented Jun 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
koza Ready Ready Preview, Comment Jun 11, 2026 2:45pm

@Periicles
Periicles merged commit c32508b into main Jun 11, 2026
12 checks passed
@Periicles
Periicles deleted the feat/annual-dashboard branch June 11, 2026 14:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant