SplitLoop — partage de dépenses entre amis

Projet Perso

Application web pour partager les dépenses d’un groupe en quelques secondes : salons partagés, calcul automatique de qui doit combien à qui.

SplitLoop — partage de dépenses entre amis

README du dépôt

SplitLoop

Application web simple et moderne pour partager les depenses de groupe en quelques secondes.

Python FastAPI SQLite

Nouveautes (v1.2.0)

  • Design de la landing upgrade (topbar, badges, feature cards, footer)
  • Liens directs vers GitHub et page de don dans l'interface
  • Bouton Quitter la room pour oublier la room locale facilement
  • Suppression definitive d'une room depuis l'onglet Parametres
  • Validation front renforcee (messages clairs avant envoi)
  • Route favicon corrigee (plus de 404 inutile)
  • Logs console plus propres sur Windows (--no-use-colors)

Apercu

SplitLoop cible un probleme tres frequent: "qui a paye quoi" en voyage, en colocation, ou lors de sorties en groupe.

Le principe:

  1. Tu crees une room en 30 secondes.
  2. Tu partages le code room dans ton groupe.
  3. Chacun ajoute les depenses.
  4. L'application calcule automatiquement les balances.

Fonctionnalites V1

  • Creation d'une room (nom, devise, participants)
  • Rejoindre une room avec un code court
  • Ajout de participants a la volee
  • Ajout de depenses avec repartition personnalisable
  • Dashboard des balances (paye, doit, net)
  • Historique complet des depenses
  • Export CSV
  • Parametrage de la devise par room
  • Logs applicatifs
  • Quitter la room locale en 1 clic
  • Supprimer une room (et ses donnees) en 1 clic

Stack technique

  • Frontend: HTML + CSS + JavaScript (sans build complexe)
  • Backend: FastAPI
  • Base de donnees: SQLite
  • Validation: Pydantic
  • Packaging: PyInstaller (Windows) + Docker (serveur web)

Architecture

/app        # Entree FastAPI
/backend    # Routes API, services metier, acces DB
/frontend   # Interface utilisateur (HTML/CSS/JS)
/core       # Schemas et contrats de donnees
/utils      # Logging + sanitation
/config     # Configuration applicative
/data       # SQLite + logs
/tests      # Tests API
/scripts    # Scripts d'installation, run, build

Installation rapide (Windows)

Prerequis:

  • Windows 10/11
  • Python 3.11+

Depuis la racine du projet:

install.bat
scripts\run.bat

Puis ouvre: http://localhost:8000

Installation (Linux / macOS / Git Bash)

chmod +x install.sh scripts/run.sh
./install.sh
./scripts/run.sh

Tests

python -m pip install -r requirements-dev.txt
python -m pytest -q

Packaging

1) Executable Windows (.exe)

scripts\build_exe.bat

Sortie: dist\splitloop.exe

2) Deployment web (Docker)

docker build -t splitloop .
docker run --rm -p 8000:8000 splitloop

Securite (niveau V1)

  • Validation stricte des entrees (Pydantic)
  • Sanitization de texte utilisateur
  • Requetes SQL parametrees (anti injection)
  • Gestion centralisee des exceptions (422, 404, 409, 500)
  • Logs applicatifs dans data/logs/app.log

Captures d'ecran

Ajoute tes screenshots dans docs/screenshots/:

  • docs/screenshots/landing.png
  • docs/screenshots/dashboard.png
  • docs/screenshots/history.png

Exemple Markdown:

![Accueil](docs/screenshots/landing.png)

API

  • Swagger: http://localhost:8000/api/docs
  • ReDoc: http://localhost:8000/api/redoc
  • Healthcheck: GET /api/health
  • Suppression room: DELETE /api/rooms/{room_code}

Depannage rapide

  • Si install.bat affiche du rouge, relance-le et copie les 15 dernieres lignes.
  • Si le serveur ne part pas, verifie que .venv existe puis relance scripts\run.bat.
  • Si besoin, reinstalle proprement:
rmdir /s /q .venv
install.bat

Contribution

  1. Fork/clone
  2. Branche feature (git checkout -b feature/ma-feature)
  3. Commit
  4. Pull request

Push de la mise a jour sur GitHub

Depuis la racine du projet:

git status
git add .
git commit -m "release: v1.2.0 add room deletion, UX polish, and README update"
git push

Si c'est un nouveau repo local:

git init
git add .
git commit -m "init: SplitLoop v1.2.0"
git branch -M main
git remote add origin https://github.com/CedricPoint/splitloop.git
git push -u origin main

Licence

MIT