ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻訳待ち
Le concours national d'éloquence et de plaidoirie des lycéens et étudiants du Togo, organisé par l'AJ3C. Candidats, établissements, vote du public, palmarès, photos et vidéos.
翻訳待ち
教育TypeScript · CSSGitHub @vincentaholo-designオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Site du concours national d'éloquence et de plaidoirie organisé par l'AJ3C (Association des Jeunes Communicateurs pour le Changement de Comportement) : éditions, candidats, établissements, inscriptions, vote du public, palmarès, galerie, vidéothèque, actualités et administration.
Contenus réels : logos, photos de l'édition précédente (
public/photos, deux albums « 5e édition »), les 17 partenaires & sponsors du visuel officiel (public/partenaires), les coordonnées de l'AJ3C ([email protected], +228 97 07 57 07, @aj3c), la devise de la chaîne YouTube et une vidéo de la chaîne. Contenus de démonstration : l'édition en cours (« 6e édition »), ses candidats, établissements, dates, témoignages, articles et dossiers sont fictifs et portent un badge « Démo ». Le thème, les dates et le palmarès de la 5e édition sont laissés vides, à compléter dans l'administration.
Charte : dégradé bleu du logo (#035cfc → #10338b), orange du pupitre (#ff8d18 → #ff33aa) et blanc ; Montserrat (la police du logo) pour les titres, Plus Jakarta Sans pour le texte ; cartes blanches arrondies, grandes photos, boutons pilule.
Prérequis : Node.js 20.9 ou plus récent (22 recommandé).
npm install
npm run dev
Ouvrez http://localhost:3000.
Au premier lancement, une base PostgreSQL embarquée (PGlite, dossier .data/pglite) est créée, migrée puis remplie avec les données de démonstration.
[email protected] / Demo-Orathon-2026| Commande | Rôle |
|---|---|
npm run dev | serveur de développement |
npm run build puis npm start | build et serveur de production |
npm test | tests automatisés (vote, permissions, inscriptions) |
npm run typecheck | vérification TypeScript |
npm run check | typecheck + tests + build |
npm run db:migrate | applique les migrations (PostgreSQL ou base locale) |
npm run db:seed | charge les données de démonstration dans une base vide |
npm run db:reset | efface la base locale (recréée au prochain lancement) |
npm run admin:create -- email "Nom" super_admin | crée ou met à jour un compte d'administration |
Le projet se déploie sur Vercel sans saisir de clé à la main :
npm run vercel-build (scripts/vercel-setup.ts) :
applique les migrations, verrouille l'API publique de Supabase, crée les buckets de stockage
et charge les données de démonstration si la base est vide. Les variables de l'intégration
(POSTGRES_URL, NEXT_PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, SUPABASE_JWT_SECRET) sont reprises
automatiquement (src/lib/platform-env.ts) ; APP_SECRET en est dérivé s'il n'est pas défini.ADMIN_EMAIL et ADMIN_PASSWORD
(12 caractères minimum), puis redéployer.Tant qu'aucun fournisseur d'e-mail (RESEND_API_KEY) ni de SMS n'est configuré, le vote reste en mode démonstration :
le code de vérification s'affiche à l'écran. Pour la version officielle : configurer Resend, définir DEMO_MODE=false,
un APP_SECRET fixe, Turnstile, puis relier le nom de domaine (Settings → Domains).
Le plan gratuit Hobby de Vercel est réservé à un usage personnel : passer au plan Pro pour le site officiel.
.env.example en .env.local (ou dans les réglages de l'hébergeur) et renseignez au minimum :
DATABASE_URL : chaîne de connexion PostgreSQL (pooler en mode transaction, port 6543) ;APP_SECRET : 32 caractères aléatoires. Ne plus le changer une fois le vote ouvert ;SUPABASE_URL et SUPABASE_SERVICE_ROLE_KEY : stockage des photos et des pièces ;NEXT_PUBLIC_SITE_URL : l'adresse définitive du site ;DEMO_MODE=false.npm run db:migrate.supabase/securite-supabase.sql dans le SQL Editor. Ce script active la RLS sans aucune politique pour anon et authenticated, et crée les buckets public-media (public) et dossiers (privé).npm run admin:create -- [email protected] "Votre Nom" super_admin (mot de passe demandé, 12 caractères minimum).npm run db:seed. Aucun compte de démonstration n'est créé sur PostgreSQL.npm run build && npm start).| Service | Variable | Sans configuration |
|---|---|---|
| E-mail (codes de vote, confirmations) | RESEND_API_KEY, MAIL_FROM | en démo : code affiché à l'écran ; en production : vote par e-mail refusé |
| SMS | SMS_WEBHOOK_URL (+ SMS_WEBHOOK_TOKEN) | idem. Le webhook reçoit {"to","text"} : à brancher sur l'agrégateur SMS de votre choix |
| Anti-robot | NEXT_PUBLIC_TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY | vote « léger » refusé en production |
| Stockage | SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY | fichiers dans .data/uploads (local) |
This is the beginning of the README. Read the rest at the original. Read the full README ↗