2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-31 21:35:50 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-31 21:35:50 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00
2026-05-30 14:33:11 +01:00

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

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

Description
No description provided
Readme 13 MiB
Languages
TypeScript 96.6%
Shell 2.2%
JavaScript 0.6%
CSS 0.6%