# 🧼 Abacus > **Application de comptabilitĂ© simplifiĂ©e pour associations** Abacus est une application web moderne conçue spĂ©cifiquement pour la gestion comptable des associations. Elle offre une interface intuitive et Ă©lĂ©gante permettant de gĂ©rer facilement vos balances financiĂšres, d'enregistrer vos opĂ©rations et de visualiser vos donnĂ©es comptables en temps rĂ©el. --- ## 📋 Table des matiĂšres - [PrĂ©sentation](#-prĂ©sentation) - [FonctionnalitĂ©s](#-fonctionnalitĂ©s) - [Technologies utilisĂ©es](#-technologies-utilisĂ©es) - [Installation](#-installation) - [Lancement de l'application](#-lancement-de-lapplication) - [Utilisation](#-utilisation) - [Commandes CLI](#-commandes-cli) - [Architecture](#-architecture) - [Licence](#-licence) --- ## 🎯 PrĂ©sentation **Abacus** est nĂ©e du besoin de simplifier la comptabilitĂ© associative. Au lieu de jongler avec des tableurs complexes, Abacus propose une solution web tout-en-un qui centralise : - ✅ **La gestion de vos balances** (compte principal, caisse, Ă©pargne, etc.) - ✅ **L'enregistrement de vos opĂ©rations** (recettes et dĂ©penses) - ✅ **La visualisation de vos donnĂ©es** avec des graphiques interactifs - ✅ **L'export PDF** de vos rapports financiers - ✅ **La sĂ©curitĂ©** avec un systĂšme d'authentification utilisateur - ✅ **Le multi-tenant** pour gĂ©rer plusieurs associations sur une mĂȘme instance L'application a Ă©tĂ© pensĂ©e pour ĂȘtre **minimaliste**, **rapide** et **accessible**, mĂȘme pour les utilisateurs non techniques. --- ## ⚡ FonctionnalitĂ©s ### 🏠 Dashboard interactif - Vue d'ensemble de votre santĂ© financiĂšre - Affichage en carrousel de toutes vos balances - Graphiques d'Ă©volution des revenus et dĂ©penses - Tableaux dĂ©taillĂ©s de toutes les opĂ©rations ### 💰 Gestion des balances - CrĂ©ation et suppression de balances multiples - Modification du nom et du montant initial - Suivi du solde actuel en temps rĂ©el - Organisation par cartes visuelles ### 📊 Gestion des opĂ©rations - Enregistrement de recettes et dĂ©penses - CatĂ©gorisation des opĂ©rations (salaires, achats, dons, etc.) - Ajout de descriptions dĂ©taillĂ©es - Menu contextuel pour Ă©diter ou supprimer - Modal de confirmation pour les suppressions ### 📈 Visualisations - **Graphiques** : Évolution temporelle avec Recharts - **Tableaux** : Liste dĂ©taillĂ©e et filtrable de toutes les opĂ©rations - **Carrousel** : Navigation fluide entre vos diffĂ©rentes balances ### 📄 Export PDF - GĂ©nĂ©ration de rapports PDF professionnels - Consolidation de toutes les opĂ©rations par pĂ©riode - Une page par balance avec design soignĂ© - Export direct depuis le dashboard ### 🔐 SĂ©curitĂ© - Authentification par utilisateur (login/password) - Hachage sĂ©curisĂ© des mots de passe (bcrypt) - Isolation multi-tenant des donnĂ©es - Sessions sĂ©curisĂ©es --- ## đŸ› ïž Technologies utilisĂ©es ### **Frontend** | Technologie | Version | Description | |-------------|---------|-------------| | [React](https://react.dev/) | 19.2.0 | Framework UI moderne et performant | | [TypeScript](https://www.typescriptlang.org/) | 5.8.2 | JavaScript typĂ© pour plus de robustesse | | [Vite](https://vitejs.dev/) | 6.2.0 | Build tool ultra-rapide | | [Tailwind CSS](https://tailwindcss.com/) | - | Framework CSS utilitaire | | [Recharts](https://recharts.org/) | 3.3.0 | BibliothĂšque de graphiques React | | [React PDF](https://react-pdf.org/) | 4.3.1 | GĂ©nĂ©ration de documents PDF | | [date-fns](https://date-fns.org/) | 4.1.0 | Manipulation de dates | ### **Backend** | Technologie | Description | |-------------|-------------| | [FastAPI](https://fastapi.tiangolo.com/) | Framework Python moderne et performant | | [SQLModel](https://sqlmodel.tiangolo.com/) | ORM basĂ© sur SQLAlchemy et Pydantic | | [MySQL](https://www.mysql.com/) | Base de donnĂ©es relationnelle | | [PyMySQL](https://pymysql.readthedocs.io/) | Connecteur MySQL pour Python | | [Uvicorn](https://www.uvicorn.org/) | Serveur ASGI haute performance | | [Typer](https://typer.tiangolo.com/) | CLI moderne pour Python | | [Rich](https://github.com/Textualize/rich) | Rendu de texte enrichi dans le terminal | | [Passlib](https://passlib.readthedocs.io/) | Hachage sĂ©curisĂ© de mots de passe (bcrypt) | --- ## 📩 Installation ### PrĂ©requis Avant de commencer, assurez-vous d'avoir installĂ© : - **Node.js** (v16 ou supĂ©rieur) - [TĂ©lĂ©charger](https://nodejs.org/) - **Python** (v3.8 ou supĂ©rieur) - [TĂ©lĂ©charger](https://www.python.org/) - **MySQL** (v5.7 ou supĂ©rieur) - [TĂ©lĂ©charger](https://www.mysql.com/) ### 1ïžâƒŁ Cloner le projet ```bash git clone cd abacus ``` ### 2ïžâƒŁ Configuration du Backend #### Installer les dĂ©pendances Python ```bash cd backend pip install -r requirements.txt ``` > **Note** : Il est recommandĂ© d'utiliser un environnement virtuel : > ```bash > python -m venv venv > # Windows > venv\Scripts\activate > # Linux/Mac > source venv/bin/activate > ``` #### Configurer la base de donnĂ©es 1. **CrĂ©er une base de donnĂ©es MySQL** : ```sql CREATE DATABASE abacus CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. **Configurer les variables d'environnement** : - Copier le fichier d'exemple : ```bash # Linux/Mac cp .env.example .env # Windows copy .env.example .env ``` - Éditer le fichier `.env` et renseigner vos informations MySQL : ```env DATABASE_URL=mysql+pymysql://utilisateur:motdepasse@localhost:3306/abacus ``` > Remplacez `utilisateur`, `motdepasse` et `localhost:3306` par vos paramĂštres MySQL. 3. **Initialiser les tables** : ```bash python cli.py setup-db ``` ### 3ïžâƒŁ Configuration du Frontend #### Installer les dĂ©pendances Node.js Depuis la racine du projet : ```bash npm install ``` --- ## 🚀 Lancement de l'application ### Mode dĂ©veloppement Pour dĂ©velopper avec rechargement automatique, lancez le backend et le frontend dans **deux terminaux sĂ©parĂ©s** : #### Terminal 1 : Backend ```bash cd backend python cli.py start ``` ✅ Le backend sera accessible sur **http://localhost:8000** - API REST : `http://localhost:8000/api` - Documentation Swagger : `http://localhost:8000/docs` #### Terminal 2 : Frontend ```bash npm run dev ``` ✅ L'application sera accessible sur **http://localhost:9873** ### Mode production Pour lancer l'application complĂšte en production : ```bash python run_prod.py ``` ✅ L'application sera accessible sur **http://0.0.0.0:9874** Ce script : 1. Compile le frontend React en version optimisĂ©e 2. Copie les fichiers statiques dans le dossier `backend` 3. Lance le serveur FastAPI en mode production --- ## 📖 Utilisation ### 1. PremiĂšre connexion 1. Ouvrez votre navigateur sur `http://localhost:9873` (dev) ou `http://localhost:9874` (prod) 2. **CrĂ©ez un compte** en cliquant sur "Register" 3. Remplissez vos informations (nom d'utilisateur et mot de passe) 4. Connectez-vous avec vos identifiants ### 2. CrĂ©er votre premiĂšre balance 1. Sur le dashboard, cliquez sur le bouton **"+ Ajouter une balance"** 2. Remplissez les informations : - **Nom** : ex. "Compte Principal", "Caisse", "Épargne" - **Montant initial** : le solde de dĂ©part (peut ĂȘtre 0) 3. Validez ### 3. Ajouter des opĂ©rations 1. SĂ©lectionnez une balance dans le carrousel 2. Cliquez sur **"+ Ajouter une opĂ©ration"** 3. Renseignez les dĂ©tails : - **Type** : Recette ou DĂ©pense - **Montant** : montant de l'opĂ©ration - **Date** : date de l'opĂ©ration - **CatĂ©gorie** : type d'opĂ©ration (salaire, achat, don, etc.) - **Description** : dĂ©tails complĂ©mentaires 4. Validez ### 4. Visualiser vos donnĂ©es - **Carrousel** : Naviguez entre vos balances avec les flĂšches - **Graphiques** : Consultez l'Ă©volution de vos revenus/dĂ©penses au fil du temps - **Tableau** : Visualisez toutes les opĂ©rations en dĂ©tail, triables et filtrables ### 5. Modifier ou supprimer - **OpĂ©rations** : Clic droit sur une opĂ©ration → Modifier ou Supprimer - **Balances** : Menu contextuel sur chaque carte de balance ### 6. Exporter en PDF 1. Cliquez sur le bouton **"Exporter PDF"** dans l'en-tĂȘte 2. Le rapport complet sera gĂ©nĂ©rĂ© et tĂ©lĂ©chargĂ© automatiquement 3. Le PDF contient toutes vos balances et opĂ©rations avec un design professionnel --- ## đŸŽ›ïž Commandes CLI Le backend dispose d'un outil CLI (`cli.py`) pour faciliter les tĂąches courantes : | Commande | Description | |----------|-------------| | `python cli.py start` | DĂ©marre le serveur de dĂ©veloppement FastAPI (avec rechargement automatique) | | `python cli.py setup-db` | CrĂ©e toutes les tables nĂ©cessaires dans la base de donnĂ©es | | `python cli.py reset-db` | ⚠ **DANGER** : Supprime et recrĂ©e toutes les tables (perte de donnĂ©es) | **Exemples** : ```bash # DĂ©marrer le serveur python cli.py start # CrĂ©er les tables (premiĂšre installation) python cli.py setup-db # RĂ©initialiser complĂštement la base (dĂ©veloppement uniquement) python cli.py reset-db ``` --- ## đŸ—ïž Architecture ``` abacus/ ├── backend/ # Backend FastAPI │ ├── api/ # Routes API │ ├── models/ # ModĂšles SQLModel │ ├── database.py # Configuration DB │ ├── cli.py # Outil CLI │ ├── .env # Variables d'environnement │ └── requirements.txt # DĂ©pendances Python │ ├── components/ # Composants React │ ├── Dashboard.tsx │ ├── BalanceCard.tsx │ ├── OperationsTable.tsx │ ├── OperationsChart.tsx │ ├── AddBalanceModal.tsx │ ├── AddOperationModal.tsx │ ├── ExportButton.tsx │ ├── PDFDocument.tsx │ └── ... │ ├── public/ # Ressources statiques ├── App.tsx # Composant principal ├── api.ts # Client API ├── types.ts # Types TypeScript ├── index.tsx # Point d'entrĂ©e React ├── vite.config.ts # Configuration Vite ├── package.json # DĂ©pendances Node.js └── README.md # Ce fichier ``` ### Flux de donnĂ©es 1. **Frontend** (React) → HTTP Request → **Backend** (FastAPI) 2. **Backend** → SQL Query → **Database** (MySQL) 3. **Database** → Data → **Backend** → JSON Response → **Frontend** ### Multi-tenant Chaque utilisateur a ses propres donnĂ©es isolĂ©es. Le backend filtre automatiquement toutes les requĂȘtes en fonction de l'utilisateur connectĂ©. --- ## 📄 Licence Ce projet est sous licence **CC BY-NC-SA 4.0** (Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les MĂȘmes Conditions). **Auteur** : Coodlab, Mallevaey Lino **Version** : 2025.11.22 --- ## đŸ€ Contribution Les contributions sont les bienvenues ! N'hĂ©sitez pas Ă  : - Signaler des bugs - Proposer de nouvelles fonctionnalitĂ©s - Soumettre des pull requests --- ## 📞 Support Pour toute question ou problĂšme : - Ouvrez une issue sur le dĂ©pĂŽt GitHub - Consultez la documentation Swagger : `http://localhost:8000/docs` ---
**Fait avec ❀ pour simplifier la comptabilitĂ© associative**