ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Klassio — gestion scolaire multi-établissement pour la RDC. Flask + PostgreSQL, frontend sans framework.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Plateforme de gestion financière et administrative pour établissements scolaires. La clarté derrière chaque établissement. Démarrer — pour un développeur qui découvre Klassio Tout ce qui suit a été rejoué sur un clone vierge du dépôt GitHub, le 01/10/2026 (macOS, Python 3.9). Rien ne demande une clé, un compte ou un accès à la production : le dépôt n'en contient aucun, et l'environnement de développement n'en a pas besoin.README 전문 보기 ↗
Plateforme de gestion financière et administrative pour établissements scolaires. La clarté derrière chaque établissement.
Tout ce qui suit a été rejoué sur un clone vierge du dépôt GitHub, le 01/10/2026 (macOS, Python 3.9). Rien ne demande une clé, un compte ou un accès à la production : le dépôt n'en contient aucun, et l'environnement de développement n'en a pas besoin.
| En développement | En production | |
|---|---|---|
Un seul serveur — Flask, backend/app.py : il sert les pages et l'API | http://localhost:5001 | Render (render.yaml, Procfile) |
| Pages — HTML et JavaScript, sans étape de build | servies par ce même serveur | idem |
| Base | SQLite, un fichier local (backend/klassio_demo.db) | PostgreSQL |
| capturé, rien ne part | Brevo |
Il n'y a plus de second serveur de pages sur le port 4173 (retiré le 29/09) : ce montage faisait échouer les testeurs — appels perdus, « serveur injoignable », 504 derrière un proxy. Tout passe par
http://localhost:5001.
Le frontend est servi tel qu'il est dans le dépôt : ni bundle ni source map. Le
schéma vit dans backend/schema.sql (schema_postgres.sql en est généré) ;
les migrations sont additives (db._migrate()) et s'appliquent à chaque
démarrage.
git clone https://github.com/Yversplayer/klassio-saas.git
cd klassio-saas
./installer.sh # Python, dépendances, configuration, école fictive — ~2 min
./demarrer.sh --testeur # lance Klassio ; Ctrl-C pour l'arrêter
Ouvrez http://localhost:5001 (le site) ou http://localhost:5001/app/connexion.html.
./demarrer.sh --reseau --testeur : accessible aussi depuis un téléphone sur
le même Wi-Fi (l'adresse s'affiche au démarrage)../installer.sh --recreer : remet l'école fictive à zéro.git clone https://github.com/Yversplayer/klassio-saas.git
cd klassio-saas
python -m venv backend_venv
backend_venv\Scripts\activate
pip install -r requirements-dev.txt
copy backend\.env.example backend\.env
python backend\tools\demo.py
set KLASSIO_CONTOURNER_ABONNEMENT=1
python backend\app.py
Puis http://localhost:5001. (PowerShell : $env:KLASSIO_CONTOURNER_ABONNEMENT="1" au lieu de set.)
--testeurIl n'existe pas de mode gratuit : une école créée par « Créer mon espace »
dépose ses fichiers Excel, choisit son offre, et ne s'ouvre qu'une fois son
premier paiement déclaré (ouverture provisoire de 72 h) puis confirmé par la
plateforme. Le mode testeur (KLASSIO_CONTOURNER_ABONNEMENT=1) lève ces
blocages pour tester le reste du logiciel : l'étape « Votre offre » affiche
alors « Entrer sans payer (testeur) ». C'est un réglage du serveur, refusé
si la base visée n'est pas sur votre machine. Lancez sans --testeur pour
éprouver le vrai parcours payant (voir plus bas).
Au démarrage, le serveur écrit la base qu'il utilise. Vérifiez que c'est
backend/klassio_demo.db : c'est la preuve que vous êtes sur les données
fictives.
backend_venv/bin/python -m unittest discover -s backend/tests -t backend # ~3 min, SQLite
backend_venv/bin/python backend/tools/pg_tests.py # la même suite sur un vrai PostgreSQL 16
Le second démarre un PostgreSQL local et jetable, sans Docker, sans droits
administrateur et sans réseau, puis le détruit. Les deux doivent être verts.
(Windows : backend_venv\Scripts\python au lieu de backend_venv/bin/python.)
demo.py crée une école fictive : 300 élèves, leurs notes, leurs présences,
leurs incidents et leurs paiements. Son nom se termine par « DÉMONSTRATION »
et s'affiche en tête de chaque écran. Les données sont reproductibles (graine
fixe) : deux développeurs obtiennent exactement les mêmes élèves.
Mot de passe commun : ChargeKlassio2026!
| Rôle | Identifiant | Ce qu'il doit voir |
|---|---|---|
| Direction | [email protected] | tout l'établissement : 300 élèves, finances, rapports |
| Directeur des disciplines | [email protected] | la discipline du jour, les absences, les appels non faits |
| Professeur | [email protected] | ses classes seulement — 6 sur 42 |
| Parent | [email protected] | ses enfants seulement — 3 sur 300 |
Ces comptes n'existent que sur votre machine. Leurs adresses appartiennent au
domaine .test, réservé : aucune n'existe réellement. Le mot de passe est
publié ici précisément parce qu'aucune base réelle ne peut le recevoir :
les outils de démonstration refusent toute base PostgreSQL distante.
Le plus instructif est d'essayer ce qui doit être refusé : les rapports en tant que parent, le dossier d'un enfant qui n'est pas le sien, l'équipe en tant que professeur. Le refus vient du serveur, pas d'un bouton masqué — il tient même en appelant l'API à la main.
python backend/tools/demo.py --recreer reconstruit la base à l'identique. Il
refuse d'effacer un fichier qui contiendrait un seul compte hors du domaine
fictif.
Le compte Direction a aussi l'accès Plateforme (rubrique Plateforme de la barre latérale) : c'est lui qui confirme ou rejette les paiements déclarés.
Une heure suffit pour tout voir. Cochez au fur et à mesure ; ce qui doit être refusé compte autant que ce qui doit marcher.
1. Le site et la démo — http://localhost:5001
/demo.html) : l'appel, le portail, le dossier en coupe, le mur d'écrans, puis la visite interactive.2. Chaque rôle, avec les comptes ci-dessus
3. Une nouvelle école, en mode testeur (./demarrer.sh --testeur)
docs/exemples/Complexe_Scolaire_La_Reference_export.xlsx (2 371 élèves fictifs, générés par script) → « Votre offre » propose Complexe (l'effectif dépasse 1 000) → « Entrer sans payer (testeur) ».4. Le vrai parcours payant (./demarrer.sh, sans --testeur)
Repartir de zéro : ./installer.sh --recreer (l'école fictive), et supprimez
les écoles de test créées à la main en recréant la base de la même façon.
Un défaut ? Notez la page, le rôle, ce que vous attendiez, ce qui s'est passé,
et le contenu de /tmp/klassio.log (macOS/Linux) au même moment.
Elles sont toutes documentées dans backend/.env.example : rôle, valeur de
développement, et si elles sont requises en production ou secrètes. Klassio
n'en lit aucune autre. En développement, le modèle copié tel quel suffit ;
les valeurs secrètes (DATABASE_URL, EMAIL_API_KEY) restent vides.
| Service | Variable | Nature | Requis en local ? | Requis en production ? | En local, à la place |
|---|---|---|---|---|---|
| PostgreSQL (Render, Supabase…) | DATABASE_URL | secret | non | oui | SQLite ; PostgreSQL jetable pour les tests |
| E-mail (Brevo) | EMAIL_API_KEY | secret | non | oui, pour envoyer | EMAIL_MODE=capture : rien ne part |
| Supabase, API REST | SUPABASE_* | publiques et secrète | non | non | — Klassio ne s'en sert pas |
| Polices Google Fonts | — | public | chargées par le navigateur | — | sans réseau, polices du système |
Ne sont pas construits — et le dépôt ne simule rien : SMS, paiement et Mobile Money (« mobile money » est un mode de paiement déclaré à la main, avec sa référence), stockage dans le nuage, OAuth, modèle d'IA externe (l'assistant fonctionne par règles locales), supervision, statistiques de visite, webhooks entrants.
| Catégorie | Commande | Ce qu'il faut |
|---|---|---|
| Unitaires et intégration | python -m unittest discover -s backend/tests -t backend | rien — tout est local |
| La même suite sur PostgreSQL | python backend/tools/pg_tests.py | rien — PostgreSQL jetable embarqué |
| Charge et concurrence | voir tools/k6/README.md | k6 installé, base jetable |
| Contre une vraie base | pg_tests.py --supabase, tools/pg_check.py | la chaîne de connexion du propriétaire — jamais nécessaire pour développer |
Quatre fichiers de tests disent l'essentiel de ce que le projet protège :
| Fichier | Ce qu'il prouve |
|---|---|
backend/tests/test_release_gate.py | chaque route, appelée avec les identifiants d'une autre école, est refusée |
backend/tests/test_plans.py | aucune requête ne balaie une table qui grossit — le défaut qui aurait bloqué Klassio en janvier |
backend/tests/test_depot_public.py | ce dépôt ne contient aucun secret, aucune base, aucun jeton |
backend/tests/test_garde_fous_locaux.py | un poste de développement ne peut ni peupler ni effacer une vraie base |
runtime.txt).Pour aller plus loin : AGENTS.md (les règles du projet et pourquoi elles
existent), REPRISE.md (l'état et les défauts déjà corrigés),
RAPPORT_PERFORMANCE.md.
index.html, app/*.html Frontend (landing, inscription, dashboard, écrans de gestion)
assets/css/, assets/js/ Design system + logique frontend
backend/ API Flask réelle (auth, multi-tenant, RBAC, Financial Core, événements, notifications)
docs/ Documents de conception et rapports (voir ci-dessous)
Ce projet a délibérément été construit en documentant honnêtement ce qui est réel vs planifié à chaque étape. Ne pas supposer qu'une fonctionnalité existe parce qu'elle est décrite dans docs/ — chaque document précise son propre état.
Fonctionnel et testé : authentification, isolation multi-tenant, RBAC, Financial Core (obligations/paiements/soldes toujours dérivés), notifications groupées, audit log, recherche/filtre client sur la liste d'élèves.
Onboarding et rôles (refonte) : le directeur crée seul son espace (plus de sélecteur de rôle libre à l'inscription — professeur/parent/élève ont été retirés du flux public). Il peut ensuite :
backend/ingestion.py + POST /api/onboarding/analyze-import puis /confirm-import) : détection de colonnes par motifs, détection de doublons et d'anomalies financières, aperçu complet, rien n'est écrit avant confirmation explicite ;app/invitations.html, table invitations) : lien à usage unique, expirant sous 7 jours, révocable, le rôle est toujours déterminé par l'invitation et jamais par un choix du client. Le parent accepte via app/invitation.html, qui affiche uniquement l'établissement et le(s) enfant(s) associés à cette invitation précise — jamais une recherche libre. Partage du lien par copie ou WhatsApp (lien wa.me prérempli — pas d'envoi automatique, aucun fournisseur SMS/WhatsApp n'est connecté).Non implémenté (documenté comme tel, jamais simulé — la liste qui fait foi est AGENTS.md §9) : envoi automatique d'OTP par SMS/WhatsApp (nécessite un fournisseur externe non connecté — la sécurité de l'invitation repose sur le token à usage unique), Command Bar/IA réelle, rôles Caissier/Responsable financier, compte Élève (retiré intentionnellement — voir point 2 de la refonte), états de paiement avancés (remboursements, échecs).
docs/)| Document | Contenu |
|---|---|
OBJECTIFS_ET_FONCTIONNALITES.md | Vision produit d'origine |
SYSTEME_IA.md | Conception de la couche IA (ambiante, jamais un chatbot) |
SECURITE.md | Architecture de sécurité complète |
FINANCE.md | Conception du Financial Core |
IMPORT.md | Conception du moteur d'import |
EVENEMENTS.md | Event Engine / Rule Engine / Notification Engine |
MULTI_TENANT.md | Architecture d'isolation entre établissements |
DASHBOARDS_RECHERCHE.md | Dashboards et Command Bar |
AUDIT_STRATEGIQUE.md | Recadrage stratégique après la phase de conception |
RAPPORT_SIMULATION.md | Rapport de test grandeur nature réel (2 844 élèves, 2 écoles) — mesures de performance, résultat de l'isolation multi-tenant, problèmes trouvés et corrigés |
Nom : Klassio · Palette : crème chaude, vert forêt, lime, or doux · Typographie : Plus Jakarta Sans + Fraunces.