ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Web ujian pre-test & post-test anti-cheat untuk KSR PMI Unit Universitas Telkom. Peserta scan QR dari HP, panitia kelola sesi, soal, dan nilai di /admin.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Web ujian pre-test & post-test dengan anti-cheat untuk KSR PMI Unit Universitas Telkom . Peserta masuk lewat scan QR dari HP. Panitia mengelola sesi, soal, dan nilai dari satu panel. Masuk dengan kode / QR Mengerjakan soal Peringatan pelanggaran Nilai muncul serentak查看完整 README ↗
Untuk peserta
Untuk panitia (/admin)
held_on), pilihan pasangan sesi pre-test terkait, mode timer, dan batas pelanggaran.| Yang dilakukan | |
|---|---|
| Dicegah | Mode layar penuh dan layar terkunci sampai kembali ke layar penuh · tekan-lama, salin, dan seleksi teks diblokir (menutup jalan Google Lens dan copy-paste ke AI) · watermark nama + NIM di seluruh layar · layar dijaga tetap menyala · satu HP satu peserta per sesi |
| Dideteksi (dicatat sebagai pelanggaran) | Pindah aplikasi/tab · hilang fokus (notifikasi, overlay) · keluar layar penuh · split screen / jendela mengecil · reload atau membuka ulang ujian. Pelanggaran ke-N mengumpulkan jawaban otomatis. |
| Dijaga server | Timer dari server · soal dan opsi diacak per peserta · kunci jawaban tidak pernah dikirim ke HP · 1 NIM = 1 kali per sesi · mode per soal tidak bisa kembali · nilai baru muncul setelah semua selesai |
Keterbatasan aplikasi web: tidak bisa memblokir screenshot, rekam/share layar (misalnya ke Gemini), atau foto dari HP lain. Watermark membantu melacak siapa yang menyebarkan. iPhone tidak mendukung layar penuh, jadi di sana yang terdeteksi adalah pindah aplikasi/tab. Pengawas di ruangan tetap perlu. Rinciannya ada di Buku Panduan.
flowchart LR
P["📱 Peserta<br/>scan QR → /s/KODE"] --> V
A["💻 Panitia<br/>/admin"] --> V
V["Next.js di Vercel<br/>halaman + API"] -->|secret key, hanya di server| S[("Supabase Postgres")]
lib/exam.ts, diuji dengan unit test.record_answer, add_violation), sehingga request yang datang bersamaan tidak saling menimpa.Kebutuhan: Bun 1.2+, akun Supabase, dan akun Vercel untuk deploy.
Database. Buat project Supabase → SQL Editor → jalankan seluruh isi supabase/schema.sql.
Environment. Salin .env.example ke .env.local, lalu isi:
| Variabel | Isi |
|---|---|
SUPABASE_URL | https://xxxx.supabase.co (Project Settings → API) |
SUPABASE_SECRET_KEY | Secret key sb_secret_… atau service_role, bukan anon/publishable key |
ADMIN_PASSWORD | Password panel /admin. Pakai minimal 16 karakter acak. Kalau diganti, semua admin otomatis logout. |
Jalankan.
bun install
bun run dev # buka http://localhost:3000/admin
vercel.json saat ini memakai hnd1 (Tokyo) karena project Supabase-nya di ap-northeast-1. Kalau Supabase-mu di Singapura (ap-southeast-1), ganti ke sin1.Perubahan skema dicatat di bagian atas supabase/schema.sql. Untuk database yang dibuat sebelum pembaruan pre/post pairing, jalankan migrasi ini di SQL Editor Supabase:
-- Penambahan kolom sesi pre-test rujukan (relasi pre & post):
alter table exam_sessions add column if not exists pre_session_id uuid references exam_sessions (id) on delete set null;
-- Kolom tanggal pelaksanaan sesi:
alter table exam_sessions add column if not exists held_on date not null default current_date;
Kolom: type,question,a,b,c,d,e,answer. Template siap pakai tersedia dalam format Excel (public/contoh-soal.xlsx) dengan lebar kolom otomatis (auto-width) dan CSV (public/contoh-soal.csv).
| Kolom | Isi |
|---|---|
type | pg = pilihan ganda, bs = benar/salah (mc/tf juga diterima) |
question | Teks soal |
a … e | Opsi pilihan ganda, diisi berurutan mulai dari a, minimal 2. Kosongkan untuk bs. |
answer | Huruf opsi yang benar (A–E), atau B (benar) / S (salah) |
type,question,a,b,c,d,e,answer
pg,Apa kepanjangan dari KSR?,Korps Sukarela,Kelompok Siaga Relawan,Komunitas Sosial Remaja,Korps Siaga Rakyat,,A
bs,Tourniquet adalah pilihan pertama untuk semua jenis perdarahan.,,,,,,S
Mendukung file Excel (.xlsx) langsung serta CSV (.csv) dari Excel atau Google Sheets. Pemisah koma atau titik koma pada CSV terdeteksi otomatis. Format .xls lama tidak didukung (simpan sebagai .xlsx terlebih dahulu).
| Perangkat | Browser | Versi minimum |
|---|---|---|
| Android | Chrome, Samsung Internet, Edge, Firefox | Chrome 111+ (rilis 2023) |
| iPhone / iPad | Safari | iOS 16.4+ (iPhone 8 ke atas) |
| Laptop | Chrome, Edge, Firefox, Safari | Chrome 111+ / Safari 16.4+ |
Browser yang lebih lama melihat peringatan untuk memperbarui browser. Link yang dibuka dari dalam aplikasi Instagram/LINE/TikTok tetap bisa dipakai ujian, tapi peserta disarankan membukanya di Chrome atau Safari.
Kapasitas. Sudah diuji dengan 150 peserta simulasi yang join, menjawab, submit, dan mengambil nilai pada detik yang sama. Semua request berhasil tanpa error. Batas utama ada di jumlah request ke Supabase: paket gratis sekitar 40 request/detik. Project Supabase gratis juga otomatis di-pause setelah 7 hari tidak dipakai, jadi buka /admin sehari sebelum ujian. Ukur sendiri dengan:
# buat sesi uji di /admin, buka sesinya, lalu (hapus sesi itu setelahnya):
BASE=https://ujiksr.vercel.app CODE=ABC123 N=150 bun e2e/load.ts
bun test # unit test + skema database di PGlite (Postgres in-memory)
bun run lint # ESLint
bun run build # build + type-check
bun run e2e # uji end-to-end penuh tanpa akun Supabase:
# PGlite → PostgREST → next dev :3100 → Chromium headless
E2E butuh Chromium. Set CHROMIUM_PATH kalau lokasinya bukan /usr/bin/chromium-browser. Log dan screenshot kegagalan ada di e2e/.bin/.
app/
page.tsx beranda: masukkan kode sesi
s/[code]/ halaman join (aturan ujian, nama + NIM + prodi)
exam/[id]/ halaman ujian + anti-cheat (use-anti-cheat.ts)
api/attempts/ API peserta: mulai, lihat, jawab, submit, pelanggaran
admin/ panel panitia (server actions di actions.ts)
lib/
exam.ts aturan murni: acak soal, timer, penilaian, data untuk peserta
attempts.ts orkestrasi database per request
fullscreen.ts layar penuh + fallback untuk browser yang menolaknya
csv.ts · excel.ts · report.ts parser CSV & XLSX soal · auto-width Excel · perbandingan pre/post
supabase/schema.sql tabel, RLS, fungsi SQL atomik
e2e/ uji end-to-end dan uji beban (load.ts)
docs/ buku panduan + screenshot
lib/db.ts). RLS aktif tanpa policy.nosniff, dan Referrer-Policy: same-origin, karena link /exam/<id> adalah kunci peserta.AGENTS.md: catatan arsitektur dan panduan agen pengembang.Kode dirilis dengan lisensi MIT © 2026 Syarif & KSR PMI Unit Universitas Telkom: boleh dipakai, diubah, dan disebarkan, asal mencantumkan pemberitahuan hak cipta dan lisensi.