ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A personal Digital SAT Math practice app that looks and behaves like the real test in Bluebook: same layout, tools, timer and pressure. Single user, no accounts.
npm install
npm run dev # http://localhost:3000
npm test # grid-in answer rules + question bank checks
npm run build # production build
Optional: set NEXT_PUBLIC_DESMOS_API_KEY in .env.local to use your own Desmos key.
Without it, the app uses Desmos's public demo key, which is fine for personal use.
Minimal on purpose: white pages, no boxes, black and white with blue only for the main button and
the charts (green and red only for right and wrong). The menu is Practice · Stats · Upload; the
wordmark goes home. Pages follow the device's light or dark setting (src/app/globals.css holds both
sets of colors). The test screen is the exception: it always looks like Bluebook, in light mode.
Every attempt and finished test is saved to a database. Any of these works:
DATABASE_URL itself. Then Deployments → ⋯ → Redeploy.
Any variable holding a postgres:// address is found; the pooled DATABASE_URL is preferred.TURSO_DATABASE_URL and TURSO_AUTH_TOKEN in Settings → Environment Variables. Any variable
holding a libsql:// address is found, with the token from its sibling variable..data/mather.db, created on first use.Tables are created automatically on first use. Queries are written once in SQLite's dialect and
translated for Postgres (src/server/sql.ts); the connection lives in src/server/db.ts and the
setting names are worked out in src/server/db-env.ts.
Until a database is connected, the home page shows a notice and progress stays in the browser.
Writes always go to a queue in the browser first (src/lib/outbox.ts) and are uploaded in the
background, so nothing is lost if the network or database is briefly unavailable. Results from before
the database existed are uploaded the first time you open the app with one connected.
Tables (src/server/db.ts):
attempts: one row per question per test or set: answer, correct, time spent, mode, marked.sessions: each finished practice set, timed set or exam, with its full state for the results page.uploads, upload_pages, answer_keys, uploaded_questions: uploaded files and the questions read from them.files: page images and cropped figures (served by /api/files/<id>), so no separate file storage is needed./upload turns a prep book into questions:
.docx file, or
photos of pages. The browser does the heavy lifting: PDF pages are rendered to images with pdf.js,
Word files are converted to the question markup (equations become LaTeX, list numbers are written
out, tables and pictures are kept), and the results are uploaded page by page.Published questions show up in the bank, practice sets and exams like the built-in ones.
GEMINI_API_KEY, then redeploy.
Locally, put it in .env.local.The default model is gemini-flash-latest (set GEMINI_MODEL to use another). The upload screen also
offers gemini-flash-lite-latest, which allows many more requests per day on the free tier; switch to it
if the daily limit runs out mid-book.
Uploads use your API key, so on a public URL you'll want a lock. Set APP_PASSCODE (any phrase) in
Vercel and redeploy: every page and API then asks for it once per browser (src/proxy.ts).
Leave it unset to keep the app open.
src/components/bluebook/)
/practice): click Check to see Correct/Incorrect, the correct answer, the explanation and your time on the question./exam): 2 modules × 22 questions × 35 minutes. No feedback during the test. Optional adaptive Module 2 (harder or easier based on Module 1). Auto-submits at 0:00. Results page with raw score, accuracy by domain and skill, and every question with its explanation.src/lib/grid.ts) follows SAT entry rules:
/bank (Practice in the menu) lists every question, with one row of filter menus: status
(unanswered, incorrect, correct, marked for review), topic (domain and skill), type, and difficulty and
source once there's more than one of them. Filters combine (OR inside a group, AND across groups) and
live in the URL, so /bank?status=incorrect&domain=Advanced+Math&difficulty=Hard is a
link to "hard Advanced Math questions I got wrong".
From any filter, start a set of N questions:
By number: type question numbers in the # box, like 10-20, 34, or 1-5, 12, to practice just
those, in book order. Numbers restart in each chapter, so pick a Topic (Algebra or Advanced Math) to
choose one; otherwise the list shows both, under chapter headings. The numbers go in the URL too
(/bank?domain=Algebra&num=10-20).
Status uses your most recent attempt: "Incorrect" means you got it wrong the last time you answered it. Click a question to see its skill, the full question, the answer and explanation, and every attempt.
/stats), scoped by one period filter (all time, last 30 days, last 7 days):
/history): every finished exam, timed set and practice set,
filterable, linking to results.Score estimate (src/lib/score.ts): College Board doesn't publish a raw-to-scaled table for the
adaptive test, so the estimate follows typical Bluebook practice-test ranges, scaled to 44 questions.
The harder Module 2 can reach 800; the easier one tops out near 650. Shown with a ±30 range.
Built-in questions live in src/data/ as TypeScript; uploaded ones are stored in the database. Both use the same small markup:
$...$ for inline LaTeX and $$...$$ for display LaTeX (rendered with KaTeX)\$ for a dollar sign, **bold**- item lines for bullet lists| a | b | rows for tables{w=300} for figuresFigures are cropped from the source PDF with the watermark removed (public/figures/mhb/).
150 questions: 37 Algebra and 113 Advanced Math, all tagged Hard. Every question has a written explanation. The book only had answer keys, so each answer was re-derived and checked, with SymPy for the algebra-heavy ones.
Answer key corrections:
Each correction is explained in the question's explanation.
Repaired from the printed version (each one says so in its explanation):
Flagged because they can't be fixed confidently: Algebra #14 and Advanced Math #11, #22, #76 and #108. They show a "source issue" note and are never used in exams.
Skipped duplicates: Advanced Math #6, #38, #95, #96, #117 and #119–123 repeat earlier questions.