ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
SaaS multi-établissements de gestion scolaire pour les écoles privées d'Afrique de l'Ouest, à commencer par le Togo. En production sur scolargest.com. Le répertoire de travail et quelques documents anciens disent encore « ScoolAdmin » : c'est le même projet, ScolarGest est le nom du produit. Périmètre : collège et lycée uniquement. La maternelle et le primaire ont été retirés du catalogue le 2026-08-31 (migration 0014) — retirés, pas supprimés : un établissement déjà en primaire garde ses classes, ses notes et ses bulletins.查看完整 README ↗
SaaS multi-établissements de gestion scolaire pour les écoles privées d'Afrique de l'Ouest, à commencer par le Togo. En production sur scolargest.com.
Le répertoire de travail et quelques documents anciens disent encore
« ScoolAdmin » : c'est le même projet, ScolarGest est le nom du produit.
Périmètre : collège et lycée uniquement. La maternelle et le primaire ont
été retirés du catalogue le 2026-08-31 (migration 0014) — retirés, pas
supprimés : un établissement déjà en primaire garde ses classes, ses notes et
ses bulletins.
| Couche | Technologie |
|---|---|
| Application | Next.js 14 (App Router) + TypeScript strict |
| Style | Tailwind + primitives maison inspirées de shadcn (Radix) |
| Formulaires | react-hook-form + Zod |
| État serveur | TanStack Query |
| Auth | Supabase Auth (@supabase/ssr, claims role + etablissement_id) |
| Base | PostgreSQL via Supabase, accédée par @supabase/supabase-js — aucun ORM |
| Stockage | Supabase Storage |
HTML → PDF par Playwright / @sparticuz/chromium | |
| Paiement | FedaPay (Mobile Money) |
| Emails | Resend |
| Supervision | Sentry |
| Tests | Vitest (unitaires) + Playwright (E2E) |
| Hébergement | Vercel + Supabase |
Pas de Prisma : les migrations sont des fichiers SQL versionnés sous
supabase/migrations/.
.env rempli à partir de .env.examplenpm install
npx supabase db push # applique supabase/migrations/*.sql
npm run dev
| Commande | Description |
|---|---|
npm run dev | Serveur de développement |
npm run build | Build de production |
npm run lint | ESLint |
npm run typecheck | Vérification des types |
npm run test | Tests unitaires (Vitest) |
npm run test:e2e | Tests de bout en bout (Playwright) |
npx supabase db push | Applique les migrations |
npx supabase db reset | Réinitialise la base locale et rejoue migrations + seed.sql |
.github/workflows/ci.yml enchaîne npm ci, lint, typecheck puis
test. Lancer seulement lint et les tests laisse passer les erreurs de typage.
npm run seed:demo -- --list # liste les établissements
npm run seed:demo -- --etablissement <uuid> # remplit une école de démonstration
npm run seed:demo -- --purge --seed --etablissement <uuid> # purge puis re-remplit
npx tsx scripts/seed-onboarding-test.ts # établissement VIDE + Directeur, pour /demarrage
npx tsx scripts/seed-onboarding-test.ts --reset # purge puis recrée
npx tsx scripts/seed-onboarding-test.ts --purge # supprime tout
seed-demo remplit une école entière — classes, élèves, notes, factures — et
crée des comptes de test. seed-onboarding-test en est le pendant vide :
remplir l'établissement le ferait passer pour déjà configuré et sauterait tout
l'onboarding.
supabase/seed.sql ne s'exécute qu'avec db reset. Toute donnée de
catalogue système (cycles, niveaux, séries, plans) doit donc aussi vivre dans
une migration numérotée, sinon un environnement provisionné par db push seul
sera incomplet — voir 0003_seed_catalogues.sql.
npx tsx scripts/matrice-permissions.ts # régénère Docs/11-Matrice-permissions.md
npx tsx scripts/matrice-permissions.ts --instantane # régénère l'instantané testé
npx tsx scripts/verifier-isolation.ts # tente des accès croisés entre deux écoles
npx tsx scripts/verifier-isolation.ts --purge # nettoie les écoles jetables
verifier-isolation passe par le chemin réel de l'application — client anon
plus session, jamais la clé service-role, qui contournerait précisément ce
qu'on teste.
src/
app/ Routes App Router, avec leurs Server Actions (actions.ts)
et les composants clients propres à chaque écran
(auth)/ Connexion, mot de passe oublié, mise à jour du mot de passe
services/ Un fichier par domaine — règles métier, garde de rôle
(requireRole) et journalisation d'audit
modules/
academics/ Moteur de calcul des moyennes (fonctions pures, testées)
components/
ui/ Primitives (Button, Input, Select, Table, Dialog, graphes…)
layout/ AppLayout, Sidebar, Header, PageHeader
lib/
supabase/ client.ts (navigateur), server.ts (SSR, RLS), admin.ts
(service-role — provisionnement d'utilisateurs uniquement)
pdf/ Gabarits de bulletins, reçus, emplois du temps
offline/ Brouillons de saisie de notes (IndexedDB)
supabase/
migrations/ Migrations SQL numérotées, source de vérité du schéma
seed.sql Catalogues système (local uniquement)
scripts/ Semis, vérifications, captures
Chaque table porte etablissement_id. L'isolation est appliquée au niveau de
la base par les politiques Row Level Security (voir
supabase/migrations/0001_init.sql) : chaque table comparée au claim JWT
auth_etablissement_id(), avec dérogation SUPER_ADMIN.
Le code applicatif passe malgré tout etablissement_id explicitement dans
chaque requête — défense en profondeur, et requêtes plus claires. Ne jamais
compter sur la seule RLS pour l'omettre.
Cinq rôles fixes : SUPER_ADMIN, DIRECTEUR, SECRETAIRE, COMPTABLE,
ENSEIGNANT. Pas de rôles dynamiques en v1.
ANNULE / ARCHIVE.Docs/11-Matrice-permissions.md est généré depuis les requireRole(...)
des services. Un instantané versionné
(src/lib/permissions/__tests__/matrice.instantane.txt) est comparé par les
tests : toute modification d'une garde de rôle fait échouer la suite. C'est
voulu — après un changement délibéré, régénérer et relire le diff.
Attention : requireRole() sans argument signifie SUPER_ADMIN seul, pas
« tout utilisateur authentifié ».
| Fichier | Contenu |
|---|---|
CLAUDE.md | Conventions, pièges connus, méthode de travail |
PLAN.md | Feuille de route et journal des fonctionnalités livrées |
analysis.md | Décisions de conception (Q0–Q17) |
Docs/ | Règles métier par domaine, ERD, matrice de permissions — hors dépôt (.gitignore), à récupérer auprès de l'équipe |
Le système de design s'appelle « Luminous Institutional ». Ses jetons — couleurs,
échelle typographique, espacements, ombres — vivent dans tailwind.config.ts,
qui en est la source de vérité ; CLAUDE.md documente les règles d'usage
(motif de liste, champs de formulaire, tableaux, avertissement).
Les neuf phases initiales sont terminées ; le travail suivant est suivi par
fonctionnalité dans PLAN.md § 8. Y figurer n'est pas une autorisation de
mise en œuvre : une fonctionnalité ne démarre que sur demande explicite.