ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Spanish practice for parents raising a bilingual baby. Built for someone with one hand on a pram: mobile-first, installable as a PWA, usable in five minutes or fifteen.
Deployed on Vercel at spanishroutine.com.
| Surface | What it does |
|---|---|
Phrases (/app/speak) | Ready-to-say phrases grouped by daily routine, with audio |
Practice (/app/practice, /app/chat) | Text conversation with an AI tutor that corrects as you go |
Charlar (/app/charla) | Hands-free spoken conversation, screen-off — transcribed, reviewed afterwards |
Palabras (/app/palabras) | Vocabulary: a tappable body diagram, sets for animals and food, your own words translated on the spot, and a spaced-repetition review that rests a word once you know it and brings it back weeks later |
Exercises (/app/exercises) | Grammar quizzes generated from teacher handouts |
Grow (/grow) | Bounded bilingual-parenting module: daily Rioplatense phrase packs, gap capture, sparring, journal, voice |
The loop that matters: speak → get your patterns back → practise the exact gap → speak again. A spoken session is analysed into tagged observations, a weekly report ("Tu semana") groups them into patterns, and each pattern links straight to the quiz for that rule.
npm install
npm run dev # localhost:3000
npm run build # production build
npm run lint # ESLint
npx tsc --noEmit # typecheck (the build ignores TS errors — see below)
There is no test framework. Verification is typecheck + build + manual testing on a phone.
npm run validate:content checks the Exercises content packs against their
schema.
Only OPENAI_API_KEY is required — every AI feature runs through it (chat,
packs, TTS, transcription, the Realtime voice engine, and the transcript
analysis). Everything else is optional; see CLAUDE.md for the full list.
Voice mode additionally needs Realtime API access on the OpenAI account, which is gated separately from the chat models.
getUserMedia requires a secure origin, so voice mode does not work over plain
http://<lan-ip>:3000. Either use an HTTPS tunnel to your dev server, or test
against the deployed site. Primary target is Chrome on Android installed as a
PWA, where a session survives the screen going off; iOS Safari suspends the
mic instead and gets an explicit paused state.
next.config.mjs sets ignoreBuildErrors: true for TypeScript and
ESLint, so the build passes with type errors. Run npx tsc --noEmit
yourself — expect two known pre-existing errors in app/manifest.ts (Next's
type is narrower than the web manifest spec allows for purpose).lib/criar/README.md before importing across
it.lib/vocab/), because a word
carries an article and a gender and a phrase doesn't. Read
lib/vocab/README.md before merging the two.lib/voice/), and
lib/voice/openai-realtime.ts is the only file that knows about WebRTC or
OpenAI event names — so the provider stays swappable.CLAUDE.md is the working reference for anyone (human or agent) picking this
up; PRODUCT.md and DESIGN.md carry the product and visual-design intent.