185 lines
5.1 KiB
Markdown
185 lines
5.1 KiB
Markdown
# Report Outline (BAB 1–4)
|
||
|
||
## BAB 1 - Pendahuluan
|
||
|
||
### 1.1 Latar Belakang
|
||
|
||
- Pentingnya pendataan server, layanan, domain, dan dokumentasi internal secara terpusat
|
||
- Kebutuhan dashboard web sederhana untuk membantu admin memantau aset server private
|
||
- Kebutuhan pemeriksaan DNS dasar agar domain dapat diverifikasi terhadap IP server yang diharapkan
|
||
|
||
### 1.2 Rumusan Masalah
|
||
|
||
- Bagaimana membangun aplikasi web terproteksi untuk mengelola server, service, domain, dan note dalam satu dashboard?
|
||
- Bagaimana memeriksa apakah domain mengarah ke IP server yang benar secara sederhana?
|
||
- Bagaimana menampilkan relasi data, misalnya note per server, langsung dari halaman detail?
|
||
|
||
### 1.3 Batasan Masalah
|
||
|
||
- Aplikasi berupa dashboard CRUD + monitoring ringan
|
||
- Hanya satu aktor admin
|
||
- DNS checking terbatas pada A record / IPv4
|
||
- Tidak mencakup SSH, deployment automation, Docker orchestration, atau reverse proxy management
|
||
- Fokus implementasi pada web app + server app + PostgreSQL
|
||
|
||
### 1.4 Tujuan
|
||
|
||
- Membangun dashboard manajemen layanan server private berbasis web
|
||
- Menyediakan CRUD untuk server, service, domain, dan note
|
||
- Menyediakan pemeriksaan DNS sederhana dan ringkasan dashboard
|
||
|
||
### 1.5 Manfaat
|
||
|
||
- Membantu admin mendokumentasikan dan memantau aset server
|
||
- Membantu proses pembelajaran relasi data, CRUD, auth, dan monitoring dasar
|
||
- Menjadi contoh implementasi full-stack berbasis React, tRPC, Drizzle, dan PostgreSQL
|
||
|
||
## BAB 2 - Tinjauan Pustaka
|
||
|
||
### 2.1 Sistem Informasi Berbasis Web
|
||
|
||
### 2.2 Konsep CRUD
|
||
|
||
### 2.3 Konsep Dashboard Monitoring
|
||
|
||
### 2.4 DNS dan Resolusi A Record
|
||
|
||
### 2.5 Otentikasi pada Aplikasi Web
|
||
|
||
### 2.6 Teknologi yang Digunakan
|
||
|
||
- React
|
||
- TanStack Router
|
||
- TanStack Query
|
||
- tRPC
|
||
- PostgreSQL
|
||
- Drizzle ORM
|
||
- better-auth
|
||
- Effect
|
||
- Bun
|
||
|
||
## BAB 3 - Analisis dan Perancangan Sistem
|
||
|
||
### 3.1 Analisis Kebutuhan
|
||
|
||
#### Kebutuhan Fungsional
|
||
|
||
- Admin dapat sign in untuk mengakses dashboard
|
||
- Sistem mengarahkan `/` ke `/dashboard` atau `/login` berdasarkan sesi
|
||
- Admin dapat mengelola data server
|
||
- Admin dapat mengelola data service
|
||
- Admin dapat mengelola data domain
|
||
- Admin dapat menjalankan DNS check untuk domain
|
||
- Admin dapat mengelola note server
|
||
- Admin dapat melihat note yang terkait langsung dari halaman detail server
|
||
- Sistem menampilkan ringkasan dashboard dan data terbaru
|
||
|
||
#### Kebutuhan Non-Fungsional
|
||
|
||
- Antarmuka sederhana dan student-friendly
|
||
- Relasi data dipilih melalui select input agar mengurangi kesalahan input ID manual
|
||
- Data list ditampilkan dengan urutan stabil
|
||
- Aksi hapus memakai konfirmasi dua langkah berbasis ikon
|
||
|
||
### 3.2 Perancangan Sistem
|
||
|
||
- Use case diagram
|
||
- Class diagram
|
||
- Activity diagram
|
||
- State chart diagram
|
||
- Sequence diagram
|
||
- Collaboration diagram
|
||
|
||
### 3.3 Perancangan Database
|
||
|
||
- Tabel `server`
|
||
- Tabel `service`
|
||
- Tabel `domain`
|
||
- Tabel `note`
|
||
- Tabel auth bawaan better-auth
|
||
- Relasi:
|
||
- server -> services
|
||
- server -> notes
|
||
- service -> domains
|
||
- Aturan cascade delete pada relasi utama
|
||
|
||
### 3.4 Perancangan Antarmuka
|
||
|
||
- Halaman login (`/login`)
|
||
- Redirect root (`/`)
|
||
- Dashboard summary (`/dashboard`)
|
||
- Halaman list/detail/form server
|
||
- Halaman list/detail/form service
|
||
- Halaman list/detail/form domain
|
||
- Halaman list/detail/form note
|
||
- Section note terkait pada detail server
|
||
|
||
## BAB 4 - Implementasi dan Pengujian
|
||
|
||
### 4.1 Implementasi Sistem
|
||
|
||
#### Backend
|
||
|
||
- Router tRPC untuk server, service, domain, note, dan dashboard summary
|
||
- Validasi relasi parent-child pada create/update
|
||
- DNS check menggunakan resolver IPv4 A record
|
||
- Persist hasil DNS check ke database
|
||
|
||
#### Frontend
|
||
|
||
- Protected routes untuk area dashboard
|
||
- CRUD forms dengan TanStack Form
|
||
- Select input untuk relasi:
|
||
- service -> server
|
||
- domain -> service
|
||
- note -> server
|
||
- Resource tables dengan stable row key dan ordering stabil dari backend
|
||
- Delete action berbasis ikon dengan dua klik konfirmasi
|
||
- DNS status pada domain list sebagai tombol check dengan styling status badge
|
||
|
||
#### Authentication
|
||
|
||
- better-auth client + protected route redirect
|
||
- Akses tanpa sesi diarahkan ke `/login`
|
||
|
||
### 4.2 Pengujian
|
||
|
||
- Pengujian login admin
|
||
- Pengujian CRUD server
|
||
- Pengujian CRUD service
|
||
- Pengujian CRUD domain
|
||
- Pengujian CRUD note
|
||
- Pengujian select relasi pada form
|
||
- Pengujian DNS check domain
|
||
- Pengujian note terkait pada halaman detail server
|
||
- Pengujian ringkasan dashboard
|
||
- Pengujian typecheck web dan API
|
||
|
||
### 4.3 Hasil Pengujian
|
||
|
||
- Tabel atau screenshot untuk setiap skenario berhasil
|
||
- Bukti hasil DNS check (`MATCH`, `MISMATCH`, `UNRESOLVED`)
|
||
- Bukti relasi data tampil benar di halaman detail dan list
|
||
|
||
### 4.4 Evaluasi
|
||
|
||
#### Kelebihan
|
||
|
||
- Struktur data relasional jelas
|
||
- UI CRUD sudah konsisten dengan select untuk foreign key utama
|
||
- Ringkasan dashboard dan detail page saling terhubung
|
||
- DNS checking sudah terintegrasi langsung di alur domain
|
||
|
||
#### Keterbatasan
|
||
|
||
- DNS checking hanya untuk A record / IPv4
|
||
- Belum ada multi-role auth
|
||
- Belum ada fitur pagination, search, atau sorting manual dari UI
|
||
- Full workspace typecheck masih terhalang issue pre-existing pada `apps/desktop`
|
||
|
||
#### Saran Pengembangan
|
||
|
||
- Tambah filter, search, dan pagination
|
||
- Tambah histori DNS check
|
||
- Tambah role/permission management
|
||
- Tambah monitoring yang lebih luas selain DNS A record
|