Personal Expense Tracker est une application web full-stack permettant aux utilisateurs de gérer leurs dépenses et revenus personnels, ajouter des justificatifs, configurer des dépenses récurrentes avec durée, et recevoir des alertes en cas de dépassement de budget mensuel.
├── backend # API Express, logique métier, base de données(PSQL)
├── frontend # Interface utilisateur (Vite.js + React.js, tailwind css et autre)
├── docs # Documentation (OpenAPI)
├── prisma # Modèles et migrations base de données
├── upload/receipts # Pour stocker les fichiers en format PDF
├── .gitignore # fichier git
├── package-lock.json
├── package.json # dépendances
├── README.md
- Inscription, connexion, déconnexion (JWT sécurisé)
- Gestion des dépenses (création, modification, suppression, filtrage)
- Gestion des revenus (ajout, édition, suppression, filtrage)
- Catégories personnalisables (création, édition, suppression)
- Ajout & téléchargement de justificatifs (PDF/JPG/PNG)
- Dépenses récurrentes (virtualisation mensuelle, date de début/fin)
- Alertes de dépassement de budget
- Dashboard interactif (stats, graphiques, solde restant)
- Profil utilisateur (infos, changement de mot de passe)
- Sécurité et validation des entrées et fichiers
- API RESTful documentée (OpenAPI 3.0)
- Interface responsive
Base URL : /api
POST /auth/signup: InscriptionPOST /auth/login: Connexion (retourne le token JWT)GET /auth/me: Infos du compte connecté
GET /expenses: Liste des dépenses (filtrable par date, catégorie, type)POST /expenses: Créer une dépense (avec justificatif en option)GET /expenses/{id}: Voir une dépense spécifiquePUT /expenses/{id}: Modifier une dépenseDELETE /expenses/{id}: Supprimer une dépense
- montant (number, requis)
- date (string ISO, requis)
- categoryId (string, requis)
- description (optionnel)
- type : "one-time" | "recurring"
- startDate / endDate (pour récurrentes)
- receipt (fichier optionnel)
GET /incomes: Liste des revenus (filtrable)POST /incomes: Ajouter un revenuGET /incomes/{id}: Voir un revenuPUT /incomes/{id}: Modifier un revenuDELETE /incomes/{id}: Supprimer un revenu
- montant (number, requis)
- date (string ISO, requis)
- source (string)
- description (optionnel)
GET /categories: Liste des catégories de l’utilisateurPOST /categories: Ajouter une catégoriePUT /categories/{id}: Renommer une catégorieDELETE /categories/{id}: Supprimer une catégorie (si inutilisée)
GET /receipts/{id}: Télécharger/visualiser un justificatif
GET /summary/monthly: Résumé du mois courantGET /summary?start=...&end=...: Résumé personnaliséGET /summary/alerts: Alerte si dépenses > revenus
- Toutes les routes privées nécessitent :
Authorization: Bearer <JWT Token> - Validation stricte des entrées
- Sécurité des fichiers uploadés
- Gestion des erreurs : 400 (validation), 403 (non-autorisé), 404 (introuvable)
| Page / Route | Description |
|---|---|
/signup |
Formulaire d’inscription |
/login |
Connexion |
/dashboard |
Résumé, graphiques, alertes |
/expenses |
Liste & filtrage des dépenses |
/expenses/new |
Ajout d’une dépense |
/expenses/:id/edit |
Modification d’une dépense |
/incomes |
Liste & filtrage des revenus |
/incomes/new |
Ajout d’un revenu |
/categories |
Gestion des catégories |
/auth/me |
Profil utilisateur & paramètres |
/receipts/:id |
Justificatif associé à une dépense |
-
Installer les dépendances :
npm install
-
Configurer la base de données dans la variable d'environnement (.env)
-
Configurer Prisma
npx prisma generate
-
Pour faire de la migration en prisma (facultatif)
npx migrate dev
-
Lancer le backend :
npm run server
-
Lancer le frontend :
cd frontend npm run dev -
Consulter la doc API :
Voir le fichierdocs/Expense Tracker API.yamlou/docspour l’OpenAPI.