ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Votre plateforme complète pour l'apprentissage du secourisme. Quiz interactifs et scénarios SNV pour maîtriser les gestes qui sauvent.
Translation pending
EducationTypeScript · PLpgSQLGitHub @AlexVWebOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
RescueLearn est une plateforme complète de formation et d'apprentissage du secourisme moderne. Conçue pour aider les apprenants à maîtriser les gestes d'urgence, elle permet également aux organismes de formation de gérer leurs sessions, formateurs, stagiaires, attestations et émargements de manière sécurisée et dématérialisée. L'ensemble des contenus pédagogiques (quiz, scénarios SNV et cartes d'apprentissage) sont inspirés des référentiels officiels de recommandations de la DGSCGC (Direction Générale de la Sécurité Civile et de la Gestion des Crises).Read the full README ↗
RescueLearn est une plateforme complète de formation et d'apprentissage du secourisme moderne. Conçue pour aider les apprenants à maîtriser les gestes d'urgence, elle permet également aux organismes de formation de gérer leurs sessions, formateurs, stagiaires, attestations et émargements de manière sécurisée et dématérialisée.
L'ensemble des contenus pédagogiques (quiz, scénarios SNV et cartes d'apprentissage) sont inspirés des référentiels officiels de recommandations de la DGSCGC (Direction Générale de la Sécurité Civile et de la Gestion des Crises).
/formations) et journal des nouveautés (/changelog).@react-pdf/renderer.@react-pdf/renderer (génération), pdf-lib (fusion), signature_pad (tracé de signature)xlsx (import CSV / Excel des stagiaires), qrcode.react (émargement)@google/genai) pour l'analyse des référentiels et la génération de contenusprismaSchemaFolder)src/lib/logger.ts) empêchant la fuite de données personnelles (PII).Avant de commencer, assurez-vous d'avoir installé :
git clone <url-du-depot>
cd rescuelearn
bun install
Copiez le fichier d'exemple et remplissez les valeurs appropriées :
cp .env.example .env.local
(Voir la section Configuration pour plus de détails sur les variables).
Générez le client Prisma, appliquez les migrations et insérez les données initiales (seeds) :
# Générer le client Prisma
bun run db:generate
# Lancer la base de données (si locale) et exécuter les migrations
bun run db:push # ou bun run db:migrate pour créer une migration nommée
# Insérer les données de démo (quiz, cartes, etc.)
bun run db:seed
bun run dev
L'application est maintenant accessible sur http://localhost:3000.
Le projet utilise les variables d'environnement suivantes dans .env.local :
| Variable | Description |
|---|---|
DATABASE_URL | URL de connexion à la base de données PostgreSQL |
DIRECT_URL | URL directe (sans pooler) utilisée pour les migrations |
NEXT_PUBLIC_APP_URL | URL racine de l'application, utilisée aussi comme baseURL de Better Auth (ex: http://localhost:3000) |
BETTER_AUTH_SECRET | Clé secrète de sécurité pour Better Auth |
MAINTENANCE_MODE | Active le mode maintenance globale (true/false) |
MAINTENANCE_BYPASS_TOKEN | Token secret pour contourner la maintenance (backdoor cookie) |
R2_ENDPOINT | Endpoint de Cloudflare R2 ou AWS S3 |
R2_ACCESS_KEY_ID | Identifiant d'accès au bucket R2 |
R2_SECRET_ACCESS_KEY | Clé secrète d'accès au bucket R2 |
R2_BUCKET_NAME | Nom du bucket de stockage |
R2_PUBLIC_URL | URL publique du bucket (fichiers non chiffrés : logos, PDF des référentiels) |
ENCRYPTION_KEY | Clé symétrique utilisée pour chiffrer les fichiers sensibles sur R2 |
APP_MODE | Préfixe des clés R2 (dev / prod) |
CRON_SECRET | Secret attendu par les routes /api/cron/* |
NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY | Projet Supabase pour le temps réel |
SUPABASE_JWT_SECRET |
Le projet s'appuie sur le découpage des schémas de Prisma (prisma/schema/*.prisma). Les commandes de gestion de la base de données sont disponibles via des scripts Bun :
bun run db:generate : Regénère les types Prisma Client à partir de l'ensemble des schémas.bun run db:migrate : Crée et applique une nouvelle migration de base de données en demandant un nom.bun run db:push : Synchronise directement le schéma local avec la base de données sans passer par des migrations (idéal en développement rapide).bun run db:seed : Exécute le script de peuplement initial (prisma/seed.ts).bun run db:studio : Ouvre l'interface visuelle Prisma Studio sur http://localhost:5555.bun run validate : Valide la syntaxe et les relations des schémas Prisma.La qualité du code de RescueLearn est garantie par une série de vérifications locales automatisées et de tests unitaires/intégration.
# Lancer les tests en mode exécution unique
bun run test
# Lancer le rapport de couverture de code (Coverage)
bun run test:coverage
# Lancer les tests en mode interactif (watch)
bun run test:watch
Avant chaque commit ou déploiement, vous devez vous assurer que le code passe la suite de commandes de validation suivante :
bun run type-check && bun run validate && bun run test && bun run build && bun x lint-staged
Cette suite est exécutée automatiquement par le hook Husky pre-commit.
type-check : Vérification stricte des types TypeScript (tsc --noEmit).validate : Validation des fichiers de schémas Prisma.test : Passage des 980+ tests unitaires et d'intégration via Vitest.build : Build de production Next.js.lint-staged : Analyse Oxlint & formatage Prettier sur les fichiers modifiés.rescuelearn/
├── prisma/
│ ├── schema/ # Schémas Prisma découpés (preview feature)
│ │ ├── auth.prisma # Authentification et Organisations
│ │ ├── config.prisma # Configuration client & database
│ │ ├── learning.prisma # Cartes d'apprentissage et Référentiels
│ │ ├── quiz.prisma # Quiz, Questions, Catégories
│ │ ├── snv.prisma # Scénarios et victimes SNV
│ │ └── training.prisma # Formations, émargements, stagiaires, signatures
│ └── seed.ts # Script de peuplement
├── scripts/ # Scripts utilitaires et de migration
├── src/
│ ├── __tests__/ # Tests globaux (ex: middleware, logo action)
│ ├── app/ # Next.js App Router
│ │ ├── (public)/ # Vues publiques (quiz, snv, glasgow, learning)
│ │ ├── actions/ # Server Actions globaux (organisation, switch, logo)
│ │ ├── admin/ # Dashboard et gestion des organismes (training, etc.)
│ │ ├── espace/ # Espace stagiaire (accès par lien, émargement, supports, attestation)
│ │ ├── api/ # API REST, Better-Auth, crons, téléchargements admin (documents, attestations signées)
│ │ └── validation/ # Schémas de validation
│ ├── components/ # Composants UI (Radix, shadcn/ui)
│ ├── hooks/ # Custom hooks React
│ ├── lib/ # Services et bibliothèques partagées
│ │ ├── auth.ts # Configuration de Better Auth (back)
│ │ ├── auth-client.ts # Configuration du client Better Auth (front)
│ │ ├── logger.ts # Logger sécurisé (sanitise les logs)
│ │ ├── r2.ts # Client R2 / S3 de stockage
│ │ ├── encryption.ts # Utilitaires de chiffrement des fichiers
│ │ ├── retention-service.ts # Service d'anonymisation des données
│ │ ├── trainee-access.ts # Jetons d'accès à l'espace stagiaire
│ │ ├── attestation-signature.ts # Signature active et verrou des attestations
│ │ └── prisma.ts # Client Prisma étendu
│ ├── services/ # Services business (ex: SiretService)
│ └── types/ # Typages globaux du projet
├── .oxlintrc.json # Configuration de linting Oxlint
├── prettierrc.json # Configuration de formatage Prettier
├── package.json # Dépendances et scripts de build
└── vitest.config.ts # Configuration des tests
Le projet intègre un script automatisé pour le déploiement sur Vercel. Il valide d'abord la conformité technique locale avant de pousser en production.
bun run deploy
Ce script effectue les actions suivantes :
main (vercel --prod).vercel).vercel-build est appelée, générant le client Prisma et exécutant les migrations distantes (bun run db:generate && bunx prisma migrate deploy && next build).vercel.json)| Route | Fréquence | Rôle |
|---|---|---|
/api/cron/keep-alive | Tous les jours, 5 h UTC | Maintient la base de données active |
/api/cron/cleanup-sessions | Toutes les heures | Nettoie les sessions de quiz abandonnées |
/api/cron/daily-quiz | Tous les jours, 7 h UTC | Envoie par email les questions aux joueurs abonnés |
Les routes de cron exigent le CRON_SECRET.
Signature des jetons Realtime de l'émargement (/api/realtime/token) |
GEMINI_API_KEY | Clé de l'API Google Gemini (génération de contenus) |
GEMINI_MODEL | Modèle Gemini utilisé (défaut : gemini-2.5-pro) |
SMTP_* | Configuration SMTP par défaut (liens d'accès stagiaires, etc.) |