MyCheck
ChecklistHandoverIncidentLaporan
MyCheck Docs
MyCheck Docs
Kembali ke aplikasiMasukDokumentasi MyCheck
InstalasiMulai CepatDraft dan Pemulihan
AutentikasiMengelola OperasionalDeployment
Endpoint APIKonfigurasi
Arsitektur
Pemecahan MasalahChangelog
Explanation Konsep & Teori

Arsitektur

mycheck adalah satu aplikasi Next.js App Router dengan antarmuka PWA mobile-first. API, UI petugas/admin, dan dokumentasi berada dalam satu repository.

Lapisan aplikasi

  • app/ berisi halaman, layout, dan route handler API.
  • components/ berisi komponen antarmuka.
  • lib/ berisi autentikasi, validasi, akses data, serta integrasi Google.
  • content/docs/ berisi file MDX dokumentasi yang disajikan Fumadocs di bawah /docs.

Route dokumentasi memakai catch-all /docs/[[...mdxPath]]. Halaman MDX didaftarkan secara eksplisit di route agar URL dokumentasi tetap selaras dengan halaman yang tersedia.

Data dan penyimpanan

Data aplikasi disimpan di Google Sheets, bukan database SQL. Spreadsheet Registry menyimpan data global; setiap cabang menggunakan spreadsheet tersendiri. lib/store.ts menyediakan operasi atas helper Google Sheets. Struktur sheet dan kolomnya adalah bagian dari kontrak aplikasi.

Foto disimpan pada Google Drive. Pengambilan foto dilakukan melalui route API aplikasi sehingga pemeriksaan akses dapat diterapkan di server.

Identitas dan akses

Login menggunakan username dan PIN dari Registry. Server membuat cookie sesi bertanda tangan HMAC-SHA256. Route API melakukan pemeriksaan sesi, peran, dan akses cabang sesuai fungsinya.

Batasan desain

Google Sheets tidak menyediakan transaksi atau penguncian baris seperti database relasional. Validasi bisnis dilakukan di aplikasi; operasi lintas sheet perlu mempertimbangkan kegagalan parsial. Perubahan template tidak mengubah snapshot template pada shift yang sudah berjalan.

Konfigurasi

Environment dan akses Google yang digunakan mycheck.

Pemecahan Masalah

Pemeriksaan awal untuk masalah penggunaan dan deployment.

On this page

ArsitekturLapisan aplikasiData dan penyimpananIdentitas dan aksesBatasan desain