Application web de gestion de stock alimentaire personnel avec deux phases :
- Pré-courses : Inventaire du stock actuel
- Courses : Liste d'achats à cocher en magasin
- Frontend : React 18 + TypeScript + Vite + Tailwind CSS
- Backend : Express + TypeScript
- Base de données : NiceFox GraphDB
- Authentification : NiceFox Auth (OAuth Google)
- Node.js 18+
- NiceFox GraphDB en cours d'exécution sur le port 3300
- NiceFox Auth configuré
- Copier les fichiers d'environnement :
cp .env.example backend/.env
cp frontend/.env.example frontend/.env- Configurer les variables dans
backend/.env:GRAPHDB_API_KEY: Clé API GraphDB pour le projet "stock"JWT_SECRET: Secret JWT partagé avec nicefox-auth
# Backend (port 3000)
cd backend
npm install
npm run dev
# Frontend (port 5173)
cd frontend
npm install
npm run dev├── backend/
│ └── src/
│ ├── index.ts # Point d'entrée Express
│ ├── config.ts # Configuration
│ ├── routes/ # Routes API
│ ├── services/ # Logique métier
│ ├── db/ # Requêtes GraphDB
│ ├── middleware/ # Auth middleware
│ └── types/ # Types TypeScript
├── frontend/
│ └── src/
│ ├── App.tsx # Router principal
│ ├── pages/ # Pages de l'application
│ ├── components/ # Composants réutilisables
│ ├── contexts/ # Contexte Auth
│ ├── services/ # API client
│ └── types/ # Types TypeScript
└── SPEC.md # Spécification complète
- Se connecter via Google (redirection vers auth.nicefox.net)
- Ajouter des éléments dans "Gérer les éléments"
- Démarrer une session de courses
- Phase inventaire : compter le stock de chaque élément
- Phase courses : cocher les éléments achetés
- Terminer la session pour mettre à jour le stock
GET /api/items- Liste des élémentsPOST /api/items- Créer un élémentPUT /api/items/:id- Modifier un élémentDELETE /api/items/:id- Supprimer un élémentPOST /api/items/reorder- Réordonner les éléments
GET /api/sessions/current- Session en coursPOST /api/sessions- Nouvelle sessionPATCH /api/sessions/:id/status- Changer le statutPATCH /api/sessions/:id/items/:itemId- Mettre à jour un élémentPOST /api/sessions/:id/complete- Terminer la session