ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.