Ma librairie de katiola
# La librairie de Katiola
Application de gestion de librairie multi-boutiques, multi-utilisateurs — caisse (POS), stock, achats, ventes, retours, dépenses, rapports. Construite sur Next.js (App Router) + TypeScript + Supabase + Tailwind CSS, installable en PWA.
## ⚠️ État du projet — à lire avant de démarrer
Ce dépôt a été généré à partir du cahier des charges complet fourni. Le **socle est réellement fonctionnel et connecté à Supabase** (pas de données statiques ni de faux JSON) :
**Implémenté et fonctionnel :**
- Schéma Supabase complet (migrations `0001` → `0010`) : profils, rôles, permissions, boutiques multi-tenant, catalogue produits, stock par boutique, achats, caisses/sessions, **ventes atomiques via transaction Postgres**, retours avec contrôle anti-abus, dépenses, notifications, audit, paramètres
- RLS activé et strict sur **toutes** les tables sensibles — testé pour qu'un caissier ne puisse jamais accéder aux données d'une autre boutique ni contourner ses permissions, même en appelant Supabase directement
- Authentification Supabase Auth, deux parcours de connexion (Responsable / Caissier), protection de routes via middleware + vérification serveur
- Page d'accueil, connexion, dashboard Responsable avec KPIs réels, module Produits (liste + recherche + pagination, création/édition/archivage via Server Actions vérifiées par permission)
- **Caisse (POS) fonctionnelle de bout en bout** : ouverture de caisse, recherche produit, panier, encaissement via la fonction SQL `create_sale` (vente + lignes + paiement + déduction de stock dans une seule transaction), clôture de caisse avec calcul d'écart, reçu imprimable au format 80 mm
- **Boutiques** : création, édition, activation/désactivation, KPIs par boutique (CA du mois, effectif, réf. en stock) — réservé au propriétaire
- **Utilisateurs** : création de compte (Supabase Auth + profil + attribution boutique/rôle en une opération atomique côté serveur), désactivation/réactivation. Un utilisateur désactivé est …