ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An offline world map you can explore, colour, label and quiz yourself on. Tap any country for its capital, population, currency and area, then test what you know in three quiz modes. It runs on Android and as an installable PWA, in English and Russian.
English · Русский
https://github.com/user-attachments/assets/e5ef44ce-b29d-476e-8a84-5b25da123f4c
| 🗺️ 240 countries and territories | Natural Earth 1:50m outlines, so you can tap microstates like Liechtenstein, Monaco and the Vatican. |
| 🎨 Four fill modes | Flat, population, density, or your own quiz mastery. |
| 🏷️ Five label fields | Names, flags, capitals, currencies or population, decluttered by fit and collision. |
| 🔎 Forgiving search | Matches names, aliases ("Holland"), capitals ("Lima") and currencies ("kwacha"), with fuzzy fallback. |
| 🧠 Three quiz modes | Name the facts, find it on the map, or name it from the flag. Type your answer or pick one of four. |
| 📈 Mastery tracking | Remembers how you do on each country, colours the map by it, and builds practice rounds from your weak spots. |
| 🌐 English and Russian | The UI, every country name, capital and currency, and the grading rules. |
| 📴 Fully offline | No tile server and no API calls. Everything ships in the APK or the precached web bundle. |
Tap a country to highlight it and open its card: flag, official name, capital, population, currency and area. Tap the flag to see it full size. Tap the ocean to close the card.
Choose a fill mode from the pill in the top-left. Population and density use a log scale, one colour step per factor of ten, because a linear ramp would leave everything except China and India white. The legend always matches the map.
Mastery colours each country by how well you have answered it in quizzes. Grey means it hasn't been asked yet.
These screenshots use sample quiz history.
Labels are real text drawn by MapLibre with a bundled font, so no glyph server is involved. Each label sits on a point inside the country (via polylabel), and a label only appears once its country is wide enough on screen to hold it.
The search button opens a list of all 237 countries. Type a name, an alias, a capital or a currency, and picking a result flies the map to that country and frames it clear of the info card.
Pick a mode, the facts you want to be asked, how you answer, and which regions to include. The setup is saved between sessions.
Grading is forgiving about spelling but not about getting the wrong country. It accepts aliases ("Holland", "UK", "DRC"), typos (Damerau edit distance, so a swapped pair of letters counts as one mistake), and population within ±20% (68m, 1.4bn, 68 million). It rejects a near-miss that is actually another country's name: "Gambia" is not accepted for Zambia, and in Russian "Австрия" is not accepted for Австралия. A correct answer still shows the canonical spelling, so you learn it.
In multiple-choice mode each field gets four buttons: the answer, one wrong option from the same subregion, one from the same continent, and one from somewhere far away. No button is ever another correct answer for that country, so South Africa's three capitals can't appear as both right and wrong.
Retry what you got wrong starts a new round with only the countries you missed, and only the fields you missed for each one. If you missed France's currency and Germany's capital, the retry asks France its currency and Germany its capital, and nothing else.
Practice mode picks ten countries weighted toward your weak spots. Countries you have never been asked count as weakest, so on a fresh install practice also works as a tour of the world.
English and Russian cover everything: the UI, all 250 country names, capitals, currencies and regions, plus Russian-aware grading. That means stemming for currency inflections (рублей → рубль), parsing 1,4 млрд, and a separate list of Russian country names so confusable near-misses are still rejected. On the web each language is its own static build with its own service worker: / and /ru.
This is the project's one hard constraint, and it drives almost every other decision.
asset:// through MapLibre's font-faces. On the web, maplibre-gl rasterises glyphs locally.<Images> on native, map.addImage on the web.| Framework | Expo SDK 57 · React Native 0.86 (New Architecture) · TypeScript · React Compiler |
| Routing | expo-router, typed routes |
| Map | @maplibre/maplibre-react-native v11 on Android · maplibre-gl on the web |
| Geometry | Natural Earth Admin 0, 1:50m |
| Facts | world-countries |
| Population | World Bank SP.POP.TOTL |
| Web | Static export, two locale trees, Workbox service workers, Vercel |
| Tests | Jest + React Native Testing Library (1207 tests, 51 suites) · Maestro E2E flows |
The .web.tsx siblings handle the web/native split, so there are no Platform.OS checks in src/. Everything above the renderer is shared: the GeoJSON joins, colour ramps, label expressions, camera maths and hit-testing.
npm install
# Web
npm run web # dev server (no service worker)
npm run build:web # production build: English -> dist/, Russian -> dist/ru/
npm run serve:web # serve dist/ on :4173
# Android (a development build, not Expo Go, because MapLibre is native)
npx expo run:android
npx expo run:android --variant release
# Checks
npm test # Jest
npm run typecheck
npm run test:e2e # Maestro, needs a running device
Data scripts. Their output is committed, so you only need these to change the data:
npm run enrich:data # offline: re-derive facts from world-countries
npm run labels:data # offline: label anchor points
npm run flags:data # offline: flag thumbnails and map icons from the committed masters
npm run build:data # needs network: full rebuild from Natural Earth + World Bank
The architecture notes, including the traps that cost real time and why each decision went the way it did, are in CLAUDE.md.
| Source | Used for | Licence |
|---|---|---|
| Natural Earth | Country outlines | Public domain |
| world-countries (mledoze) | Names, capitals, currencies, regions | ODbL 1.0 |
| World Bank | Population | CC BY 4.0 |
| MapLibre | Map rendering | BSD-3-Clause |
| Noto Sans | Map label typeface | SIL OFL 1.1 |
| flag-icons | Flags for dependent territories | MIT |
The same credits are in the app, on the About screen (the ⓘ button at the bottom-left of the map).