Áleran Vocals
Piano, entrenamiento con micrófono y juegos de oído para alumnos de canto: notas, escalas, afinación, rango vocal, resistencia e intervalos.
Translation pending
Partage de de 8000+ exercices de mathématiques
Translation pending
EducationTeX · PostScriptGitHub @automathprojectOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Application web pour servir des exercices de mathématiques LaTeX avec recherche avancée.
# Installation des dépendances (Node 22 + pnpm via corepack)
pnpm install
# Générer incrémentalement le cache JSON et la base SQLite (sans TikZ)
pnpm build:content
# Si les sources modifiées contiennent du TikZ, compiler aussi les SVG
pnpm build:content:incremental:with-tikz
# Vérifier que les images des exercices sont bien présentes dans les artefacts servis
pnpm check:artifacts
# Démarrer le serveur Vite (http://localhost:5173)
pnpm dev
# Variante: rebuild du contenu puis démarrer le serveur
pnpm dev:full
# Tests unitaires (scripts de build, parsing LaTeX, export)
pnpm test
# Tests d'interface (Playwright) — nécessite le navigateur, une seule fois :
npx playwright install chromium
pnpm test:integration
# Un seul projet, ou un seul fichier
npx playwright test --project=mobile
npx playwright test tests/e2e/feuille.mobile.spec.js
Les tests d'interface démarrent le serveur de développement au besoin et
réutilisent celui déjà lancé. Ils sont séparés en deux projets, desktop et
mobile, parce que le comportement l'est : la prévisualisation est une colonne
sur ordinateur et une feuille tactile sur téléphone, et la destination
d'ouverture d'un exercice en dépend.
# Build complet (contenu + bundle Node adapter)
pnpm build
# Vérifier le build localement
pnpm preview
# Lancer le serveur Node en production (PORT=3000 par défaut)
NODE_ENV=production node build
# 1) Mettre à jour la version dans package.json (champ "version")
# Exemple: "2.3.2" -> "2.3.3"
# Préparer les artéfacts locaux avant de reconstruire l'image.
# Utiliser build:content:full après un clean ou sur une nouvelle machine.
pnpm build:content:incremental:with-tikz
# 2) Construire + pousser l'image GHCR taggée avec package.json:version
pnpm docker:release
# 3) Démarrer la stack (Caddy + app) en mode interactif
pnpm docker:dev
# 4) Lancer en détaché (prod)
pnpm docker:prod
# Arrêt
docker compose down
Notes:
pnpm docker:build et pnpm docker:push existent aussi si vous voulez séparer les étapes.package.json (version), sans variable VERSION=... à saisir manuellement.Créer un fichier .env à la racine (jamais commité) :
# Ollama — LLM local (prioritaire)
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_CHAT_MODEL=mistral-small3.2:24b
OLLAMA_EMBED_MODEL=bge-m3
# Albert API — fallback si Ollama indisponible
ALBERT_API_KEY=sk-...
ALBERT_BASE_URL=https://albert.api.etalab.gouv.fr/v1
Ollama est utilisé en priorité pour la génération de résumés et les embeddings. Albert prend le relais si Ollama n'est pas disponible ou si le modèle n'est pas installé. Pour l'indexation sémantique, Ollama seul suffit (gratuit, hors-ligne).
L’onglet « PDF LaTeX » de l’éditeur /create utilise le service public
TeXLive.net avec LuaLaTeX. Les sources
sont donc envoyées à ce service tiers ; ne l’utilisez pas pour un contenu
confidentiel. Les éventuelles ressources jointes doivent être textuelles (SVG,
EPS, .tex, .sty, .cls, .bib ou .csv) : les images binaires ne sont
pas supportées par ce protocole.
# Après build:content, générer résumés + embeddings pour les nouveaux exercices
pnpm index:exercises
# Options utiles
pnpm index:exercises:force # réindexe tout
node scripts/index-exercises.js --uuid UUID # un seul exercice
node scripts/index-exercises.js --limit 50 # limiter à 50 exercices
node scripts/index-exercises.js --dry-run # simuler sans écrire
Les résumés générés sont versionnés dans content/metadata/ et commités dans git.
Les embeddings restent en local dans cache/embeddings/ et dans la DB.
Trois artefacts cohabitent :
content/metadata/**/*.json : résumés, concepts, méthodes et objets générés par LLM. Ils sont versionnés dans Git et doivent être commités après pnpm index:exercises.data/exercises.sqlite : base locale non versionnée. Elle contient les exercices, les métadonnées chargées depuis Git et les embeddings.cache/embeddings/*.json : cache local non versionné. Il évite de rappeler Ollama/Albert et peut être reconstruit depuis la DB.Règle pratique : Git transporte les métadonnées textuelles, le snapshot transporte la DB et les embeddings. Le cache local est seulement une copie de travail.
# Machine qui a indexé
source ~/.nvm/nvm.sh
nvm use
pnpm install
pnpm build:content
pnpm index:exercises
git status --short
# commiter les content/metadata/**/*.json modifiés
pnpm db:snapshot:pack
pnpm db:snapshot:publish
# Autre machine
source ~/.nvm/nvm.sh
nvm use
pnpm install
git pull
pnpm db:snapshot:update
pnpm cache:embeddings:stats
pnpm dev
pnpm db:snapshot:update télécharge le snapshot puis le restaure.
pnpm db:snapshot:restore restaure data/exercises.sqlite puis reconstruit
cache/embeddings/ depuis la DB. Si un fichier de cache existait déjà mais avec
un content_hash différent, il est remplacé.
Prérequis : Node 22 (.nvmrc) et gh connecté (gh auth login). Par défaut,
les commandes utilisent le tag db-snapshot-dev et l'archive locale ignorée par
Git data/openyourmath-db-snapshot.tgz.
Voir aussi : docs/embeddings-sync.md.
content/ : Sources LaTeX des exercices + métadonnées LLM versionnées (content/metadata/)cache/ : Cache JSON des exercices parsés + embeddings locaux (cache/embeddings/)scripts/ : Pipeline de build (LaTeX → JSON → SQLite) et indexation IAsrc/ : Application SvelteKitstatic/ : Assets statiques et artifactsÀ commiter avec un nouvel exercice :
content/exercises/**/*.tex : la source de l'exercice ;content/images/** : les images sources éventuellement référencées ;content/metadata/**/*.json : les métadonnées produites par pnpm index:exercises ;content/authors.json uniquement si le référentiel d'auteurs a changé.Ne pas commiter : data/, cache/ et static/artifacts/. Ces répertoires sont
générés localement et embarqués dans l'image Docker au moment de la construction.
Voir /docs pour plus de détails.
content/referentials/cpge/, importés d'exobase).docs/debug-scripts.mdRaccourcis associés :
pnpm exercise:prepare -- X7pQ # valide, construit et indexe un exercice
pnpm exercises:prepare # prépare tous les nouveaux .tex non commités
pnpm release:content # teste, construit et pousse une release GHCR
content/referentials/amscc/referentiel.md, content/referentials/exo7/),
comme l'a été le référentiel CPGE (scripts/build-referentiel-cpge.js), pour
remplacer la taxonomie implicite de la base, aujourd'hui bruitée (doublons
de graphie type « Probabilités et Statistique(s) », chapitres promus
modules…). À brancher ensuite dans :
/create
(metadataTask() dans src/routes/api/create/assist/+server.js, la base
ne servant plus que de complément) ;scripts/quality/).