ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Put a name to a portrait, a number to a name, years to a reign, or any other pairing. 47 US presidential terms in English and 31 Russian rulers in Russian, on one quiz engine.
https://github.com/user-attachments/assets/4868459c-415d-4b8a-a999-10c31e7e71a9
Both domains share every screen, component and grading rule. Each one is a registry of fields, modes, strings and an accent colour, and nothing in the UI names a language or a mode.
Android comes first; the web build works just as well in a mobile browser.
/ru has no numbers, so it offers four modes.?range=1-19,28-31.present / «н. в.», the bare start year, or the scheduled end.Barack Hussein Obama isn't #44, and Николай I
isn't Николай II.ё → е.1762-1796 can actually be typed.flowchart LR
D["DomainCore<br/><sub>src/domains/{us,ru}-core.ts</sub>"] --> P["pickGiven + answerFields<br/><sub>src/lib/quiz.ts</sub>"]
P --> Q["Question<br/><sub>{ rec, given, answers }</sub>"]
Q --> S["QuizScreen<br/><sub>prompt + AnswerField × n</sub>"]
S -- inputs --> G["grade()"]
G --> R["RevealPanel<br/><sub>one row per term</sub>"]
A mode names the prompt. pickGiven resolves it (mixed picks a different given piece
each time), and answerFields asks for every other field in the domain's order. Each field's
FieldSpec carries its label, placeholder, keyboard, how to show it and how to check it, so
QuizScreen just renders q.answers.map(...). grade scores each candidate term as a whole
and keeps the best one, which is how the two-row Cleveland reveal happens without any special
case.
The grading logic in src/lib/ and src/domains/*-core.ts imports no React Native values,
so the whole suite runs on bare Node with no test framework.
git clone https://github.com/l4nzel0d/US-Presidents-Quiz-App.git
cd US-Presidents-Quiz-App
npm install
npm run web # run in the browser
npm start # dev server for Android (needs a dev client, see below)
npm test # 127 grading assertions over both domains
npx tsc --noEmit # typecheck
[!NOTE] Expo Go won't work. The app links
react-native-keyboard-controller, a native module, so on a device you need a development build (expo-dev-clientis already a dependency):eas build --profile development, install it, thennpm start.
src/
├── app/ Expo Router routes: thin wrappers only
│ ├── index the chooser
│ ├── us/ _layout · index (menu) · list · quiz/[mode]
│ └── ru/ same shape
├── screens/ MenuScreen · ListScreen · QuizScreen, shared by both domains
├── lib/ pure logic: domain vocabulary, quiz, grading, ranges, storage
├── domains/ us-core / ru-core (pure, tested) + us / ru (adds images)
├── data/ us-presidents.ts (47) · ru-rulers.ts (31)
├── components/ UI pieces + portrait maps
├── state/ DomainContext · RangeContext
└── theme/ a translation of .legacy/styles.css
tests/ grading.test.ts + a tiny Node resolver hook
.legacy/ the original vanilla-JS web app this was ported from
Android APK (arm64-v8a) via EAS:
eas build --profile preview
Web: a static export, hosted on Vercel:
npx expo export --platform web # writes dist/
Static rendering emits the dynamic quiz routes as literal dist/us/quiz/[mode].html and
dist/ru/quiz/[mode].html, so vercel.json rewrites /us/quiz/:mode and /ru/quiz/:mode
onto them. Any other static host needs the same two rewrites.
Read AGENTS.md before you touch anything. It covers the architecture, the
grading rules worth keeping, and the pitfalls that have already bitten once: typed-route
poisoning, accent colours that can't live in a StyleSheet, the twin-thumb slider. Run
npm test after any change to src/lib/ or src/domains/.