ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Tes cours, reliés en livres.
Application web de révision : chaque matière est un rayon, chaque jeu de
fiches un livre, et ce qu'on prête au cercle se pose sur l'étagère
commune. Sans dépendance, servie en statique, comptes et synchronisation
par Supabase.
Cache local en localStorage.
index.html · app.css · app.js · sw.js · manifest.webmanifest
logoflashcard.png source des icônes
icons/ icônes PWA générées
decks/ paquets livrés avec l'app (injection par commit)
tools/inject.py texte brut -> paquet + lien d'import
tools/build_2_1.py paquets du cours 2.1
tools/make_icons.py logoflashcard.png -> icons/
Matières : italien anglais philo eco droit management lettres.
Injection :
python3 tools/inject.py "Vocabulaire éco" -s eco -b https://<url-de-lapp> <<'EOF'
inflation = hausse générale des prix
PIB = production intérieure
EOF
Sortie : decks/<slug>.json + decks/index.json (commit = paquet poussé dans l'app)
et un lien …/#i=<payload> qui importe le paquet en un tap.
Chaque compte a sa propre bibliothèque dans Supabase (projet flashcard,
région eu-west-1). Trois tables, toutes en RLS stricte :
| table | contenu |
|---|---|
subjects | matières du compte : nom, couleur, ordre |
decks | paquets ; les cartes vivent en JSONB |
sessions | historique des scores, pour les courbes |
La politique est la même partout : user_id = auth.uid(). Un compte ne peut
donc ni lire ni écrire les lignes d'un autre, même en forgeant une requête —
c'est Postgres qui filtre, pas le client.
La clé publique (anon) est écrite en clair dans app.js. C'est prévu : elle
ne donne accès à rien par elle-même, seul le jeton de session obtenu à la
connexion ouvre les lignes du compte.
L'app garde une copie locale de la bibliothèque pour démarrer instantanément et fonctionner hors ligne ; les écritures partent en base et sont rejouées à la reconnexion. Vider le navigateur ne perd plus rien : il suffit de se reconnecter.
Les matières se créent, se renomment, se recolorent et se suppriment depuis l'écran Réglages (engrenage, en haut de l'accueil), sur une palette de 16 teintes.
De la base, et de nulle part ailleurs. Aucun paquet n'est écrit dans le code,
aucun n'est livré avec l'app : chaque carte appartient à une ligne decks d'un
compte, et les règles RLS de Supabase interdisent d'en lire une autre. Le cache
local n'est qu'une copie de ce que le compte connecté a déjà reçu.
Seules les sept matières de départ (Italien, Anglais, Philo, Éco, Droit,
Management, Lettres) sont créées à l'ouverture d'un compte — ce sont des lignes
subjects du compte, renommables, recolorables et supprimables.
Le bouton étincelle de la feuille « Coller » transforme un texte de cours en paires recto/verso, éditables avant l'ajout.
La clé Anthropic n'est jamais dans le dépôt ni dans app.js : ces fichiers
sont servis par GitHub Pages et donc lisibles par tout le monde. Elle vit dans
un secret de la fonction Edge ai (supabase/functions/ai/index.ts), qui est
la seule à parler à l'API. L'app n'envoie que le texte, accompagné du jeton de
session du compte connecté.
Secrets à définir sur le projet Supabase, dans Edge Functions → Secrets :
| secret | rôle |
|---|---|
ANTHROPIC_API_KEY | obligatoire, sinon la fonction répond nokey |
AI_BUDGET_USD | plafond de dépense sur le mois en cours (défaut 20) |
AI_DAILY_CALLS | appels maximum par compte et par jour (défaut 30) |
Chaque appel est journalisé dans la table ai_usage (tokens consommés et coût
en cents). Le plafond mensuel est vérifié avant chaque appel : au-delà, la
fonction refuse et l'app affiche « Budget IA atteint ».
Réglages → Mode simple éteint le moteur de planification : plus d'échéance, plus de notes, seulement le balayage à gauche ou à droite. Un message détaille les conséquences avant la bascule.
Aucune donnée n'est effacée : l'échéance, l'intervalle, la facilité et le nombre de réussites restent inscrits dans chaque carte. Réviser en mode simple ne les fait pas avancer. Au rallumage, les cartes dont l'échéance est passée pendant l'arrêt sont réparties sur plusieurs jours, à hauteur de l'objectif quotidien, pour éviter un rattrapage massif le même jour.
Le moteur suit la série recommandée en pédagogie scolaire — Ebbinghaus pour la forme de la courbe, Cepeda & Pashler pour l'écart optimal (10 à 20 % de l'horizon visé) :
J+1 · J+3 · J+7 · J+15 · J+30 · J+60 · J+120 · J+240 · J+365
Une carte monte d'un échelon quand elle passe, de deux avec « Facile », redescend d'un avec « Difficile », et retourne à l'apprentissage du jour avec « Encore ». Une carte durablement pénible reste sur son échelon au lieu de monter.
Chaque ligne de carte porte un bouton dont l'icône dit ce qu'elle contient :
… carte simple, T vrai/faux, une image, un haut-parleur, une étiquette.
Il ouvre la feuille d'édition : type, image et son au recto comme au verso,
étiquettes libres.
Mise en forme. **gras**, *italique*, __souligné__, retours à la ligne
et listes à puces (- ). Les formules s'écrivent entre $ en LaTeX :
$\frac{a+b}{2} \ge \sqrt{ab}$. Le rendu couvre fractions, racines, indices,
exposants, lettres grecques et opérateurs courants — sans aucune bibliothèque,
pour que l'app démarre toujours hors ligne.
Son. Un enregistrement peut être attaché à une face ; sinon, si le paquet déclare une langue, le navigateur lit le texte. Recto et verso ont chacun leur langue (réglages du paquet), et la lecture suit le contenu, pas le côté physique de la carte : si le paquet est inversé ou mélangé (bouton d'inversion, « mélanger les deux sens »), le texte qui était au recto continue de se lire dans sa langue d'origine même s'il s'affiche maintenant au verso. Dans le quiz, le micro dicte la réponse au lieu de la taper, dans la langue de la réponse attendue — qui suit la même logique si le quiz est inversé.
Vrai / faux. Le verso vaut vrai ou faux. Deux boutons remplacent le
balayage, la réponse est immédiate — pas de note à choisir, il n'y a pas de
nuance sur une question binaire.
QCM. Les trois mauvaises réponses sortent du paquet lui-même : ce sont des réponses plausibles, pas du remplissage. Les cartes vrai/faux en sont exclues.
Association. Six paires par lot, on relie de gauche à droite. Une paire trouvée du premier coup compte juste, sinon elle est comptée ratée.
Longues définitions. Le texte d'une carte rétrécit automatiquement selon sa longueur pour tenir dans le cadre ; au-delà d'une définition vraiment longue, il défile à l'intérieur de la carte plutôt que d'en déborder.
….