# OptiqueStock Application de gestion de magasin d'optique — full-stack Next.js avec gestion des clients, produits, ventes, achats, atelier et rapports. ## Modules | Module | Description | |---|---| | **Accueil** | Dashboard avec accès aux modules | | **Clients** | Gestion des clients, relevés de vision, ordonnances | | **Produits** | Catalogue (montures, verres, lentilles, accessoires), alertes stock, codes QR, images | | **Fournisseurs** | Gestion des fournisseurs | | **Achats & Stock** | Factures d'achat, réception de stock, upload PDF | | **Point de Vente** | Panier, paiements fractionnés, historique des ventes | | **Atelier** | Suivi des commandes de montage (4 statuts : EN_ATTENTE → EN_COURS → TERMINE → PRET) | | **Rapports** | KPIs, graphiques (ventes, catégories, stocks), export CSV | ## Stack - **Framework**: Next.js 16 (App Router), React 19, TypeScript 5 - **Base de données**: SQLite via Prisma ORM - **UI**: Tailwind CSS 4, shadcn/ui, lucide-react - **État & données**: Zustand, TanStack Query, TanStack Table - **Formulaires**: react-hook-form + Zod - **Graphiques**: Recharts - **Autre**: Framer Motion, DND Kit, Sharp, QR Code, Sonner (toasts) ## Démarrage rapide ```bash # Cloner et configurer bun install echo 'DATABASE_URL="file:./dev.db"' > .env # Base de données bunx prisma generate bunx prisma db push # Lancer le serveur de développement bun run dev # → http://localhost:3000 ``` ## Scripts | Commande | Description | |---|---| | `bun run dev` | Serveur de développement (port 3000) | | `bun run build` | Build production | | `bun start` | Serveur production | | `bun run lint` | ESLint | | `bun run db:push` | Push Prisma schema → DB | | `bun run db:generate` | Générer client Prisma | | `bun run db:migrate` | Migration Prisma | | `bun run db:reset` | Reset base de données | ## Structure ``` src/ ├── app/ │ ├── page.tsx # SPA — commutation de modules │ ├── layout.tsx # Layout racine │ ├── globals.css # Styles Tailwind + shadcn │ └── api/ # API REST (12 groupes de routes) ├── components/ │ ├── clients/ # Module Clients │ ├── products/ # Module Produits │ ├── pos/ # Module Point de Vente │ ├── purchases/ # Module Achats │ ├── suppliers/ # Module Fournisseurs │ ├── atelier/ # Module Atelier │ ├── reports/ # Module Rapports │ └── ui/ # Composants shadcn/ui ├── hooks/ # Hooks personnalisés └── lib/ # Utilitaires (db, optical-utils, qr-code) ``` ## API Toutes les routes sous `/api/` suivent le pattern REST : - `api/clients`, `api/clients/[id]`, `api/clients/[id]/patients` - `api/patients`, `api/patients/[id]`, `api/patients/[id]/ordonnances` - `api/produits`, `api/produits/[id]`, `api/produits/[id]/images` - `api/fournisseurs`, `api/fournisseurs/[id]`, `api/fournisseurs/[id]/factures` - `api/achats/factures`, `api/achats/factures/[id]`, `api/achats/factures/[id]/valider` - `api/pos/products`, `api/pos/clients`, `api/pos/sales`, `api/pos/sales/[id]` - `api/atelier/orders`, `api/atelier/orders/[id]` - `api/reports/dashboard`, `api/reports/sales`, `api/reports/inventory`, `api/reports/export/*` - `api/fichiers/[id]` Base de données SQLite auto-contenue — aucun serveur externe requis.