ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
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.
Translation pending
EducationTypeScript · JavaScriptGitHub @IngoupayoumahOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Nansah est une plateforme pousser par IA qui vous aide a mieux preparer votre examen TCF
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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-c18245451dfaRead the full 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-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).