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.