ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
Nansah – AI 기반 플랫폼으로 TCF 시험 준비를 돕고 실제 상황 시뮬레이터와 보조 교정, 매월 새로운 문제 제공
Nansah — la plateforme poussée par IA qui vous aide à mieux préparer votre examen TCF. Simulateurs en conditions réelles, correction assistée et sujets renouvelés chaque mois.
교육TypeScript · JavaScriptGitHub @Ingoupayoumah온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Nansah est une plateforme pousser par IA qui vous aide a mieux preparer votre examen TCF
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Dossier de cadrage produit, rédigé avant le premier commit. Basé sur l'analyse du modèle de référence (formation-tcfcanada.com) et sur la compréhension du marché (immigration francophone vers le Canada via le TCF). Version détaillée et interactive (cases à cocher, filtres par priorité) : https://claude.ai/code/artifact/d4c426ca-06ad-4883-a129-c18245451dfaREADME 전문 보기 ↗
Dossier de cadrage produit, rédigé avant le premier commit. Basé sur l'analyse du modèle de référence (formation-tcfcanada.com) et sur la compréhension du marché (immigration francophone vers le Canada via le TCF).
Version détaillée et interactive (cases à cocher, filtres par priorité) : https://claude.ai/code/artifact/d4c426ca-06ad-4883-a129-c18245451dfa
Le problème réel. Le TCF Canada (Test de Connaissance du Français) est une épreuve à quatre compétences (CO, CE, EO, EE) obligatoire pour l'immigration économique (Entrée express, PEQ, etc.). Le score se convertit en niveau NCLC, qui conditionne l'éligibilité. Les candidats ont besoin d'un entraînement en conditions identiques à l'examen officiel — pas de cours de français généraux — et de savoir précisément où ils se situent en NCLC avant de payer les frais d'examen réel.
La proposition de valeur.
Comment l'argent rentre.
Ce qui différencie vraiment.
Fatima — 29 ans, Alger. Vise l'Entrée express, budget serré, pas de carte bancaire internationale. Paie en Baridi Mob/CCP, découvre l'offre via TikTok/Instagram, échange sur WhatsApp avant d'acheter. Achète le pack le moins cher d'abord, upgrade si le score progresse.
Junior — 34 ans, déjà au Canada. Sur permis temporaire, besoin d'une attestation NCLC rapide pour la résidence permanente. Paie par carte, moins sensible au prix. Va droit à l'examen blanc et au calculateur NCLC. Date d'examen officiel proche → forte pression temporelle.
Aïcha — 24 ans, Douala. Étudiante, vise le pack complet avec coaching live pour l'oral, sa faiblesse principale. Consomme du contenu gratuit (YouTube, blog) avant de payer. Sensible à la preuve sociale (taux de réussite, avis). Le prix des packs coaching (150–250 $) est un frein réel.
Légende : 🟢 MVP · 🟡 V2 · 🟣 V3
Identité & abonnement
User — id, email, phone, country, locale, auth_provider_id, created_atSubscription — id, user_id, plan[bronze..platinium], starts_at, ends_at, statusPayment — id, user_id, amount, currency, method[card/paypal/momo], provider_ref, statusContenu pédagogique
Serie — id, epreuve[CE/CO], number, question_count, access_level[free/premium]Question — id, serie_id, type, content, audio_url, choices[], correct, pointsSujet — id, epreuve[EE/EO], tache_number, content, month, year, published_atPratique & IA
Attempt — id, user_id, serie_id, started_at, finished_at, answers[], score, modeWrittenSubmission — id, user_id, sujet_id, text, submitted_at, ai_score, ai_feedback_jsonOralSubmission — id, user_id, sujet_id, media_url, submitted_at, score, feedbackExamen blanc
ExamAttempt — id, user_id, co_score, ce_score, ee_score, nclc_levels_jsonAttestation — id, exam_attempt_id, pdf_url, issued_atExaminateur
Examiner — id, name, bio, photo_url, habilitationBooking — id, user_id, examiner_id, slot_at, status, zoom_link, payment_idMarketing
BlogPost — id, title, slug, content_mdx, cover_url, published_at, seo_jsonCoupon — id, code, discount_pct, valid_from, valid_to, max_uses, uses| Couche | Choix | Pourquoi |
|---|---|---|
| Présentation | Next.js (App Router) + TypeScript + Tailwind + shadcn/ui | RSC pour le contenu statique, client components pour les simulateurs interactifs |
| Application | Route Handlers / Server Actions Next.js | Suffisant en monolithe ; isoler la logique IA pour pouvoir l'extraire plus tard |
| Authentification | Clerk | MFA, sessions, webhooks d'abonnement sans réinventer la sécurité |
| Données | PostgreSQL (Neon, serverless) + Prisma | Branching de base utile pour tester des migrations de contenu sans risquer la prod |
| Média | Vercel Blob ou S3-compatible | Stockage des audios CO et enregistrements EO des candidats |
| Correction IA | API Claude, prompt structuré → sortie JSON | Grille TCF encodée dans le prompt, score + feedback typés |
| Paiement | Stripe (carte) + agrégateur mobile money (CinetPay / PawaPay) | Deux intégrations distinctes dès le départ — complexité centrale du produit |
| Visio & booking | Zoom API + Cal.com (ou custom léger) | Uniquement pour le module examinateur humain (V3) |
| Emailing | Resend ou Postmark | Deliverability transactionnelle fiable |
| Infra & observabilité | Vercel + PostHog + Sentry | Cohérent avec le stack observé, coût prévisible au démarrage |
Performance — mobile-first, lazy-load des audios, budget de poids de page strict (audience sur connexions parfois lentes).
Sécurité & anti-fraude — protection du contenu premium contre le scraping/partage de compte, rate limiting sur les soumissions, aucune donnée de carte stockée (délégué à Stripe).
Conformité légale — Loi 25 (Québec) + RGPD si audience européenne, consentement explicite pour la conservation des enregistrements audio/vidéo, politique de remboursement appliquée par le back-office.
Accessibilité — sémantique HTML correcte, pas de texte tronqué sans alternative, contraste AA sur les deux thèmes.
MVP (≈ 6–8 semaines) — Valider que des candidats payent pour s'entraîner en conditions réelles.
V2 (≈ 2–3 mois après le MVP) — Automatiser la correction et couvrir le marché africain.
V3 (selon traction) — Monétiser le service premium à forte marge et scaler l'éditorial.
Dans l'ordre :
Ingoupayoumah/Nansah_Simulateur_TCF), garde-fous de sécurité en place.User, Subscription, Serie, Question, Attempt (section 3) — déjà dans prisma/schema.prisma, reste à connecter à une vraie base Neon.Concrètement : la prochaine chose à construire est la page d'accueil (étape 4) — mais seulement sur confirmation explicite, pas automatiquement dès qu'elle est mentionnée dans le plan.
Version visuelle à jour (palette définitive, composants) : https://claude.ai/code/artifact/c5b67f08-eb86-430f-88cc-1ea5aa8090f5
Statut : couleurs et police de base validées par l'équipe. Une maquette complète suivra plus tard pour la charte visuelle définitive (mise en page, illustration) — mais ces 4 couleurs et cette typographie sont figées dès maintenant et ne doivent pas être rouvertes sans demande explicite.
Couleurs — 4 couleurs, chacune avec un rôle fixe, jamais décoratif :
| Couleur | Hex | Source | Rôle |
|---|---|---|---|
| Noir | #121117 | preply.com (encre) | Texte d'interface, boutons primaires |
| Bleu | #3346E0 | Choix propre (carte fondateur/examinateur) | Action, info, liens |
| Fuchsia | #FF7AAC | preply.com (marque) | Mise en avant, premium |
| Vert | #3DDABE | preply.com (section contenu) | Validation, gratuit, succès |
Typographie — Plus Jakarta Sans partout, y compris les grands nombres (minuteur, scores) ; IBM Plex Mono conservé uniquement pour le repère de temps du lecteur audio.
Fond & élévation — dégradé mesh doux (les 3 couleurs fondues en flous discrets) derrière le bloc héros plutôt qu'un aplat, grain subtil superposé sur toute la page, cartes en surfaces blanches élevées avec ombre à deux couches plutôt que des blocs de couleur plate.
Composants fondations — boutons (primaire noir plein/secondaire/ghost/destructeur fuchsia), champs de formulaire avec compteur de mots, badges à deux familles (accès candidat : Gratuit/Premium/Nouveau — statut éditorial admin : Brouillon/Programmé/Publié), liste à chevrons pour les 4 épreuves (icône colorée + libellé + repère chiffré + ›), cartes profil à effet photo empilée.
Patterns spécifiques au produit :
Historique des itérations (pour mémoire, non retenues) : v1 fondations sobres bleu marine — jugée "trop IA" ; v2 direction passeport/billet d'embarquement — abandonnée au profit d'une référence concrète (preply.com).
Site public
/ accueil
/epreuve/[slug] slug: comprehension-ecrite | comprehension-orale
expression-ecrite | expression-orale
/epreuve/[slug]/sujets-actualites/[mois-annee] banque de sujets filtrée par mois
/tarification packs + add-ons
/examen-blanc parcours combiné
/examen-oral réservation examinateur (V3)
/blog
/blog/[slug]
/a-propos
/foire-aux-questions
/contact
/mentions-legales · /politique-de-confidentialite · /cookies · /politique-remboursement
/connexion · /inscription · /mot-de-passe-oublie
/mon-compte
Admin (protégé, rôle admin uniquement)
/admin tableau de bord + calendrier éditorial
/admin/sujets liste — filtres épreuve / mois / statut
/admin/sujets/nouveau
/admin/sujets/[id]/edition
/admin/articles liste blog
/admin/articles/nouveau
/admin/articles/[id]/edition
/admin/series gestion séries QCM CE/CO + banque de questions
/admin/utilisateurs
/admin/abonnements
/admin/paiements
/admin/examinateur créneaux (V3 uniquement)
Champs complets nécessaires pour les formulaires admin de création/édition (section 12).
| Champ | Type | Notes |
|---|---|---|
| Épreuve* | select | Expression Écrite / Expression Orale |
| Tâche* | select | 1 / 2 / 3 — avec description du type de tâche affichée en aide |
| Titre interne* | texte | Usage admin uniquement, jamais affiché au candidat |
| Consigne / énoncé* | texte riche | Ce que voit le candidat |
| Niveau CECRL | select | A2 → C2, informatif |
| Documents annexes | texte riche × 2 | EE tâche 3 uniquement — Document 1 (favorable) / Document 2 (défavorable) |
| Durée suggérée | nombre (min) | |
| Longueur attendue | plage (mots) | Pour l'expression écrite |
| Fichier audio | upload | Si mise en situation avec support audio |
| Réponse modèle / corrigé type | texte riche, optionnel | Visible en admin, ou débloqué après tentative |
| Mois de publication* | select mois/année | |
| Statut* | select | Brouillon / Programmé / Publié / Archivé |
| Date de publication programmée | date | Si statut = Programmé |
| Tags/thèmes | multi-select libre | immigration, société, technologie, famille, travail… |
| Ordre d'affichage | nombre | Tri dans la liste du mois |
| Accès | toggle | Gratuit / Premium |
| Champ | Type | Notes |
|---|---|---|
| Titre* | texte | |
| Slug* | texte | Généré automatiquement, éditable |
| Extrait / chapo | texte | Résumé court — cartes + SEO |
| Contenu* | éditeur riche / MDX | Blocs image supportés |
| Image de couverture* | upload | Ratio recommandé affiché à l'upload |
| Auteur | select | Parmi les profils admin |
| Catégorie | select | Méthodologie / Immigration / Actualités TCF / Témoignages |
| Tags | multi-select libre | |
| Temps de lecture | calculé | Automatique à partir du contenu |
| Statut* | select | Brouillon / Programmé / Publié |
| Date de publication programmée | date | |
| SEO — titre meta | texte | Préempli depuis le titre, éditable |
| SEO — description meta | texte | Préempli depuis l'extrait, éditable |
| SEO — image Open Graph | upload | Préempli depuis la couverture |
| Article épinglé | booléen | Mise en avant sur la home ou le blog |
Ce que le dashboard doit permettre, dans l'ordre de valeur :
Point soulevé explicitement pendant le cadrage : formation-tcfcanada.com est un produit commercial concurrent, et ses « sujets d'actualité » / séries verrouillées sont son contenu payant propriétaire. Les scraper pour les réutiliser tel quel poserait un problème de copyright et de concurrence déloyale (certaines séries sont en plus derrière un paywall).
Décision actuelle : reportée — à trancher avant la phase de production éditoriale (pas avant le développement technique). Options envisagées :
Cette décision n'affecte pas l'architecture ni le design system définis ci-dessus — elle conditionne uniquement le contenu réel du mois 1 (voir section 8, étape 6).