Bibliothèque numérique intelligente — PWA, lecture multi-format, quiz générés par IA et suivi de progression.
L'application est déployée sur Vercel : https://datalib-sigma.vercel.app
DataLib est une application web progressive (PWA) qui permet d'importer, lire et exploiter des documents (PDF, EPUB, DOCX, PPTX, XLSX, TXT, MD) directement depuis le navigateur, avec stockage local (IndexedDB) et synchronisation cloud optionnelle.
Fonctionnalités principales :
- 📚 Lecture multi-format — PDF, DOCX, PPTX (via
@docmentis/udoc-viewer), EPUB (viafoliate-js), XLSX, TXT/MD - 🧠 Quiz générés automatiquement — génération locale ou via IA (Groq, modèle Llama 3.3 70B)
- 🔍 Recherche globale — indexation en mémoire de tous les documents importés
- 📊 Analyse de données — statistiques de texte, analyse de colonnes XLSX avec corrélations, interprétation en langage naturel
- 👥 Mode groupe — classement et suivi de progression partagé
- 📴 Fonctionne hors-ligne — PWA installable, cache local via IndexedDB (Dexie)
- ☁️ Synchronisation cloud — sauvegarde optionnelle via Supabase
| Couche | Technologie |
|---|---|
| Frontend | React 19 + Vite 8 + React Router 7 (JSX, sans TypeScript) |
| État | Zustand (persisté en sessionStorage) |
| Stockage local | Dexie (IndexedDB) |
| Backend | Express 5 (server.js), API dans /api |
| Auth & DB cloud | Supabase (Auth + PostgreSQL) |
| IA | Groq API (Llama 3.3 70B / Llama 3.1 8B) |
| PWA | vite-plugin-pwa |
git clone https://github.com/<votre-user>/datalib.git
cd datalib
npm installCopiez le fichier d'exemple et renseignez vos clés :
cp .env.example .envGROQ_API_KEY=votre_cle_groq
VITE_GROQ_API_KEY=votre_cle_groq
VITE_SUPABASE_URL=https://votre-projet.supabase.co
VITE_SUPABASE_ANON_KEY=votre_cle_anon
SUPABASE_SERVICE_ROLE_KEY=votre_cle_service_role
⚠️ Ne commitez jamais le fichier.env— il est déjà ignoré par.gitignore.
Exécutez le script setup.sql dans l'éditeur SQL de votre projet Supabase pour créer la table user_data et activer la Row Level Security. Détails complets dans docs/BACKEND.md.
npm run dev # Backend Express (port 3001) + Vite (port 5173) en parallèle
npm run dev:client # Vite seul
npm run dev:api # Express seulL'application est accessible sur http://localhost:5173. Les appels /api/* sont automatiquement proxifiés vers le serveur Express.
npm run build # Build de production (dist/), PWA incluse
npm run preview # Prévisualiser le build localement
npm run start # Servir dist/ + API en production (Node)Le projet est préconfiguré (vercel.json) — build Vite + fonctions serverless pour /api.
- Importez le repo GitHub sur vercel.com
- Ajoutez les variables d'environnement dans Settings → Environment Variables :
VITE_GROQ_API_KEYVITE_SUPABASE_URLVITE_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY
- Déployez — Vercel détecte automatiquement les fichiers
/api/*.jscomme fonctions serverless
Pour éviter que le projet Supabase ne se mette en pause pendant les périodes d'inactivité, deux options :
- Ping régulier — ajouter un cron job (ex: Vercel Cron ou GitHub Actions) qui effectue une requête simple à la base toutes les quelques jours
- Passer sur le plan Pro Supabase — supprime totalement la mise en pause automatique (~25$/mois)
src/
pages/ — une page par route (Welcome, Login, Register, Dashboard, Books,
Reader, Quiz, Search, Stats, Analyse, Interpret, Group...)
components/ — composants partagés (Layout, UdocViewer, FoliateViewer...)
lib/ — logique métier (import, rendu, quiz, indexation, Groq, sync...)
db.js — schéma Dexie (IndexedDB)
App.jsx — routing
api/
auth.js — inscription / connexion / session (Supabase Auth)
groq.js — proxy vers l'API Groq (clé jamais exposée au client)
sync.js — synchronisation Dexie ↔ Supabase
server.js — serveur Express (développement + production)
Architecture détaillée, conventions de code et notes pour contributeurs : voir AGENTS.md.
| Commande | Description |
|---|---|
npm run dev |
Backend + frontend en développement |
npm run build |
Build de production |
npm run lint |
ESLint |
npm run preview |
Aperçu du build de production |
npm run start |
Lancer en production (Express) |
AGENTS.md— architecture complète, conventions, formats de lecture supportésdocs/BACKEND.md— architecture backend, endpoints API, configuration Supabase détaillée