Skip to content

Repository files navigation

💰 Tirelire — Partage de dépenses

License React Vite

Application web (React + Vite) pour partager les dépenses d'un groupe : création de groupes, ajout de dépenses, répartition, règlement (« qui doit combien »), multi-devises et découpage de reçu par glisser-déposer. Sans compte, hors ligne (persistance localStorage).

⚠️ Projet d'apprentissage, frontend uniquement (pas de backend). Données stockées localement dans le navigateur.


✨ Fonctionnalités

  • Groupes : créer/sélectionner/supprimer des groupes avec leurs participants.
  • Dépenses : ajout via formulaire, partage entre participants, historique.
  • Découpage de reçu : saisie d'articles puis attribution par glisser-déposer (ReceiptSplittingForm).
  • Multi-devises : sélection de devise par groupe, conversion via une API de taux de change (services/exchangeRates.js).
  • Règlement : calcul des soldes et de qui rembourse qui (SettlementView), export CSV.
  • Hors ligne : aucune donnée envoyée, tout reste en localStorage.

🚀 Démarrage

git clone https://github.com/sfrayan/Tirelire.git
cd Tirelire
npm install
npm run dev        # http://localhost:5173

Build de production :

npm run build      # sortie dans dist/
npm run preview

🛠 Stack

  • React 19 (Hooks)
  • Vite 6 (build / dev server)
  • localStorage pour la persistance
  • API de taux de change (free tier) pour le multi-devises

📁 Structure

Tirelire/
├── index.html              # entrée Vite
├── src/
│   ├── index.jsx           # bootstrap React (createRoot)
│   ├── App.jsx             # composant principal (groupes, dépenses, règlement)
│   ├── components/         # GroupList, GroupManager, ExpenseForm,
│   │                       # ReceiptSplittingForm (+ Upload/Items/DragDrop),
│   │                       # CurrencySelector, CurrencyDisplay, SettlementView
│   ├── hooks/useExchangeRate.js
│   ├── services/exchangeRates.js
│   └── utils/              # calculations, currencyConversion
├── vite.config.js
└── package.json

🗺️ État & limites

  • Frontend seul : pas de synchronisation entre appareils ni de comptes.
  • Migré depuis Create React App (react-scripts 3) vers Vite ; l'ancienne moitié « épargne » (composants Profile + backend Django) et les fichiers en double ont été retirés pour ne garder qu'une application cohérente et qui build.

Idées futures

  • OCR sur les reçus
  • Synchronisation cloud (backend)
  • Empaquetage mobile (Capacitor) — non installé à ce stade

📄 Licence

MIT — voir LICENSE.

👤 Auteur

@sfrayan

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages