Files
OpticZ/README.md

94 lines
3.5 KiB
Markdown

# 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.