ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Web-Based Anti-Cheating System for Exams and Quizzes
BSIT 4C, Group 2 — System Administration course project.
A monitored online exam platform: instructors build exams (by hand or from their own
lesson files via AI), students sit them under browser lockdown, and suspicious activity
reaches the instructor's dashboard live.
Next.js 16 (App Router, TypeScript, Tailwind) · Prisma 7 · Supabase (Postgres, Auth,
Storage, Realtime, Vault) · Google Gemini · deployed on Vercel, scheduled jobs on
GitHub Actions.查看完整 README ↗BSIT 4C, Group 2 — System Administration course project.
A monitored online exam platform: instructors build exams (by hand or from their own lesson files via AI), students sit them under browser lockdown, and suspicious activity reaches the instructor's dashboard live.
Next.js 16 (App Router, TypeScript, Tailwind) · Prisma 7 · Supabase (Postgres, Auth, Storage, Realtime, Vault) · Google Gemini · deployed on Vercel, scheduled jobs on GitHub Actions.
| Area | Where |
|---|---|
| Sign-in, three roles, per-role row-level security | /login |
| Create accounts and classes (one subject per section), enable/disable users | /admin |
| Teacher console — own exams, own students, own classes | /teacher |
| Open, close, or schedule when an exam can be sat | /exams/<id> → "Availability" |
| Assign who an exam is for, and see who has not sat it | /exams/<id> → "Who it is for" |
| Tag an exam with a subject, picked from a shared list | exam builder, or /exams/<id> → Settings |
| See which questions the class got wrong | /exams/<id>/monitor |
| Export your own students' report | /teacher/students → Download CSV |
| Turn classes off entirely — exams then reach only who you send the link to | /admin/settings |
| Share an exam by link, the way a Google Form is shared | /exams/<id> → "Send this to your students" |
| Students sign up with email or a Google account | /signup (see the runbook for the one-time Google setup) |
| Decide whether students join classes by code, or an admin enrols them | /admin/settings |
| AI provider keys — encrypted in Vault, round-robin rotation | /admin/keys |
| Health, audit trail, backup status | /admin/health |
| Exam builder: questions, timers, lockdown settings, publish | /exams |
| Generate questions from a lesson file, then review before adding | /exams/[id]/generate |
| Live monitoring, flag review, force submit, results | /exams/[id]/monitor |
| Sitting an exam under lockdown | /exam/[id] |
The parts that actually hold are server-side, and each was verified against the live database rather than assumed:
correct_answer could not be hidden while it sat on
questions — a student could read the whole key in one query. It now lives in
question_answers, which students have no policy on at all.WITH CHECK constrains which rows you
may write, not which columns, so a student could once set score = 100. Students
have no UPDATE on sessions; a trigger forces the opening state on INSERT so a session
cannot be created pre-scored or back-dated.Lockdown mode itself — fullscreen, tab-switch detection, the honeypot — is browser-side and defeatable with devtools. That is a stated limitation, not a defect.
cd web
npm install
cp .env.example .env.local # fill in the Supabase values
npm run dev
DATABASE_URL and DIRECT_URL belong in web/.env (Prisma's CLI only auto-loads
.env); the Supabase client keys belong in web/.env.local. Neither is committed.
web/ the Next.js application
src/app/ routes (admin, exams, exam, login)
src/lib/ supabase clients, auth, grading, shuffle, AI
prisma/migrations/ every schema change, in order
docs/RUNBOOK.md restore, rotate, deploy, known issues
.github/workflows/ nightly backup and health check
deploy/ VPS bootstrap script, kept for reference
See docs/RUNBOOK.md for restoring a backup, rotating keys, deploying, and the current known issues.