ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Zebla – Sprachdialoge erstellen und lernen
Translation pending
EducationTypeScript · CSSGitHub @zebojm-svgOnlineOwner 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.
Sprachlern-App zum Erstellen von Geschichten (Dialog, Storyboard, Film, Diashow) – mit KI. Cloud-Stack: Vercel (Hosting + API) · Firebase Auth · Firestore · Google GeminiRead the full README ↗
Sprachlern-App zum Erstellen von Geschichten (Dialog, Storyboard, Film, Diashow) – mit KI.
Film-Grobplan (lebend): docs/ZEBLA_PLAN.md — Stadtplan für Cursor und Jean-Marie. Nicht den Chat als Gedächtnis nutzen.
Cloud-Stack: Vercel (Hosting + API) · Firebase Auth · Firestore · Google Gemini
apiKey, authDomain, projectId, appId)Firestore-Regeln deployen (Firebase CLI):
npm install -g firebase-tools
firebase login
firebase init firestore # firestore.rules & firestore.indexes.json auswählen
firebase deploy --only firestore:rules,firestore:indexes
Schülercodes seeden:
cp .env.example .env
# Firebase Admin-Werte aus dem JSON eintragen
npm run seed
Demo-Codes: DEMO123, KLASSE7A, SCHUELER2024
fa-IR-Stimmenpaket)FIREBASE_CLIENT_EMAIL auf Vercel) die IAM-Rolle Vertex AI User geben – sonst schlägt Gemini-TTS mit fehlender Berechtigung aiplatform.endpoints.predict fehlZebla nutzt die vorhandenen FIREBASE_*-Zugangsdaten. In der Diashow: „☁️ Cloud-Sprachausgabe“ wenn alles funktioniert; bei Problemen erscheint eine rote Fehlermeldung mit Hinweis.
Kosten (grobe Orientierung): APIs aktivieren ist kostenlos. Pro Dialogzeile fällt einmalig Cloud-TTS an (typisch wenige Cent pro kompletten Dialog mit ~20 Zeilen). Beim Wiederabspielen wird das gespeicherte MP3 aus Firebase Storage geladen – keine erneute TTS-Abrechnung. Storage/Firestore sind vernachlässigbar klein.
Audio-Cache: Jede Zeile bekommt beim ersten Mal eine MP3 in Storage (audioUrl am Dialog). Diashow: „Audio vorbereiten“ erzeugt alle fehlenden Dateien auf einmal; MP3-ZIP / Gesamt-Audio (WAV) zum Download.
npm install
cp .env.example .env
# .env ausfüllen (Firebase + GEMINI_API_KEY)
npm run seed
npm run dev
npm run dev startet Vercel Dev – Frontend und API unter http://localhost:3000
Alternativ nur Frontend:
npm run dev:client
(API-Routen brauchen dann vercel dev oder Deployment)
| Variable | Wo |
|---|---|
GEMINI_API_KEY | Server (Google AI Studio, eigener Key „zebla“) |
FIREBASE_PROJECT_ID | Server |
FIREBASE_CLIENT_EMAIL | Server |
FIREBASE_PRIVATE_KEY | Server (kompletter Key mit \n) |
VITE_FIREBASE_API_KEY | Client |
VITE_FIREBASE_AUTH_DOMAIN | Client |
VITE_FIREBASE_PROJECT_ID | Client |
VITE_FIREBASE_APP_ID | Client |
In Firebase Console → Authentication → Autorisierte Domains hinzufügen:
dein-projekt.vercel.appzebla.zebotools.ch)Vercel-Git-Vorschauen (…-git-….vercel.app) sind nicht eingetragen. Google-Anmeldung dort geht nicht — auf der Live-Domain testen.
Zebla/
├── api/ # Vercel Serverless Functions
├── lib/ # Firebase Admin, Firestore, Gemini
├── shared/ # TypeScript-Typen
├── src/ # React Frontend
├── firestore.rules
└── vercel.json
| Befehl | Beschreibung |
|---|---|
npm run dev | Vercel Dev (Frontend + API) |
npm run build | Production-Build |
npm run seed | Demo-Schülercodes in Firestore |
npm run lint | ESLint |