ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
러시아어 원문과 영어 번역, 오디오를 함께 제공하는 고전 독서기
A Russian reader with a parallel English translation and Russian audio, built to make reading the classics in the original easier. — Читалка русской классики: параллельный английский перевод и аудио,
교육GitHub @davidandrewdelehanty온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Govorim App
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A self-contained React + Vite web app for Russian language practice with EPUB reading, conversational tutoring, click-to-define vocabulary, and rotating comprehension questions. Powered by Google Gemini 2.5 Flash on the free tier.
govorim-app/
├── src/
│ ├── App.jsx ← the entire React app (~1800 lines, single file)
│ └── main.jsx ← entry point that mounts <App />
├── api/
│ └── chat.js ← serverless function that proxies to Gemini
├── public/
│ ├── favicon.svg ← icon shown in browser tab and home screen
│ └── manifest.webmanifest ← PWA manifest (lets users install as app)
├── index.html
├── package.json
├── vite.config.js
├── vercel.json
├── .gitignore
└── README.md (you are here)
AIzaSy.... Save it somewhere safe.You don't need a credit card. The free tier gives you 1,500 requests per day on Gemini 2.5 Flash, which is plenty for 20–50 active users.
If you already have GitHub set up, skip to step 2c.
Go to https://github.com/join and follow the prompts. Free.
govorim (or whatever you like).git remote add origin https://github.com/YOUR_USERNAME/govorim.git.
Keep that page open.Open Git Bash, navigate to this folder, and run:
cd /path/to/govorim-app
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/govorim.git
git push -u origin main
Replace YOUR_USERNAME with your actual GitHub username. You'll be asked
to authenticate the first time — GitHub now uses a personal access token,
which Git Bash will guide you through if needed.
govorim repo in the list and click "Import".vercel.json
handles them.GEMINI_API_KEYhttps://govorim-yourname.vercel.app. Open it.
You should see the start screen of the app.If the build fails, scroll up in the build log to find the first red error
line. Common causes: missing environment variable, typo in vercel.json,
or a syntax error from a manual edit.
Even though Gemini's free tier is genuinely free, set guardrails so you can never get a surprise bill if you accidentally upgrade or hit a paid feature.
The free tier is auto-capped — you literally cannot exceed it without adding billing — so there's nothing to set unless you choose to enable billing later. If you do, set a budget alert in the Google Cloud Console.
You'll now have an app icon that opens the practice tool full-screen, no browser chrome, like a real app.
You'll get a desktop shortcut and Start menu entry.
If you want a nicer URL like govorim.app instead of
govorim-yourname.vercel.app:
Any change you push to your GitHub main branch deploys automatically
to Vercel within a minute or two. Workflow:
# edit files locally
git add .
git commit -m "Describe what you changed"
git push
Vercel sees the push, builds, deploys. You'll get an email when it's done.
To roll back: in the Vercel dashboard, go to Deployments, find a working version, click the menu, and select "Promote to Production".
If you want to run the app on your own computer before pushing changes:
# Install dependencies (one time)
npm install
# Start the dev server
npm run dev
Note: the /api/chat serverless function only works on Vercel, not in
local Vite. To test the API locally too, install Vercel CLI:
npm i -g vercel
vercel dev
This runs both the frontend and the serverless function together,
matching production behavior. You'll need to set the GEMINI_API_KEY
in a .env.local file at the project root:
GEMINI_API_KEY=AIzaSy...your-key-here...
The .gitignore already excludes .env* files so your key won't
accidentally land in GitHub.
localStorage. No server-side database. Each device is independent./api/chat, which translates Anthropic-shaped
request payloads into Gemini's format. This means the prompts (which were
originally written for Claude) work without modification, and you can
swap to a different LLM later by editing only api/chat.js.api/chat.js. Best-effort; resets on cold start.
If you need durable rate limiting later, swap for Upstash Redis.speechSynthesis API. On Windows,
Microsoft Edge exposes high-quality "Online (Natural)" neural voices.
On iPhone, download Enhanced/Premium Russian voices via Settings →
Accessibility → Spoken Content → Voices → Russian."Server error: GEMINI_API_KEY not configured" — you forgot to add the environment variable in Vercel. Go to Project → Settings → Environment Variables, add it, then redeploy (Deployments tab → menu on latest → "Redeploy").
"Too many requests this minute" — you (or someone) hit the rate limit.
Wait 60 seconds and try again. If this happens often legitimately, raise
RATE_MAX_PER_WINDOW in api/chat.js.
"Daily limit reached for your IP" — likewise; raise RATE_DAILY_PER_IP
or wait until tomorrow.
App loads but nothing happens when I click Start — open browser DevTools (F12) and check the Console tab for errors. Most likely your Gemini key is invalid or has hit its 1,500/day free-tier quota.
TTS sounds robotic — open the app in Edge (Windows) or Safari (iOS) and look for voices marked "neural ★" (Edge) or download Enhanced voices in iOS Settings.
For a small group (1–10 occasional users):
For viral-popular usage (100+ daily active users):
You'll know you're approaching free-tier limits when the API starts returning 429 errors. At that point, decide whether to upgrade Gemini billing, add Cloudflare Turnstile to block bots, or implement BYOK.