Kawari est un assistant financier intelligent conçu pour les petites entreprises du Burkina Faso. Il centralise les ventes, dépenses, factures et fournit un tableau de bord clair avec analyses IA pour aider les entrepreneurs à mieux gérer leur trésorerie.
# Kawari Finance App - Refactored
Une application de gestion financière simplifiée avec architecture moderne : **Express.js + MongoDB + React + TypeScript**.
## 🎯 Changements de la Refonte
### Backend
- ✅ **Base de données** : Remplacé Prisma par **Mongoose + MongoDB** (pas de compilation native)
- ✅ **API REST simplifiée** : endpoints légers sans logique complexe
- ✅ **Auth** : JWT + Refresh tokens, hash passwords (bcryptjs)
- ✅ **Modèles** : User, Customer, Transaction, Invoice, Notification, RefreshToken
### Frontend
- ✅ **Client HTTP** : Remplacé Axios + intercepteurs complexes par **fetch simple** (`apiInterceptor.ts`)
- ✅ **Gestion d'état** : TanStack Query pour sync réactive
- ✅ **Stockage token** : localStorage (clé: `token`)
## 📋 Prérequis
- **Node.js** : v20+ (ou v24.12.0)
- **npm** : v10+
- **MongoDB** : local (localhost:27017) ou Atlas
- **Git**
### Installation locale MongoDB (Windows)
1. Téléchargez MongoDB Community :
mongodb.com
2. Installez avec path par défaut
3. Démarrez le service :
```powershell
net start MongoDB # ou via Services Windows
```
Vérifiez : `mongosh --nodb` → connecte-vous à `mongodb://localhost:27017`
## 🚀 Démarrage Rapide
### Terminal 1 : Backend
```powershell
cd backend
npm install
npm run seed:mongo # Peuple MongoDB avec données test
npm run dev # Démarre sur
localhost
```
**Comptes de test (après seed) :**
- Email: `admin@kawari.com` / Password: `Password123!`
- Email: `jean@kawari.com` / Password: `Password123!`
- Email: `marie@kawari.com` / Password: `Password123!`
### Terminal 2 : Frontend
```powershell
cd frontend
npm install
npm run dev # Démarre sur
localhost
```
Ouvrez :
localhost → Login avec admin@kawari.com / Password123!
## 🔌 Endpoints API
### Auth (Public)
```bash
# Register
POST /api/auth/register
Content-Type: application/json
{"name":"John","email":"john@example.com","password":"Password123!"}
# Login …