ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Trois quiz chronométrés tirés du document « Quiz revus » du client : débutant, intermédiaire et expert, 10 questions chacun, 2 minutes au compte à rebours. Il reprend la stack et le langage visuel de brikelec : Nuxt 4, Baloo 2 et Nunito, couleurs CIPREL et techniciens guides (voir DESIGN.md).
npm install
npm run dev # http://localhost:3000
npm run build # build de production (.output)
?revision=1) : seulement les questions ratées, sans chrono, corrigées une à une, hors classement./resultat/<slug> (aperçu Open Graph, juste ou faux sans les réponses) ;/quiz/<id>?defi=<slug>), qui affiche le score à battre.| Fichier | Rôle |
|---|---|
reference/quizzes-revus.docx | document source du client |
scripts/extract-docx.mjs | npm run content:extract : lit le Word et écrit supabase/seed/quizzes.json. La bonne réponse est l'option cochée (✓ ou ✔), contrôlée contre la lettre de l'explication quand elle est donnée. Titres, sous-titres et durée (120 s) sont fixés dans le script. |
scripts/build-seed.mjs | npm run content:seed : génère supabase/migrations/0002_quiz_seed.sql (rejouable) |
Pour corriger un texte : modifier le Word, relancer les deux scripts, puis rejouer 0002_quiz_seed.sql.
Projet yzgbqpmopzhjefyyrzzr, partagé avec brikelec (table scores) : tout ce qui concerne le quiz est préfixé quiz_. À faire une fois, dans l'éditeur SQL du projet :
supabase/migrations/0001_quiz.sql : tables, droits et fonctions.supabase/migrations/0003_quiz_chrono.sql : durée des quiz, points, échec au temps écoulé.supabase/migrations/0002_quiz_seed.sql : les 3 quiz et les 30 questions. Les quiz qui ne sont plus au questionnaire sont archivés (archived), pas supprimés : leurs tentatives et leurs liens de résultat restent.Ordre de mise en ligne de la version web : appliquer
0003puis0002avant de déployer le code. L'ancien code continue de fonctionner sur la base migrée, alors que le nouveau code a besoin des nouvelles colonnes. La borne, elle, n'utilise pas Supabase (stockage local).
| Table | Contenu | Accès public |
|---|---|---|
quiz_quizzes | les 3 quiz et leur durée | lecture |
quiz_questions | énoncé, choix, corrigé, explication | lecture sans answer ni explanation (droits par colonne) |
quiz_attempts | pseudo, points, bonnes réponses, niveau, durée, échec, lien de partage, jeton secret | lecture des parties terminées, classées et réussies, sans le jeton |
quiz_answers | chaque réponse, juste ou fausse, et son temps | aucun |
Aucune écriture directe : tout passe par des fonctions security definer qui valident côté base.
quiz_start(quiz, pseudo, questions?) démarre une tentative (sous-ensemble de questions : révision hors classement).quiz_answer(tentative, jeton, question, choix, temps) enregistre une réponse (idempotente). Elle renvoie la correction en révision, et rien avant la fin en partie classée. Une partie classée refuse les réponses une fois le temps écoulé.quiz_finish(tentative, jeton) calcule les points, le niveau et le rang, crée le lien de partage et renvoie la correction. Une partie classée incomplète est un échec : 0 point, hors classement.quiz_result(slug) renvoie le résumé public d'un résultat.L'API Nitro (server/api) relaie ces appels. La clé reste côté serveur.
| Route | Rôle |
|---|---|
GET /api/quizzes, GET /api/quizzes/:id | quiz et questions sans corrigé |
POST /api/attempts, POST /api/attempts/:id/answer, POST /api/attempts/:id/finish | une tentative |
GET /api/results/:slug | résultat partagé |
GET /api/leaderboard?quiz= | classement |
La progression (meilleurs scores, erreurs à réviser, récompenses, tentative en cours) est aussi gardée sur l'appareil, dans localStorage.
| Variable | Valeur |
|---|---|
NUXT_SUPABASE_URL | https://yzgbqpmopzhjefyyrzzr.supabase.co |
NUXT_SUPABASE_KEY | la clé publishable (sb_publishable_…), jamais la clé secrète |
NUXT_PUBLIC_SITE_URL | l'adresse publique du quiz (liens de partage, Open Graph) |
En local, elles vont dans .env (non versionné, voir .env.example). Sur Vercel, Nuxt est détecté automatiquement : il suffit de définir ces variables dans Project Settings → Environment Variables.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗