ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
Talk in Seoul는 일리노이 스프링필드 Pop In Seoul 한글 수업 보조 자료로 발음·쓰기·퀴즈·공지·숙제 포함
Talk in Seoul — Hangul class companion for Pop In Seoul in Springfield, IL. Pronunciation, letter tracing, quiz cards, notices, and homework.
교육TypeScript · JavaScriptGitHub @TalkInSeoul88온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Hangul class web app
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Hangul class companion for Pop In Seoul, a Korean market in Springfield, IL.
Students come to an in-person Hangul class at the store, then use this phone-friendly web app to practice at home between classes. It is a warm, simple companion — not a full learning-management system.
Talk in Seoul · Hangul Class @ Pop In SeoulREADME 전문 보기 ↗Hangul class companion for Pop In Seoul, a Korean market in Springfield, IL.
Students come to an in-person Hangul class at the store, then use this phone-friendly web app to practice at home between classes. It is a warm, simple companion — not a full learning-management system.
Talk in Seoul · Hangul Class @ Pop In Seoul
/batchim) — 20 easy 받침 words. Coral marks the syllable with a bottom letter. Open to every student. Drop batchim-*.mp3 into public/audio/./numbers) — native 1–10, Sino-Korean 1–10, and the tens pattern. Open to every student. Drop number-*.mp3 into public/audio/./conversation) — 10 everyday phrases. Open to every student. Drop phrase-*.mp3 into public/audio/./sound) — ㄹ (reu) / (ri-eul) tap ladder and a ㅂ (beu) / ㅍ (peu) / ㅃ (ppeu) listen-and-pick. Open with or without a class code. New clips are sound-*.mp3. Words that already have a recording reuse that file./real-talk) — counter conversations for Weeks 3–7. Jung is the cashier. Weeks 3 and 4 are free. Weeks 5–7 need full course access.가 ~ 하 through ㅣ 기 ~ 히). A taste-class code does not open Trace. Wobbly strokes are fine. Press Done after any ink and the letter turns green. The doorbell (public/audio/trace-success.mp3) and Jung’s clip start together; his voice plays once and is fetched when the letter appears, not after the chime. The next letter appears shortly after his clip ends. Arriving on a letter does not play it; Hear it does. Done on an empty canvas shows a red X and “Try again.” The finger stroke is half the gray letter’s stem width. Last position is remembered on this phone./progress) — Beginner checklist in the hamburger menu. Each step shows what you learn. Class progress is a filled dot, “Covered in class,” for every step through the week Jung set. My review is the student’s own check. Any class code can open it, including a taste-class code./notices) — reminders Jung posts (title, message, date, optional pin). Newest first, pinned on top. A notice can be for every student or for one course. Needs a class code./homework) — files for the student’s course, grouped Week 1, Week 2, and so on. PDF or photo. Needs full course access. A taste-class code still unlocks pronunciation and notices./admin) — hidden from the student hamburger. Jung unlocks with a password, then:
Menu is a hamburger in the top-left. English is the primary UI language, with Korean labels where they feel natural. Students do not create an account. Without a code they can still use the free app.
Old /lesson and /practice URLs go to Pronunciation.
npm install
cp .env.example .env.local
# set ADMIN_PASSWORD in .env.local
npm run dev
Then open the URL Vite prints (usually http://localhost:5173) on your computer or phone.
Local issued codes are saved to .data/access-codes.json (gitignored) so you can test without Vercel Blob.
npm run build # production build
npm run preview # serve the production build
npm run lint # oxlint
npm test # access-code helpers
Student enrollment is remembered in this browser (localStorage). Issued codes are not stored only on the phone — they live in Vercel Blob in production, or .data/ locally. Student recordings stay in memory for this visit and are never uploaded.
The password is never shipped to the browser. The app checks it on the server.
ADMIN_PASSWORD with a long password only you know./api/admin/login picks it up: Vercel → Deployments → ⋯ on Production → Redeploy (or merge this repo’s next PR). Do not skip the redeploy; env vars are applied at function boot.여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗