Thanks to visit codestin.com
Credit goes to github.com

Skip to content

A full-stack web application that enables users to track personal expenses and income, upload receipts, set up recurring expenses with a defined duration, and receive alerts when they exceed their monthly budget.

Notifications You must be signed in to change notification settings

liantsoaaa/Personal-Expense-Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Personal Expense Tracker

📦 Présentation Générale

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.


🗂 Structure du Projet

├── 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    

🚀 Fonctionnalités Clés

  • 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

⚙️ API REST – Documentation OpenAPI

Base URL : /api

🔐 Authentification

  • POST /auth/signup : Inscription
  • POST /auth/login : Connexion (retourne le token JWT)
  • GET /auth/me : Infos du compte connecté

💸 Dépenses

  • 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écifique
  • PUT /expenses/{id} : Modifier une dépense
  • DELETE /expenses/{id} : Supprimer une dépense

Champs 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)

💰 Revenus

  • GET /incomes : Liste des revenus (filtrable)
  • POST /incomes : Ajouter un revenu
  • GET /incomes/{id} : Voir un revenu
  • PUT /incomes/{id} : Modifier un revenu
  • DELETE /incomes/{id} : Supprimer un revenu

Champs Revenu

  • montant (number, requis)
  • date (string ISO, requis)
  • source (string)
  • description (optionnel)

🗂 Catégories

  • GET /categories : Liste des catégories de l’utilisateur
  • POST /categories : Ajouter une catégorie
  • PUT /categories/{id} : Renommer une catégorie
  • DELETE /categories/{id} : Supprimer une catégorie (si inutilisée)

📁 Justificatifs

  • GET /receipts/{id} : Télécharger/visualiser un justificatif

📊 Résumés & Alertes

  • GET /summary/monthly : Résumé du mois courant
  • GET /summary?start=...&end=... : Résumé personnalisé
  • GET /summary/alerts : Alerte si dépenses > revenus

🔑 Sécurité & Validation

  • 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)

🖥️ Interface Utilisateur

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

📚 Pour démarrer

  1. Installer les dépendances :

    npm install
  2. Configurer la base de données dans la variable d'environnement (.env)

  3. Configurer Prisma

    npx prisma generate
  4. Pour faire de la migration en prisma (facultatif)

    npx migrate dev
  5. Lancer le backend :

    npm run server
  6. Lancer le frontend :

    cd frontend
    npm run dev
  7. Consulter la doc API :
    Voir le fichier docs/Expense Tracker API.yaml ou /docs pour l’OpenAPI.


About

A full-stack web application that enables users to track personal expenses and income, upload receipts, set up recurring expenses with a defined duration, and receive alerts when they exceed their monthly budget.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •