ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Thai study app based on Can You Speak Thai curriculum
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Thai you'll use today. A web app for people living in Thailand. Each day is one short lesson built around a real moment, like ordering coffee, bargaining at the market or telling a taxi where to stop, plus a line to go and say to someone that same day.
Live: https://soitalk.app (public launch 1 Nov 2026)
I live in Bangkok. I took Thai classes, and the classes were fine. Practising at home was the problem. Most apps teach random travel phrases, or hand you a word list with no context.
What I wanted was simpler: learn the thing I'll need at the coffee stall tomorrow, hear it from a Thai voice, then actually say it. So I built that.
I spent about 15 years in English teaching and EdTech, including a platform launch for 2.5 million learners in China. This time I'm building the product myself.
Next up: a quick practice round you can do any time, replaying past lessons, a classifier game (Thai counting words), a tones lesson, and a Bangkok map of places you've learned to handle.
I run every feature past a panel of AI reviewers before I build it: a learning scientist, a Thai teacher, an expat customer, a product designer and a technical lead. Each gives a verdict and a ranked list of changes. I make the call. The reviews and decisions live in a project log.
A few rules came out of that process:
The word list is my own. I cross-referenced three Thai word-frequency lists, kept the most common words, then added the classifiers, function words and everyday phrases that basic sentences need but frequency lists miss. Older versions of the CU-TFL (Chulalongkorn University's Test of Thai as a Foreign Language) are a reference for what a learner should be able to do at each level.
Words and sentences live in one Excel workbook. An import script loads it into the database, so content changes never touch the code. Lessons and sentence patterns are written in code and checked by a Thai teacher.
Some example sentences were drafted with AI help. Every sentence has a review status, and native Thai review is ongoing. Rejected sentences never reach the app.
I built this with AI coding tools (Claude). I made the product, curriculum and design decisions, wrote the specs, and reviewed and tested each change.
| Part | Tool | Why |
|---|---|---|
| Website | Next.js 14 (React) | Pages and small server functions in one codebase |
| Database and accounts | Supabase (Postgres) | Words, sentences, sign-in, progress and feedback, with row-level security |
| Audio | ElevenLabs API | The most natural Thai voices I tested (against Google Cloud and Botnoi) |
| Analytics | PostHog | Which lessons people finish and where they drop off |
| Hosting | Vercel | Deploys straight from this repo |
| Content | Excel workbook + Node import script | The spreadsheet stays the source of truth |
| Testing | Playwright | Automated walk-throughs of every lesson and screen at phone and laptop sizes |
How the data fits together:
vocabulary: one row per word (Thai, romanization, English, frequency rank, topic, course order)sentences: one row per example sentence, with its review statusword_sentences: links words to the sentences they appear inprofiles, word_progress (memory strength per word), study_days, said_it: each user's settings and progress, readable only by that userfeedback: mistake reports. Anyone can send one, nobody can read them through the app.The public website can only read course content. Only the import script, run with a private key, can change it. The audio endpoint only speaks text that is in the course, so it can't be used to run up the ElevenLabs bill.
npm install
cp .env.example .env.local # then add your own Supabase and ElevenLabs keys
npm run dev # opens at http://localhost:3000
Create the tables by running the files in supabase/ (001 to 010) in order in the Supabase SQL editor, then load the content:
node scripts/import-curriculum.js path/to/your-workbook.xlsx
Run the automated checks (they use a pretend database, so no keys are needed):
npm test
Keys go in .env.local, which is never committed. On Vercel they are set as encrypted environment variables.
I'm Jason Pshyk, a strategy and operations lead based in Bangkok, with an MBA and a PMP. Soi Talk is my side project. Feedback is welcome: [email protected]