Cette application permet aux associations sociales tunisiennes de gérer efficacement :
- 👥 Les bénéficiaires et leurs familles
- 🎁 La distribution des aides (Couffin Ramadan, Aide scolaire, Vêtements Aïd, etc.)
- 💰 La comptabilité (entrées/sorties financières)
- 📱 Le suivi par QR Code avec preuve photo
- 🔄 La détection automatique des doublons (éviter les distributions multiples)
- Enregistrement avec CIN, situation familiale, revenus
- Liaison des conjoints pour la détection des doublons au niveau du foyer
- Historique complet des aides reçues
- Types d'aides préconfigurés (Ramadan, scolaire, Aïd, médical, alimentaire)
- Génération de QR codes uniques par opération
- Scan QR pour distribution rapide
- Preuve photo obligatoire lors de la remise
- Suivi des entrées (dons, subventions, cotisations)
- Suivi des dépenses (achats, charges, aides directes)
- Tableau de bord avec statistiques
- Vérification automatique avant distribution
- Prise en compte des périodes (mensuel, annuel, ponctuel)
- Vérification au niveau du foyer (conjoint inclus)
- Node.js + Express.js
- PostgreSQL (base de données)
- JWT (authentification)
- Multer (upload photos)
- QRCode (génération)
- React 18 + Vite
- TailwindCSS (styles)
- React Router DOM (navigation)
- Axios (requêtes API)
- html5-qrcode (scan QR)
Gestion-Associations/
├── backend/
│ ├── config/ # Configuration base de données
│ ├── controllers/ # Logique métier
│ │ ├── authController.js
│ │ ├── beneficiaireController.js
│ │ ├── financeController.js
│ │ └── operationController.js
│ ├── middleware/ # Authentification JWT
│ ├── routes/ # Routes API
│ ├── uploads/ # Photos uploadées
│ ├── schema.sql # Schéma de la base de données
│ └── server.js # Point d'entrée
├── frontend/
│ └── src/
│ ├── components/ # Composants réutilisables
│ ├── context/ # Context React (Auth)
│ ├── pages/ # Pages principales
│ │ ├── Dashboard.jsx
│ │ ├── Beneficiaires.jsx
│ │ ├── Operations.jsx
│ │ ├── Finance.jsx
│ │ └── Login.jsx
│ └── services/ # Services API
└── scripts de démarrage (.bat)
- Node.js >= 18
- PostgreSQL >= 14
- npm ou yarn
git clone https://github.com/votre-username/Gestion-Associations.git
cd Gestion-Associations# Créer la base de données PostgreSQL
psql -U postgres
CREATE DATABASE gestion_associations;
\q
# Exécuter le schéma SQL
psql -U postgres -d gestion_associations -f backend/schema.sql# backend/.env
DATABASE_URL=postgresql://postgres:votre_mot_de_passe@localhost:5432/gestion_associations
JWT_SECRET=votre_secret_jwt
PORT=5000# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm install# Terminal 1 - Backend
cd backend
npm run dev
# Terminal 2 - Frontend
cd frontend
npm run devOu utilisez les scripts fournis :
start-app.bat- Lance toutstart-backend.bat- Backend uniquementstart-frontend.bat- Frontend uniquement
- Connexion : Utilisez vos identifiants pour vous connecter
- Dashboard : Vue d'ensemble des statistiques
- Bénéficiaires : Ajouter/modifier les bénéficiaires
- Opérations : Créer des distributions, scanner les QR codes
- Finance : Gérer les entrées et sorties
- Admin : Accès complet
- Gestionnaire : Gestion bénéficiaires et opérations
- Bénévole : Distribution uniquement
This application helps Tunisian social associations efficiently manage:
- 👥 Beneficiaries and their families
- 🎁 Aid distribution (Ramadan baskets, school supplies, Eid clothing, etc.)
- 💰 Accounting (financial income/expenses)
- 📱 QR Code tracking with photo proof
- 🔄 Automatic duplicate detection (prevent multiple distributions)
- Registration with ID number, family status, income
- Spouse linking for household-level duplicate detection
- Complete history of received aid
- Pre-configured aid types (Ramadan, school, Eid, medical, food)
- Unique QR code generation per operation
- QR scan for quick distribution
- Mandatory photo proof upon delivery
- Income tracking (donations, grants, memberships)
- Expense tracking (purchases, charges, direct aid)
- Dashboard with statistics
- Automatic verification before distribution
- Period consideration (monthly, annual, one-time)
- Household-level verification (spouse included)
- Node.js + Express.js
- PostgreSQL (database)
- JWT (authentication)
- Multer (photo upload)
- QRCode (generation)
- React 18 + Vite
- TailwindCSS (styling)
- React Router DOM (navigation)
- Axios (API requests)
- html5-qrcode (QR scanning)
Gestion-Associations/
├── backend/
│ ├── config/ # Database configuration
│ ├── controllers/ # Business logic
│ │ ├── authController.js
│ │ ├── beneficiaireController.js
│ │ ├── financeController.js
│ │ └── operationController.js
│ ├── middleware/ # JWT authentication
│ ├── routes/ # API routes
│ ├── uploads/ # Uploaded photos
│ ├── schema.sql # Database schema
│ └── server.js # Entry point
├── frontend/
│ └── src/
│ ├── components/ # Reusable components
│ ├── context/ # React Context (Auth)
│ ├── pages/ # Main pages
│ │ ├── Dashboard.jsx
│ │ ├── Beneficiaires.jsx
│ │ ├── Operations.jsx
│ │ ├── Finance.jsx
│ │ └── Login.jsx
│ └── services/ # API services
└── startup scripts (.bat)
- Node.js >= 18
- PostgreSQL >= 14
- npm or yarn
git clone https://github.com/your-username/Gestion-Associations.git
cd Gestion-Associations# Create PostgreSQL database
psql -U postgres
CREATE DATABASE gestion_associations;
\q
# Run the SQL schema
psql -U postgres -d gestion_associations -f backend/schema.sql# backend/.env
DATABASE_URL=postgresql://postgres:your_password@localhost:5432/gestion_associations
JWT_SECRET=your_jwt_secret
PORT=5000# Backend
cd backend
npm install
# Frontend
cd ../frontend
npm install# Terminal 1 - Backend
cd backend
npm run dev
# Terminal 2 - Frontend
cd frontend
npm run devOr use the provided scripts:
start-app.bat- Starts everythingstart-backend.bat- Backend onlystart-frontend.bat- Frontend only
- Login: Use your credentials to log in
- Dashboard: Overview of statistics
- Beneficiaries: Add/edit beneficiaries
- Operations: Create distributions, scan QR codes
- Finance: Manage income and expenses
- Admin: Full access
- Manager: Beneficiary and operation management
- Volunteer: Distribution only
MIT License - See LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
For questions or support, please open an issue on GitHub.