Skip to content

Repository files navigation

DataLib

Bibliothèque numérique intelligente — PWA, lecture multi-format, quiz générés par IA et suivi de progression.

Vite React License

🔗 Démo en ligne

L'application est déployée sur Vercel : https://datalib-sigma.vercel.app

Aperçu

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 (via foliate-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

Stack technique

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

Prérequis

  • Node.js 22.x
  • Un compte Groq (clé API)
  • Un projet Supabase (pour l'auth et la synchronisation cloud)

Installation

git clone https://github.com/<votre-user>/datalib.git
cd datalib
npm install

Configuration

Copiez le fichier d'exemple et renseignez vos clés :

cp .env.example .env
GROQ_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.

Base de données Supabase

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.

Démarrage

npm run dev          # Backend Express (port 3001) + Vite (port 5173) en parallèle
npm run dev:client   # Vite seul
npm run dev:api      # Express seul

L'application est accessible sur http://localhost:5173. Les appels /api/* sont automatiquement proxifiés vers le serveur Express.

Build & déploiement

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)

Déploiement sur Vercel

Le projet est préconfiguré (vercel.json) — build Vite + fonctions serverless pour /api.

  1. Importez le repo GitHub sur vercel.com
  2. Ajoutez les variables d'environnement dans Settings → Environment Variables :
    • VITE_GROQ_API_KEY
    • VITE_SUPABASE_URL
    • VITE_SUPABASE_ANON_KEY
    • SUPABASE_SERVICE_ROLE_KEY
  3. Déployez — Vercel détecte automatiquement les fichiers /api/*.js comme fonctions serverless

Éviter la mise en pause Supabase

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)

Structure du projet

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.

Scripts disponibles

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)

Documentation complémentaire

  • AGENTS.md — architecture complète, conventions, formats de lecture supportés
  • docs/BACKEND.md — architecture backend, endpoints API, configuration Supabase détaillée

About

Bibliothèque numérique PWA — lecture multi-format, quiz IA et suivi de progression

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages