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/.