尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Bloom 🌱 — a friendly, motivating NPTEL quiz study app. Practice any mix of weeks in shuffled order, study at your own pace, and track real progress. Questions and answers are extracted from solution PDFs and verified. Next.js + TypeScript + Tailwind.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗🔗 Live demo: https://bloom-study-app.vercel.app/
A friendly, motivating quiz study app for NPTEL Public Speaking (Weeks 1–12). Practice any combination of weeks in shuffled order, study at your own pace, and track real progress. Every question, answer and source reference comes only from the 12 solution PDFs. Nothing is invented or guessed.
/admin import & verification dashboard (upload PDFs, inspect, correct, export dataset)localStorage) on that device only.
There is no cross-device sync.| PDFs | 12 (Weeks 1–12), all selectable-text, 2 pages each — no OCR needed |
| Questions | 120 (10 per week): MCQ, fill-in-the-blank (bracketed options), True/False |
| Verified | 120 / 120 |
| Explanations | None of the PDFs contain any, so the app shows "No explanation provided in the source PDF." |
| Numeric / multi-select | None appear in these PDFs (the engine supports multi-select with exact-set scoring; numeric is not implemented because no source needs it) |
The PDFs mark answers in four ways; the importer reads each one and refuses to guess:
* Week 5 fill-in/MCQ answers are highlighted; its True/False answers are printed letters.
A question is verified only if exactly one answer is marked, all signals agree, the structural audit
(src/lib/extract/verify.ts) passes, and the answer maps to a real option. Otherwise it becomes
needs verification / failed extraction and is excluded from scored practice and study.
Special case: Week 3 Q5 says "[Both options are correct]" → either option is accepted.
Independent check: python3 scripts/crosscheck.py re-reads every PDF with a different library
(pdfplumber) and confirms each stored correct option really is highlighted/printed (121/121 match).
Each question stores its source file and PDF page, shown as e.g. Source: WEEK_4_ASSIGNMENT_4.pdf · PDF page 2,
with an "Open page" link (the PDFs are served from /sources/) and the raw extracted text.
The PDFs contain no topic titles (just "Assignment N"), so weeks are shown as "Week N". The PDFs are copied into
public/sources/and are therefore publicly reachable at your deployed URL. Remove them (and the "Open page" links will stop working) if you don't want that.
cd bloom
npm install
cp .env.example .env.local # optional: set ADMIN_TOKEN to enable the /admin importer
npm run dev # http://localhost:3000
npm run typecheck && npm run lint && npm test && npm run build
# Browser smoke test (needs Playwright Chromium; server must be running):
npx next start -p 3100 & node scripts/e2e-smoke.cjs
npm test covers extraction (never-guess rules, ambiguity, duplicates, hyphen wraps), the committed
dataset (all 12 weeks, source refs, re-extraction reproduces it byte-for-byte), shuffle, balanced
selection, no repeats, option-shuffle vs answer key, single/multi/either scoring, session scoring,
week status, streak, and persistence across a simulated refresh.
npm run import:pdfs -- /path/to/folder/with/pdfs # files must contain "WEEK_<n>" in the name
This rewrites data/questions.json and copies PDFs to public/sources/.
Or use /admin (needs ADMIN_TOKEN): upload per week, inspect counts, correct questionable items
(“I checked the PDF — mark verified”), then Download questions.json, replace data/questions.json,
put the PDFs in public/sources/, commit and push. Corrections made in the browser are local until exported.
This app lives in the bloom/ folder of the repo.
bloom. Framework: Next.js (auto-detected). Build/Install commands: defaults.ADMIN_TOKEN = a long random string.Notes: uploads are limited to 4 MB/PDF (Vercel request limit). No secrets are exposed to the browser;
ADMIN_TOKEN is only read in the API route. No Supabase/database is used in this version.
One point per question; skipped ≠ correct; multi-select needs the exact set; "both correct" accepts either; unverified questions are never scored. Week status: Not started → In progress → Practiced (all answered, some latest answers wrong) → Completed (all answered, latest answer to each is right). Streak is only a gentle note and never shown as pressure.
The 12 solution PDFs are committed in bloom/public/sources/ and are publicly downloadable once deployed.
If they are course material you don't have the right to redistribute, remove them (and set the app's
"Open page" links aside) before pushing to a public GitHub repo — data/questions.json alone is enough for the app to run.