ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Catat keterlambatan, izin, dan pelanggaran siswa di SMAN 2 Tarakan
Translation pending
AI summary · README
EducationJavaScript · TypeScriptGitHub @akunsyarif-rgbOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
SIGAP — Sistem Informasi Gerbang, Absensi, dan Pelanggaran Aplikasi web internal SMAN 2 Tarakan untuk mencatat keterlambatan siswa, surat izin/sakit, izin keluar/pulang di tengah jam pelajaran (BETA), pelanggaran tata tertib, dan pelanggaran saat upacara — menggantikan buku piket kertas dengan satu sistem yang bisa dicari dan direkap kapan saja.Read the full README ↗
Status backend (25 Okt 2026): backend aktif SIGAP sekarang Supabase (fungsi
sigap-api;API_BACKEND = "supabase"diconfig.js, sejak PR #104). Bagian di bawah yang membahas Google Apps Script/Google Sheet,clasp,API.md, danSCHEMA.mdmenjelaskan backend lama yang kini jadi arsip/jalan mundur. Ringkasan terkini ada di STATUS.md.
Aplikasi web internal SMAN 2 Tarakan untuk mencatat keterlambatan siswa, surat izin/sakit, izin keluar/pulang di tengah jam pelajaran, pelanggaran tata tertib, dan pelanggaran saat upacara — menggantikan buku piket kertas dengan satu sistem yang bisa dicari dan direkap kapan saja.
Untuk panduan pemakaian versi non-teknis (ditujukan ke guru/kepala
sekolah), lihat docs/PANDUAN-FITUR-DAN-ALUR-KERJA.md.
Untuk struktur data Google Sheet secara lengkap (nama sheet + urutan
kolom persis), lihat SCHEMA.md.
Untuk referensi lengkap seluruh action doGet/doPost (parameter, otorisasi,
bentuk respons), lihat API.md.
Untuk catatan teknis mendalam (alasan di balik tiap keputusan desain,
kebijakan deploy, dsb.), lihat CLAUDE.md.
SIGAP punya dua bagian yang di-deploy secara terpisah dan tidak saling otomatis — ini poin paling penting untuk dipahami sebelum menyentuh kode:
flowchart LR
subgraph FE["Frontend — statis, TANPA build step"]
A["index.html + *.js<br/>(React 18 + Babel Standalone lewat CDN)"]
SW["sw.js (service worker)<br/>+ manifest.json (PWA)"]
R["api/push-send.js<br/>(fungsi Vercel — sign & kirim Web Push)"]
end
subgraph BE["Backend — Google Apps Script Web App"]
B["Code.gs<br/>(router doGet / doPost)"]
C["Auth.gs<br/>(sesi & password)"]
D["Utils.gs<br/>(helper, RBAC, rate limit)"]
N["Notifikasi.gs<br/>(siapa dinotifikasi & antrean)"]
end
E[("Google Sheet<br/>15 sheet — lihat SCHEMA.md")]
A -- "fetch() JSON<br/>+ API_TOKEN + sessionToken" --> B
B --> C
B --> D
B --> N
B <--> E
N -- "UrlFetchApp + secret" --> R
R -- "Web Push (VAPID)" --> SW
Frontend (index.html, *.js) | Backend (Code.gs, Auth.gs, Utils.gs, Notifikasi.gs) | |
|---|---|---|
| Hosting | Situs statis (Vercel) — api/push-send.js juga jalan di sini, sebagai fungsi serverless | Google Apps Script Web App, terikat ke satu Google Sheet |
Deploy saat push ke main | Otomatis | Tidak pernah otomatis — wajib clasp manual atau salin-tempel ke editor Apps Script, lihat CLAUDE.md |
| Database | — (tidak menyimpan state) | Google Sheet itu sendiri (SpreadsheetApp) |
Push Notification (lihat CLAUDE.md)
menambah satu jalur: Notifikasi.gs menghitung siapa yang berhak dinotifikasi
lalu mengantre di Sheet, sebuah trigger waktu memanggil api/push-send.js
(fungsi Vercel di project yang sama dengan frontend) untuk benar-benar
menandatangani & mengirim Web Push-nya — Apps Script sendiri tidak punya
primitif kripto yang dibutuhkan untuk itu.
Alur singkat: browser memuat index.html, yang men-fetch() seluruh file
.js lain secara berurutan, menggabungkannya, lalu mentranspile JSX-nya
lewat Babel di browser (tidak ada bundler). Setiap aksi (login, catat
data, dst.) dikirim sebagai fetch() JSON ke satu Web App URL yang sama,
digembok token API + sesi guru yang login.
Rincian tiap fitur (siapa boleh apa, alur kerja lengkap) ada di docs/PANDUAN-FITUR-DAN-ALUR-KERJA.md.
Repo ini tidak punya build step untuk frontend (lihat komentar di
index.html), dan backend-nya adalah Google Apps Script — bukan server
Node yang bisa dijalankan begitu saja secara lokal. Yang bisa dilakukan
sepenuhnya secara lokal adalah menjalankan test suite:
npm install # sekali, untuk @babel/core + @babel/preset-react (test) & clasp
npm test # menjalankan seluruh test (node --test tests/*.test.js)
Test suite ini memuat Utils.gs/Auth.gs/Code.gs yang sungguhan
lewat vm.runInContext dengan layanan Apps Script (SpreadsheetApp,
CacheService, dst.) di-stub — jadi yang diuji benar-benar logika backend
yang nanti berjalan di Apps Script, bukan tiruannya. Untuk menjalankan satu
file test saja:
node --test tests/password.test.js
node --test tests/hapus-data.test.js
Untuk melihat tampilan frontend secara utuh (bukan sekadar test), perlu backend yang benar-benar hidup:
Code.gs/Auth.gs/Utils.gs,
set API_TOKEN di Script Properties, lalu deploy sebagai Web App
(lihat bagian clasp di CLAUDE.md)..clasp.json.example → .clasp.json, isi scriptId project Anda
(dipakai clasp, bukan dibaca browser).API_URL/API_TOKEN di config.js supaya menunjuk ke Web App
Anda sendiri, lalu buka index.html lewat static server pilihan Anda
(mis. npx serve .) — jangan buka lewat file:// langsung, sebagian
browser memblokir fetch() dari origin file://.Tidak punya Node/clasp terpasang secara lokal (atau butuh clasp login
interaktif dari lingkungan yang tidak punya browser)? Buka repo ini lewat
Code → Create codespace on main di GitHub — .devcontainer/devcontainer.json
sudah menyiapkan Node 20 + npm install otomatis. Lihat
CLAUDE.md untuk
langkah clasp login --no-localhost dan push/deploy dari dalam Codespace.
Code.gs, Auth.gs, Utils.gs, backend (Google Apps Script)
Notifikasi.gs
index.html, *.js frontend (React tanpa bundler)
manifest.json, sw.js, icons/ PWA (dipakai fitur Notifikasi Push)
api/push-send.js fungsi serverless Vercel — kirim Web Push sungguhan
tests/ test backend (vm.runInContext) & smoke-test render frontend
docs/ panduan fitur untuk pengguna non-teknis
.github/workflows/ CI (test.yml), deploy backend manual (deploy-gas.yml),
& deteksi drift versi backend (check-backend-drift.yml)
SCHEMA.md struktur lengkap 15 sheet Google Sheet
API.md referensi lengkap seluruh action doGet/doPost
SIGAP terbuka untuk diadaptasi oleh sekolah lain sebagai bagian dari semangat berbagi praktik baik inovasi daerah. Atribusi pengembang asal di atas diharapkan tetap dicantumkan pada replikasi/turunan aplikasi ini — lihat halaman Tentang SIGAP di dalam aplikasi (dari layar Login atau tab Beranda) untuk versi lengkapnya. Ini murni identitas/provenance pengembang, bukan klaim kepemilikan HKI secara hukum.