ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证An AI study buddy that tutors K-12 students through their own assignments and tests. No framework, no build step.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
An AI study buddy that tutors a student through their own assignments and tests —
the way a real tutor would: it explains, asks questions, gives hints, checks answers,
and adapts when you're stuck.
Built for K–12. No framework, no build step, no npm — plain HTML, CSS, and ES modules.
Live: — the frontend, hosted on
GitHub Pages. Runs in demo mode only, since Pages serves static files and there's no
server/ behind it; run server/ locally (or host it somewhere) for live mode and
accounts — see below.查看完整 README ↗An AI study buddy that tutors a student through their own assignments and tests — the way a real tutor would: it explains, asks questions, gives hints, checks answers, and adapts when you're stuck.
Built for K–12. No framework, no build step, no npm — plain HTML, CSS, and ES modules.
Live: https://jobbleandersson.github.io/study-buddy/ — the frontend, hosted on
GitHub Pages. Runs in demo mode only, since Pages serves static files and there's no
server/ behind it; run server/ locally (or host it somewhere) for live mode and
accounts — see below.
server/ now serves the whole app — frontend and API — from one process on one port,
so this is the only step needed for the full experience (demo mode works with no setup;
add a Claude key for live mode):
cd server
npm install
cp .env.example .env # optionally fill in ANTHROPIC_API_KEY for live mode
npm start
Then open http://localhost:8787. See server/README.md for details.
Hosting it for real (both of you editing, live mode, private while testing):
see HOSTING-FLYIO.md.
Frontend only, no Node: double-click serve.ps1 → "Run with PowerShell" (or
powershell -ExecutionPolicy Bypass -File serve.ps1 -Port 8000), or use any other
static file server. This runs the UI in demo mode only — with server/ not serving
it, there's no API for it to reach. Opening index.html directly with file:// will
not work either way — ES modules need to be served over http.
Assignments / Tests tabs, subject filters, search and sort, and a card grid
with a mastery ring per set. Each card has a ⋮ menu: rename, edit questions,
duplicate, delete.Light and dark themes (or follow your device), English and Swedish (interface
and the AI tutor), full keyboard shortcuts in a session (the ⌨ button in the
session header, or press ?), and it installs to a home screen and runs offline
in demo mode.
Everything (assignments, attempts, progress) is stored in your browser's
localStorage. Settings → Export JSON makes a backup.
Without the backend proxy (see server/) running and reachable, Studify runs in
demo mode: the two sample sets (Photosynthesis Basics, Ancient Rome Quiz) are fully
playable and the tutor follows a scripted hint ladder. Your library starts empty — load
the demo sets from the home screen or from Settings → Demo content.
Run server/ with a Claude key configured (see server/README.md) to turn on live
mode: real question generation from your material, a real streaming tutor, and AI
grading of written answers. Settings shows whether the tutor server is connected. In
Swedish mode the tutor, generated questions and grading all come back in Swedish.
Model, per job. Fixed, not a user choice — different jobs use different models, so you're not paying top rates to mark a one-line answer:
| Job | Model | Why |
|---|---|---|
| Writes a set | Sonnet 5 | Saved and reused by every student who studies it afterward |
| Tutors you | Haiku 4.5 | One-off, forgotten the moment the conversation moves on |
| Marks answers | Haiku 4.5 | One-off, many times a session |
| Solves a photo | Haiku 4.5 | One-off, shown once |
See js/claude.js (MODELS).
The Claude API key lives only on the machine running server/ — the browser never sees
it. Every API route, /api/messages (the Claude proxy) included, requires a signed-in
session by default, and the proxy meters each user against a monthly token budget and a
request rate limit, and the whole server against a daily dollar cap; signup, login and
code guessing are throttled per IP. What's still missing before charging for it: an
entitlement check (any account can spend up to the flat budget, paid or not), email
verification, and password reset — see server/README.md and the "Turning on live mode" plan.
serve.ps1 frontend-only dev server (Windows PowerShell, no dependencies) — demo mode only
index.html shell — fonts, vendored libs, manifest, theme bootstrap
manifest.json PWA manifest (installable to a home screen)
sw.js service worker — the app's files from a per-build cache (the server stamps the build: server/src/sw-build.js), the rest network-first
css/tokens.css design tokens (colour, type, spacing, motion) + dark theme
css/app.css layout + components
js/main.js hash router, app shell, service-worker registration
js/store.js localStorage state, with a migrate() seam for future accounts
js/claude.js Claude API client + per-task model presets
js/prompts.js system prompts, question shape, tutor session digest
js/material.js paste / PDF / image / topic -> generation inputs
js/views/ one file per screen (menu, create, edit, session, results,
progress, settings)
js/components/ question renderers, shared question editor, tutor chat, mascot
js/lib/ srs, mastery, activity/streak, theme, i18n + strings, sound,
a11y, markdown, dom, library (pure findQuestion/dueQuestions)
js/config.js backend server URLs
js/data/national-tests.js curated links to public Swedish national exams
js/views/login.js email/password sign in, optional
js/views/parent-dashboard.js linking, assigning sets, read-only student progress
data/samples/ scripted tutor, English and Swedish (demo mode)
vendor/ pdf.js, KaTeX, canvas-confetti (committed, no npm)
server/ serves the frontend + API: key proxy, accounts/sync, parent-teacher
linking (Node/Express/SQLite) — see server/README.md
Three layers, all plain node:test — no test framework dependency, no mocks for the
database or HTTP:
node tools/validate-library.mjs && node tools/validate-hp.mjs # library content shape (no install needed)
npm run test:unit # js/lib pure-logic modules (srs, mastery, hp, answer-match, expr, …)
cd server && npm install && cd ..
npm run test:server # spawns the real server against a throwaway SQLite file per suite
npm test # all of the above
test:server starts actual server/src/index.js processes (real Express, real
better-sqlite3, a fresh temp DB per suite) rather than mocking the app — signup,
login, email verification, password reset (including its account-takeover
defenses), account deletion, and the request-throttling middleware are all
exercised over real HTTP. A dummy RESEND_API_KEY is used to turn email features
on without a real provider: the outbound send fails (there's no real key), but the
token it issues first is still readable straight from the SQLite file, which is
how those tests grab a verify/reset link without an inbox. .github/workflows/ci.yml
runs all three layers on every push and pull request.
Optional. Studify works fully signed out — everything stays in this browser's
localStorage, same as always. Sign in (Settings → Account) to also sync your
library and progress to an account, so it's there on another device too. Auth is
email/password; there's no email-sending step, so nothing to confirm — an account
is ready to use immediately.
Sync pushes your whole local library as one unit a moment after each change, and pulls it once when you sign in elsewhere. If the same account is edited on two devices before they've synced, the most recent save wins and the other device is told its unsynced local changes were replaced — there's no field-by-field merge. Fine for one person moving between their own devices; not built for simultaneous editing.
Also optional, and separate from accounts & sync — you need an account, but a parent or teacher watching a student doesn't need to be the same account. From the 🧑🤝🧑 icon in the header (visible once signed in):
A parent/teacher can't edit a student's data, and a student's raw material never leaves their account except the sets a linked parent/teacher explicitly assigned.