π USER GUIDE β Aplikasi Advokat (Multi Firma Advokat)
Panduan pengguna lengkap seluruh modul aplikasi: dari pendaftaran, pembuatan surat kuasa, surat lanjutan (somasi/litigasi/replik/duplik), arsip dokumen, keuangan & pajak, invoice, portal klien, hingga panel superadmin dan aplikasi mobile.
Panduan ini menjelaskan cara memakai aplikasi. Untuk instalasi & konfigurasi teknis (Docker, Google OAuth, Midtrans), lihat
README.md.π· Screenshot tiap modul tersedia di
docs/screenshots/dan disematkan pada tiap bab di bawah.
Daftar Isi
- Peran Pengguna & Hak Akses
- Memulai: Pendaftaran, Login & Onboarding Firma
- Dashboard
- Surat Kuasa β Membuat (4 Langkah)
- Jenis Surat β Kelola & Workflow Status
- Edit Surat, Timeline & Tanda Tangan Basah
- Template Poin & Generate AI
- Data Klien
- Arsip Dokumen (Berversi + Kerahasiaan)
- Jadwal Sidang & Pengingat
- Keuangan & Pajak
- Invoice (Dua Arah)
- Laporan
- E-Materai (Opsional)
- Firma & Pengaturan
- Langganan & Tagihan (Midtrans)
- Panel Superadmin
- Portal Klien
- Aplikasi Mobile (Flutter)
- Alur Kerja Harian (Contoh Skenario)
- Troubleshooting & FAQ
1. Peran Pengguna & Hak Akses
Aplikasi mendeteksi peran otomatis dari email yang terdaftar. Satu tombol login Google untuk semua peran.
| Peran | Keterangan | Akses utama |
|---|---|---|
| superadmin | Pemilik sistem (owner). Mengelola semua firma. | Semua halaman + Superadmin + Pengguna + AI Cache |
| leader | Pemimpin firma. | Dashboard, Surat, Klien, Keuangan, Invoice, Laporan, Template, Firma & Pengaturan, Langganan |
| advokat | Pengacara; dapat menjadi penandatangan. | Dashboard, Surat, Klien, Laporan, Template |
| paralegal | Asisten advokat. | Dashboard, Surat, Klien |
| staff | Staf administrasi. | Dashboard, Surat (operasional harian) |
| klien | Penerima jasa firma β masuk via Portal Klien. | Portal (lihat surat, timeline, dokumen miliknya) |
Aturan penting:
- Data setiap firma ter-scope: klien, surat, dokumen, keuangan, dan pengaturan firma lain tidak dapat dilihat.
- Halaman inti (
dashboard,surat,buat,edit,dokumen,sidang,invoice, dll.) terbuka untuk semua peran internal. Halaman manajemen dibatasi sesuai tabel di atas. - Firma dengan langganan kedaluwarsa tetap bisa login, tetapi halaman inti diblokir ke halaman Langganan & Tagihan (kecuali superadmin).
2. Memulai: Pendaftaran, Login & Onboarding Firma


2.1 Pendaftaran baru (trial otomatis)
- Buka landing page (mis.
https://advokat.sapulidi.co.idatau domain firma Anda). - Klik βCoba Gratis 1 Bulanβ atau pilih salah satu kartu paket.
- Klik Masuk dengan Google dan pilih akun Google Anda.
- Bila email Anda belum terdaftar, akun tercatat otomatis dan Anda dibawa ke langkah 2.3.
β Trial 30 hari langsung aktif tanpa menunggu persetujuan β dibuat otomatis saat firma dibuat. Trial hanya berlaku sekali per firma.
2.2 Login untuk pengguna lama
- Buka
login.phpβ Masuk dengan Google. - Peran (leader/advokat/paralegal/staff/superadmin) terdeteksi otomatis dari email.
- Email yang sudah didaftarkan tetapi menunggu persetujuan leader akan melihat pesan βmenunggu persetujuanβ β hubungi leader firma Anda.
2.3 Onboarding: Buat Firma (pengguna tanpa firma)
Bila Anda belum tergabung di firma mana pun, sistem membawa Anda ke halaman Buat Firma Hukum Baru dengan pesan:
π’ βAnda belum tergabung di firma mana pun β lengkapi profil firma Anda di bawah.β
Isi form:
| Field | Keterangan |
|---|---|
| Nama Firma * | Wajib. Nama resmi kantor advokat. |
| Kota | Kota domisili kantor (dipakai default kota titimangsa). |
| Kode Dokumen | Kode penomoran surat, mis. ASH β 001/ASH/IX/2026. Default SK. |
| Deskripsi Kantor | Tagline, mis. Advokat & Konsultan Hukum β...β. |
| Alamat Kantor | Alamat lengkap (tampil di kop & footer surat). |
| Telepon / Email | Kontak kantor. |
| Footer Surat | 1β3 baris teks footer pada PDF surat. |
Klik Buat Firma β Anda otomatis menjadi leader firma + trial 30 hari aktif, lalu diarahkan ke Dashboard dengan konfirmasi:
π βFirma berhasil dibuat β trial 30 hari aktif.β
2.4 Langkah pertama setelah firma jadi (checklist)
- Firma & Pengaturan β upload logo, lengkapi profil & gaya surat (bab 15).
- Firma & Pengaturan β tambahkan anggota (advokat/paralegal/staff) + upload scan tanda tangan advokat (bab 15.2).
- Klien β tambahkan data klien (bab 8).
- + Surat Kuasa (Form Lengkap) β buat surat pertama (bab 4).
3. Dashboard

Halaman pertama setelah login. Ringkasan seluruh aktivitas firma.
Isi halaman:
- Banner status langganan β sisa hari trial / peringatan kedaluwarsa + tombol perpanjang.
- π
Sidang Terdekat β maksimal 5 agenda terjadwal, dengan badge
HARI INI/BESOK. - β³ Batas Waktu Replik/Duplik β surat lanjutan yang batas waktunya mendekat.
- Kartu statistik β jumlah Surat Kuasa, Jenis Surat Lain, Klien Aktif, Arsip Dokumen, dan Pendapatan Bulan Ini.
- Grafik 30 hari terakhir β jumlah surat diterbitkan per hari (Surat Kuasa vs jenis lain).
- Perlu Tindak Lanjut β surat berstatus draf/review/proses/final yang masih menunggu.
- Komposisi Surat β proporsi per jenis surat.
- Keuangan Bulan Ini β pendapatan, biaya, akomodasi, pajak, pendapatan neto.
- Aktivitas Terbaru β 7 surat terakhir yang dibuat.
- Tombol aksi cepat: οΌ Buat Surat Kuasa (form cepat), + Surat Kuasa (Form Lengkap) (form 4 langkah), π¨ PDF Keuangan (laporan bulan berjalan berkop firma).
Mode tampilan (diatur di Firma & Pengaturan): menu navigasi di sidebar kiri (default), topbar atas, atau keduanya. Tema terang/gelap via tombol π di kanan atas.
4. Surat Kuasa β Membuat (4 Langkah)

Buka dari menu Surat β Jenis Surat β + Surat Kuasa (Form Lengkap), atau tombol + Surat Kuasa (Form Lengkap) di Dashboard. Form dibagi 4 langkah (stepper di atas β klik untuk lompat antar langkah):
Langkah 1 β Upload KTP Pemberi Kuasa
- Klik / drag & drop foto atau scan KTP (JPG/PNG, maks 5 MB).
- Data KTP dibaca otomatis (OCR) bila server mendukung (tesseract-ind), lalu ditempelkan otomatis ke form identitas di Langkah 2.
- Bila OCR tidak tersedia, isi manual di Langkah 2 β tidak menghalangi proses.
Langkah 2 β Identitas Pemberi Kuasa
- Pilih Klien Tersimpan (opsional) β memilih klien otomatis mengisi Nama Lengkap, NIK, Tempat Lahir, Tanggal Lahir, Jenis Kelamin, Agama, dan Pekerjaan.
- Koreksi hasil OCR bila perlu. Field: Nama Lengkap *, NIK, Tempat/Tanggal Lahir, Jenis Kelamin, Agama (dropdown + βLainnyaβ), Pekerjaan (dropdown + βLainnyaβ), Alamat KTP.
Langkah 3 β Jenis Surat & Poin Isi (template editable)
- Kelompok 1 β π Surat Kuasa (UMUM / KHUSUS / ISTIMEWA):
- UMUM β pengurusan & administrasi luas.
- KHUSUS β untuk 1 tugas spesifik / urusan hukum.
- ISTIMEWA β jual beli aset / tindakan hukum berat.
- Kelompok 2β4 β 20 jenis surat lain dari master (LIHAT BAB 5): Litigasi (SKK, GGT, JWB, RPL, DPL, MB, KMB), Non-Litigasi (LO, LDD, SOM, MoU, PKS, NDA), Korespondensi (SPw, SPm, SKet, SPb, SP, SM, MEM).
- Poin Isi Surat terisi otomatis dari template sesuai jenis yang dipilih β setiap poin tetap bisa diedit, ditambah (+ Tambah Poin), atau dihapus.
- Tombol π€ Generate AI β membuat draf poin isi dengan Gemini (butuh API key, lihat bab 7).
- Bila poin sudah terisi lalu jenis diganti, popup konfirmasi muncul di tengah
halaman: βGanti template poin sesuai jenis
?**β β klik Ya, Ganti Template untuk memuat template baru, atau Batal untuk mempertahankan poin lama (pilihan jenis juga dikembalikan). Bila poin masih kosong, template langsung dimuat tanpa konfirmasi. - Bila belum ada jenis yang dipilih saat menyimpan, muncul peringatan untuk memilih jenis terlebih dahulu (scroll otomatis ke Langkah 3).
- Label tombol simpan menyesuaikan pilihan: πΎ Simpan Surat Kuasa (jenis SK) atau
πΎ Simpan Surat (jenis lain) β surat jenis lain tersimpan dengan nomor berkode
jenisnya (mis.
SOM/ASH/09/2026) dan membuka form edit surat lanjutan.
Langkah 4 β Penandatangan (Penerima Kuasa) & Format Surat
- Advokat Penanda Tangan * β centang satu atau lebih advokat (leader tercentang default). Urutan centang = urutan tanda tangan di PDF (mendukung multi-advokat: Advokat 1, Advokat 2, dst.).
- Kota Titimangsa (default: kota firma), Tanggal Surat (default: hari ini).
- Kode jenis surat otomatis (readonly), mis.
UMUM,KHUSUS,SOM. - Untuk jenis surat lain: muncul field Tujuan β Nama Pihak, Tujuan β Alamat, dan Perihal.
- Paragraf Pembuka (opsional β kosongkan untuk format baku) dan Penutup (default baku firma, dapat diubah per surat).
Klik πΎ Simpan Surat Kuasa β nomor surat dibuat otomatis dari format firma
({NO}/{KODE}/{ROMAWI_BULAN}/{TAHUN}) dan status awal draf (Drafting).
5. Jenis Surat β Kelola & Workflow Status

Menu Surat β Jenis Surat berisi dua tabel terpadu.
5.1 Tabel 1 β π Surat Kuasa (UMUM / KHUSUS / ISTIMEWA)
Kolom: Nomor, Jenis, Pemberi Kuasa, Penandatangan, Tanggal, Status, Aksi. Tombol aksi per baris:
- βοΈ Edit β form edit lengkap (
edit.php?id=). - π View β pratinjau HTML (
preview.php?id=). - π Unduh PDF β PDF berkop siap cetak (
cetak.php?id=&download=1). - π Hapus β dengan konfirmasi.
5.2 Tabel 2 β ποΈ Jenis Surat Lain (Litigasi Β· Non-Litigasi Β· Korespondensi)
- Filter berdasarkan jenis (dikelompokkan per klasifikasi), status, dan pencarian bebas (nomor / perihal / klien).
- Kolom: Nomor (+ tanda βοΈ bila ada scan TTD), Jenis (badge kode + nama + klasifikasi), Klien, Perihal, Tanggal, Status (workflow), Aksi.
- Tombol aksi sama seperti tabel Surat Kuasa, tetapi edit ke
edit.php?id=&lanjutan=1(bukan modal).
5.3 Master 20 Jenis Surat Lain
| Klasifikasi | Kode β Jenis |
|---|---|
| Litigasi | SKK Surat Kuasa Khusus Β· GGT Gugatan/Permohonan Β· JWB Jawaban Tergugat Β· RPL Replik Β· DPL Duplik Β· MB Memori Banding/Kasasi Β· KMB Kontra Memori Banding/Kasasi |
| Non-Litigasi | LO Legal Opinion Β· LDD Legal Due Diligence Β· SOM Surat Somasi/Peringatan Β· MoU Memorandum of Understanding Β· PKS Perjanjian Kerja Sama Β· NDA Non-Disclosure Agreement |
| Korespondensi | SPw Surat Penawaran Jasa Β· SPm Surat Permohonan Β· SKet Surat Keterangan Β· SPb Surat Pemberitahuan (progress report) Β· SP Surat Pengantar Β· SM Surat Mandat/Tugas Β· MEM Memorandum Internal |
5.4 Workflow Status Surat
Status diubah lewat dropdown langsung di tabel atau di halaman Edit. Setiap perubahan mencatat timeline otomatis:
draf (Drafting) β review (Review Partner) β proses (Proses) β final (Final)
β ditandatangani (Signed) β terkirim (Sent / Registered)
β batal (Batal) β dari status mana pun
Prinsip: Drafting β Review Partner β Signed β Sent/Registered β sesuai alur persuratan firma hukum. Surat berstatus
final/ditandatanganiadalah kandidat e-materai (bab 14).
6. Edit Surat, Timeline & Tanda Tangan Basah

Buka dari tombol Edit di Jenis Surat (edit.php?id=..., surat lanjutan:
edit.php?lanjutan=1&id=...). Halaman dibagi dua kolom:
Kolom kiri β Timeline & Status Surat
- Dropdown ubah status (draf β review β proses β final β ditandatangani β terkirim / batal).
- Riwayat lengkap setiap perubahan status + catatan + waktu + pelakunya.
Kolom kanan β Form isi surat
- Identitas pemberi kuasa, jenis & poin isi (editable), penandatangan multi-advokat (chip, urutan sesuai centang), kota/tanggal titimangsa, pembuka & penutup.
- Simpan β perubahan tercatat di audit log.
Upload scan Tanda Tangan Basah β
Setelah surat dicetak PDF dan ditandatangani basah oleh klien:
- Di halaman Edit, cari βUpload Scan Tanda Tangan Basah (PNG/JPG)β.
- Upload hasil scan halaman tanda tangan.
- File tersimpan ke nomor surat klien tersebut, status otomatis berubah menjadi ditandatangani (Signed) + tercatat di timeline (βScan tanda tangan basah diuploadβ).
Scan TTD advokat (bukan klien) diatur per anggota di Firma & Pengaturan dan otomatis tertanam di PDF (bab 15.2).
7. Template Poin & Generate AI

7.1 Template Poin (menu π§© Template Poin)
- Setiap jenis surat memiliki template poin baku (global, dari master jenis) dan dapat memiliki override per firma.
- Bila firma mengubah template, surat baru memakai versi firma; template global tetap tersedia sebagai default semua firma lain.
- Edit di sini agar tidak perlu mengulang pengetikan di setiap surat.
7.2 Generate AI (Gemini)
- Tombol π€ Generate AI tersedia di Langkah 3 form buat surat.
- API key Gemini dikelola per firma di Firma & Pengaturan β AI (Gemini) API Keys (lihat bab 15.4). Banyak key membentuk satu pool per firma dan dipakai bergantian secara acak; statistik pemakaian/gagal tiap key terekam.
- Hasil generate menjadi draf poin isi β selalu review dan edit sebelum dipakai.
8. Data Klien

Menu Klien β Data Klien (semua peran internal; hapus hanya leader).
Menambah / mengedit klien
- Klik + Tambah Klien (atau βοΈ pada baris klien).
- Scan KTP (opsional) β drop foto KTP, data terbaca otomatis (OCR).
- Isi: Nama Lengkap *, NIK, Tempat/Tanggal Lahir, Jenis Kelamin, Agama, Pekerjaan, Alamat, Telepon, Email, Catatan.
- Portal klien β isi Email Login Portal + password agar klien dapat masuk ke
Portal (bab 18). Badge kolom Portal menunjukkan
β portal/nonaktif.
Aksi per klien
- π Dokumen β buka arsip dokumen klien tersebut.
- π Buat Surat Kuasa β langsung ke form buat surat dengan klien terpilih (identitas terisi otomatis).
- π Hapus (leader saja) β dengan konfirmasi, beserta relasinya.
Gunakan kolom pencarian (nama / NIK / telepon) untuk klien yang banyak.
9. Arsip Dokumen (Berversi + Kerahasiaan)

Menu Klien β Arsip Dokumen. Digital repository dokumen klien: putusan pengadilan, somasi, litigasi, replik, duplik, dan lainnya β lengkap dengan riwayat versi (draf lama tidak hilang).
Upload dokumen
- Pilih klien di dropdown kiri atas.
- Klik β¬ Upload Dokumen β isi Kategori (putusan/somasi/litigasi/replik/duplik/ lainnya), Judul, Nomor Dokumen, Keterangan, pilih file.
- Folder penyimpanan otomatis ter-scope firma & per tanggal.
Kompresi gambar otomatis β
Semua gambar yang diunggah β KTP, tanda tangan, logo, dokumen berbentuk gambar, termasuk dari aplikasi mobile β dikompresi otomatis di server:
- Foto/scan dikonversi ke JPEG (kualitas 82) dan metadata EXIF dibuang (data lokasi & perangkat ikut hilang β lebih aman dan berkas jauh lebih kecil).
- Gambar lebih dari 2048 px otomatis diperkecil; PNG diperkecil tanpa penurunan kualitas (lossless).
- PDF tidak diubah, dan bila kompresi gagal berkas asli tetap tersimpan β proses upload tidak pernah gagal karena kompresi.
Riwayat versi (version control) β
- Badge v1/v2/... pada tiap baris = jumlah versi.
- Tombol βΊ Riwayat versi membuka daftar semua versi (file, ukuran, waktu, uploader, catatan).
- οΌ Upload versi baru β menambah versi; versi terbaru menjadi versi aktif.
- Pulihkan versi lama β dipulihkan sebagai versi baru (versi aktif tidak tertimpa).
- Hapus versi individual bila perlu.
Kerahasiaan dokumen β
- Tombol π menandai dokumen RAHASIA (tanda π + label di tabel).
- Dokumen rahasia hanya dapat diunduh oleh leader / superadmin; peran lain melihat βπ akses terbatasβ.
- Dokumen rahasia tidak pernah diekspos ke Portal Klien (prinsip kerahasiaan penyimpanan cloud).
10. Jadwal Sidang & Pengingat

Menu Beranda β Jadwal Sidang.
Kelola jadwal
- οΌ Tambah Sidang β isi Perkara *, Nomor Perkara, Pengadilan, Agenda, Tanggal *, Jam, Klien terkait, Status (terjadwal/selesai/ditunda/batal), Catatan.
- Kartu Terdekat menampilkan agenda mendatang dengan tombol Edit/Hapus.
- Kalender bulanan β navigasi βΉ βΊ antar bulan; setiap tanggal menampilkan event: π¦ Sidang Β· β Selesai Β· βΈ Ditunda Β· β Batal Β· β³ Batas replik/duplik (klik untuk membuka surat terkait).
Pengingat otomatis β
- Pengingat sidang H-1/H-0 β notifikasi ke leader untuk sidang besok dan hari ini (idempoten, tidak dobel per hari).
- Pengingat batas waktu replik/duplik H-1 β bila surat lanjutan memiliki batas waktu.
- Jadwal sidang mendekat juga muncul sebagai widget Sidang Terdekat di Dashboard.
- Skrip
cron_pengingat_sidang.phptersedia untuk eksekusi terjadwal via cron server (opsional β pengingat juga jalan otomatis saat Dashboard dibuka).
11. Keuangan & Pajak

Menu Keuangan β Transaksi & Pajak. Pilih periode (bulan/tahun) β Tampilkan.
Ringkasan & perhitungan pajak (otomatis)
| Baris | Sumber |
|---|---|
| Pendapatan (honorarium jasa hukum) | Transaksi jenis pendapatan |
| Biaya operasional / Akomodasi | Transaksi jenis biaya / akomodasi |
| Laba bersih sebelum pajak | Pendapatan β biaya β akomodasi |
| PPh Final 4(2) jasa profesi (default 2% Γ pendapatan) | Tarif firma, dapat diubah |
| PPN keluaran (default 11% Γ pendapatan) | Tarif firma, dapat diubah |
| Pajak harus dibayar bulan ini | PPh + PPN |
| Saldo neto setelah pajak | Laba bersih β pajak |
- Klik βTarif pajak & catatan kepatuhanβ untuk mengubah tarif per firma: PPN %, PPh 4(2) UMK % (0,5%, PP 55/2022), PPh 4(2) profesi % (2%).
- Catatan kepatuhan tersedia di halaman (bukan nasihat pajak β sesuaikan status NPWP/PKP firma dan konsultasikan ke konsultan pajak).
Transaksi
- οΌ Tambah Transaksi β Tanggal *, Jenis (pendapatan/biaya/akomodasi) *, Kategori, Uraian, Jumlah Γ Kuantitas, Klien (opsional).
- Grafik pendapatan vs pengeluaran bulan berjalan.
- π¨ PDF β laporan keuangan bulan terpilih berkop firma, siap cetak/arsip.
- Dashboard juga menampilkan ringkasan bulan berjalan + tombol π¨ PDF Keuangan.
12. Invoice (Dua Arah)

Menu Keuangan β Invoice. Dua arah tagihan dalam satu halaman:
| Arah | Siapa yang bisa | Fungsi |
|---|---|---|
| Firma β Klien | Leader/advokat/staff | Tagihan jasa hukum ke klien |
| PT β Firma | Hanya superadmin | Tagihan langganan platform dari PT. Kebon Teknologi Nusantara ke firma |
Kartu ringkasan di atas: Belum Lunas, Sudah Lunas, Jumlah Invoice.
Membuat invoice
- Klik οΌ Buat Invoice (modal).
- Penerima: pilih Klien (data terisi otomatis) atau isi manual; untuk PT β Firma, isi nama firma penerima.
- Tanggal, Jatuh Tempo, Alamat Penerima.
- Item Tagihan β uraian, kuantitas, satuan, harga (οΌ Tambah Item untuk beberapa item).
- PPN on/off β centang PPN (aktif/nonaktif) bila ingin kena PPN, atur tarif (default 11%); biarkan kosong untuk tanpa PPN.
- Metode pembayaran & catatan (opsional).
- Simpan β nomor invoice otomatis, mis.
INV/F1/2026/09/0001.
Mengelola invoice
- Status via dropdown:
draf β terkirim β lunas(ataubatal). Terlihat sebagai badge warna. - π PDF β cetak/unduh PDF berkop firma lengkap dengan baris TERBILANG.
- π§ Kirim ke email klien (arah Firma β Klien, non-batal) β PDF terkirim sebagai lampiran; pesan sukses/gagal tampil di halaman.
- βοΈ Edit β hanya invoice berstatus
draf. - π Hapus β hanya
draf. - Invoice langganan otomatis: setiap pembayaran Midtrans lunas otomatis membuat invoice PT β Firma berstatus lunas (idempoten β tidak dobel) + mencatat biaya langganan ke jurnal keuangan firma.
13. Laporan

Menu Beranda β Laporan & Rekap. Pilih bulan/tahun β Tampilkan.
- Rekap Surat Kuasa per Bulan (12 bulan terakhir) β kolom Umum, Khusus, Istimewa, Total, Ditandatangani, Batal.
- Daftar Surat Kuasa bulan terpilih β nomor, jenis, pemberi kuasa, penandatangan, tanggal, status.
- Daftar Klien β rekap klien firma.
- Tombol π¨ Cetak β cetak laporan lewat dialog print browser (layout siap cetak).
Untuk laporan keuangan berkop, gunakan PDF di modul Keuangan (bab 11).
14. E-Materai (Opsional)

Menu Surat β E-Materai. Integrasi stempel elektronik β opsional.
Mode integrasi (diatur leader)
- simulasi (default) β mencatat proses stempel tanpa memanggil API (uji coba/arsip internal).
- api β untuk penggunaan nyata dengan penyedia e-materai resmi (mis. Peruri/GPRM atau mitra reseller berizin). Permintaan tercatat berstatus diajukan hingga webhook provider mengonfirmasi terstempel.
Mengajukan stempel
- Pastikan surat berstatus final atau ditandatangani dan belum terstempel.
- Daftar kandidat tampil otomatis di kartu Ajukan Stempel Materai.
- Klik ajukan pada surat yang diinginkan β permintaan tercatat (alert hijau βPermintaan e-materai tercatatβ).
15. Firma & Pengaturan

Menu Sistem β Firma & Pengaturan (setting.php). Semua pengaturan ter-scope firma
aktif. Domain hanya dapat diubah superadmin.
15.1 Profil Firma
Nama, deskripsi kantor, alamat, telepon, email, kota, nama & gelar leader, kode dokumen (penomoran surat), footer surat (1β3 baris), dan logo (kosong = placeholder inisial firma otomatis dari nama/kode).
15.2 Anggota Firma (leader)
- Tambah anggota β email, nama, gelar, jabatan (leader/advokat/paralegal/staff), telepon. Email yang belum terdaftar otomatis dibuatkan akunnya dan bisa langsung login dengan Google.
- Edit anggota β data + upload scan tanda tangan advokat β otomatis tertanam di PDF surat yang ditandatanganinya.
- Nonaktifkan β akun tidak bisa login & tidak muncul sebagai kandidat penandatangan (datanya tetap tersimpan).
- Persetujuan permintaan akses β bila ada pendaftar menunggu, leader menyetujui sekaligus menetapkan jabatannya.
15.3 Gaya Surat & Kop (berlaku untuk preview & PDF)- Gaya kop: klasik (default β kop penuh: nama, deskripsi & alamat di tengah + garis ganda), a (hanya logo kanan atas; alamat pindah ke footer kiri), b (logo kanan atas, lalu nama, deskripsi & alamat rata kiri di bawahnya), c (logo kanan atas + nama/deskripsi di tengah; alamat di footer kiri), d (halaman polos tanpa kop).
- Ukuran kertas: A4 / F4-Folio / Letter.
- Font surat: Times New Roman / Arial(Helvetica) / Courier, ukuran 9β14 pt (default 12).
- Spasi antar baris: 1 / 1.15 (default) / 1.5.
- Margin surat resmi (cm) β default tata naskah dinas: Atas 4 (ruang kop), Kiri 4 (penjilidan), Bawah 3, Kanan 3. Rentang 1β6 cm.
- Logo kop & logo footer kustom (PNG/JPG) + garis ganda kop on/off + ukuran logo kop 10β80 mm.
- Posisi logo bisa digeser (drag) β β di kartu pratinjau kop, seret langsung logo kop maupun logo footer ke atas/bawah/kiri/kanan; saat dilepas posisi tersimpan otomatis. Untuk presisi, gunakan 4 input angka offset (mm) di baris kontrol: Kop X / Kop Y / Footer X / Footer Y (rentang β30 s.d. +30 mm; X positif = kanan, Y positif = bawah). Input dan drag tersinkron dua arah. Tombol βΊ Reset Posisi Logo mengembalikan semuanya ke posisi bawaan gaya kop. Posisi ini berlaku konsisten di pratinjau surat (HTML) dan PDF (surat kuasa, surat lanjutan, invoice, laporan keuangan), serta tersimpan per firma.
- Kompatibilitas logo: PNG hasil ekspor yang interlaced (Adam7) atau 16-bit otomatis dikonversi saat PDF dibuat β tidak perlu mengolah ulang gambar.
- Format nomor surat: template
{NO}/{KODE}/{ROMAWI_BULAN}/{TAHUN}β dapat disesuaikan. - Penutup baku surat (editable).
- Mode Tampilan (posisi menu): Sidebar kiri (default) / Topbar / Keduanya.
15.4 AI (Gemini) API Keys
- Semua user firma boleh menambah key; key diuji otomatis ke Google sebelum disimpan.
- Seluruh key membentuk satu pool per firma, dipakai bergantian acak; status aktif, label, pemilik, jumlah dipakai/gagal, dan waktu terakhir tampil di tabel.
- Scope: user hanya melihat key milik firmanya; superadmin melihat semua.
- Hapus key per item bila tidak dipakai.
15.5 Splash Screen Mobile
Leader mengelola slide show yang tampil sebelum login di aplikasi mobile: tambah slide (gambar + judul + deskripsi + durasi 2β15 detik), aktif/nonaktifkan, urutkan naik/turun, edit, dan hapus.
- Edit slide β β tombol βοΈ Edit pada kartu slide membuka form untuk mengubah judul, deskripsi, dan durasi (2β15 detik), serta mengganti foto (PNG/JPG maks 5 MB, opsional β kosongkan bila foto tetap). Foto lama otomatis dihapus dari server saat diganti, jadi tidak menumpuk.
- Perubahan langsung berlaku di aplikasi mobile β slide show dimuat ulang dari server setiap aplikasi dibuka (tanpa perlu build ulang aplikasi).
15.6 Superadmin di halaman ini
- Kartu βFirma Pengguna Sistem Iniβ β daftar semua firma + statistik (anggota, klien, surat) dengan tombol pindah konteks (bekerja sebagai firma mana pun), edit dan buat firma baru.
16. Langganan & Tagihan (Midtrans)

Menu Sistem β Langganan & Tagihan. Hanya leader yang dapat membayar; semua anggota dapat melihat status.
Paket
| Paket | Harga |
|---|---|
| Trial 30 Hari | Gratis (sekali per firma, tanpa kartu kredit) |
| Paket 1 Bulan | Rp 200.000 |
| Paket 6 Bulan | Rp 1.020.000 (hemat 15%) |
| Paket 12 Bulan | Rp 1.800.000 (hemat 25%) |
| Paket Unlimited | Hubungi Kami (via email kontak) |
Membeli / memperpanjang
- Pilih paket di dropdown β π³ Bayar Sekarang.
- Bila kredensial Midtrans terisi β halaman Midtrans Snap terbuka (QRIS, VA, e-wallet, kartu). Bila belum β mode simulasi: pembayaran langsung dianggap lunas untuk pengujian.
- Setelah selesai, Anda kembali otomatis; halaman mengecek status pembayaran setiap beberapa detik dan mengaktifkan langganan segera saat lunas β tanpa menunggu webhook. Tombol Cek Status tersedia untuk order pending.
- Riwayat pembayaran (waktu, paket, jumlah, Order ID, metode, status) tampil di bawah.
- Invoice PT β Firma dibuat otomatis saat lunas (bab 12).
Firma kedaluwarsa tetap bisa login; halaman inti diarahkan ke halaman ini. Aktivasi/perpanjangan manual oleh superadmin juga tersedia (bab 17).
17. Panel Superadmin


Menu Sistem β π‘οΈ Superadmin β hanya untuk superadmin. Satu halaman kontrol sistem.
Ringkasan
Firma terdaftar Β· Langganan aktif Β· Trial dibuat Β· Total pendapatan (lunas).
ποΈ Firma & Langganan (Customer Handling)
Tabel seluruh firma: domain, jumlah users/klien, langganan berjalan (paket, sisa hari, tombol Stop untuk menghentikan), dan aksi:
- Beri langganan β pilih paket (trial 1 bln / bulanan / 6 / 12 bulan / unlimited) β Beri. Trial hanya boleh sekali per firma (validasi).
- π Domain β atur domain + identitas publik landing page (nama publik, tagline).
Arahkan DNS A/CNAME domain ke server; aplikasi mendeteksi firma otomatis dari hostname.
Kosong = domain default
advokat.sapulidi.co.id.
Bagian lain
- Audit Log β jejak semua perubahan (buat/update/hapus/status/login/bayar/langganan) beserta data lamaβbaru, IP, user agent, pelaku, dan waktu.
- Pembayaran β daftar transaksi Midtrans seluruh firma.
- Manajemen pengguna sistem ada di menu π§ Pengguna; pengamatan cache AI di π§ Cache AI.
Menjadikan superadmin pertama
Login sekali dengan akun Google Anda, lalu jalankan SQL (lihat README):
UPDATE users SET jabatan='superadmin', firma_id=NULL WHERE email='email-anda@gmail.com';
18. Portal Klien

Portal khusus klien firma β klien login dengan email & password portal (dibuat leader di Data Klien) atau Google bila emailnya terdaftar.
Setelah login (halaman judulnya βSelamat datang, {nama klien}β), klien melihat:
- π Surat Kuasa Saya β tabel nomor, jenis, tanggal, status + tombol Unduh PDF
(
cetak_klien.phpβ hanya surat miliknya). Setiap baris punya detail βLihat timelineβ: riwayat status lengkap β dari draf β proses β final β ditandatangani β terkirim beserta catatan dan waktu, sehingga klien selalu tahu progres suratnya. - π¨ Surat Perkara Saya β surat lanjutan (somasi, litigasi, replik, duplik, dll.) miliknya: nomor, jenis, perihal, tanggal, status.
- ποΈ Dokumen Saya β dokumen non-rahasia klien (kategori putusan/somasi/litigasi/ replik/duplik/lainnya) dengan tautan unduh. Dokumen berlabel RAHASIA tidak ditampilkan di portal.
Menu portal hanya berisi π Dashboard Saya dan πͺ Keluar β sengaja sederhana.
Keamanan: setiap permintaan memverifikasi kepemilikan data (
klien_can_access_surat) β klien tidak dapat membuka surat/dokumen klien lain, dan halaman internal firma tidak dapat diakses dari portal.
19. Aplikasi Mobile (Flutter)
Aplikasi Android & iOS dengan fungsi inti yang sama dengan web. Detail teknis di
mobile/README.md.
Fitur: login Google, dashboard, surat kuasa & surat lanjutan (ubah status), klien,
dokumen, jadwal sidang, laporan. Data via REST api.php dengan Bearer token per
perangkat (tombol logout mencabut token). Layar pembuka (splash slide show) diambil
dari server dan dikelola leader dari web (bab 15.5).
Notifikasi push: portal klien & mobile menerima notifikasi (mis. konfirmasi pembayaran, pengingat batas waktu replik/duplik) β diatur dari server (FCM).
19.1 Email petunjuk otomatis saat login ditolak β
Bila seseorang mencoba Masuk dengan Google di aplikasi mobile dengan email yang belum terdaftar / belum disetujui superadmin, selain pesan kesalahan di layar sistem mengirimkan email informasi & petunjuk penggunaan ke alamat tersebut (otomatis, via SMTP server):
- Isi email: alasan akses ditolak (kerahasiaan data firma), langkah pendaftaran (hubungi superadmin/pimpinan firma), petunjuk login, ringkasan fitur aplikasi, dan panduan membuat firma sendiri untuk pertama kali (bagi pendaftar yang belum tergabung di firma mana pun: buat firma β otomatis leader + trial 30 hari).
- Dipersonalisasi dengan nama firma sesuai domain yang diakses.
- Anti-spam: maksimal 1 email per alamat per 10 menit meski percobaan diulang.
- Pengiriman non-blocking β tidak memperlambat respons aplikasi.
- Bila SMTP belum dikonfigurasi di server, email dilewati diam-diam β aplikasi tetap berfungsi normal.
19.2 Optimasi performa
- Tab dashboard dimuat lazy β data tiap tab baru diambil saat pertama dibuka.
- Data dashboard & agenda diambil paralel; pencarian klien di-debounce 400 ms.
- Semua gambar yang diunggah dikompresi otomatis di server (lihat bab 9).
Instalasi singkat:
cd mobile
flutter pub get
flutter run # emulator Android (API: http://10.0.2.2:8080)
flutter build apk --release # rilis Android
flutter build ipa --release # rilis iOS (butuh macOS + Xcode)
Atur alamat server di lib/api.dart β ApiConfig.baseUrl dan daftarkan SHA-1/package
Android + serverClientId iOS di Google Cloud Console.
20. Alur Kerja Harian (Contoh Skenario)
Skenario A β Surat Kuasa baru dari awal
- Klien β + Tambah Klien (upload KTP β data terisi otomatis) + isi email login portal.
- + Surat Kuasa (Form Lengkap) β Langkah 1 upload KTP (terisi otomatis) β Langkah 2 pilih klien tersimpan β Langkah 3 pilih jenis & sesuaikan poin β Langkah 4 pilih advokat penandatangan β Simpan.
- View untuk pratinjau β Unduh PDF β cetak.
- Klien menandatangani basah β Edit surat β upload scan TTD basah β status otomatis ditandatangani.
- (Opsional) E-Materai β ajukan stempel untuk surat final.
- Serahkan berkas β ubah status terkirim (Sent/Registered).
Skenario B β Somasi & tindak lanjut litigasi
- Buat surat jenis SOM (Surat Somasi) via form lengkap β isi Tujuan (nama pihak & alamat) dan Perihal; poin baku somasi termasuk tenggat 7 hari.
- Kirim; bila berlanjut ke pengadilan, buat GGT (Gugatan) lalu JWB (Jawaban), RPL (Replik), DPL (Duplik) sesuai tahapan β masing-masing dengan batas waktu yang tercatat.
- Jadwal Sidang untuk setiap agenda β pengingat H-1/H-0 otomatis muncul di Dashboard.
- Setelah putusan β upload ke Arsip Dokumen kategori putusan.
Skenario C β Penagihan & pembukuan bulanan
- Invoice β buat invoice Firma β Klien (PPN on/off sesuai kesepakatan) β
ubah status
terkirimβ π§ kirim ke email klien. - Saat dibayar β status lunas.
- Keuangan β catat transaksi pendapatan/biaya/akomodasi β pajak dihitung otomatis β π¨ PDF Keuangan untuk arsip/direksi.
- Laporan β rekap 12 bulan untuk evaluasi.
Skenario D β Klien memantau perkara
- Klien membuka portal (email + password dari firma / Google).
- Melihat status surat & timeline progres, mengunduh PDF surat kuasanya.
- Memantau dokumen perkara (putusan, somasi) yang dibagikan firma β dokumen rahasia tidak tampil.
21. Troubleshooting & FAQ
| Masalah | Penyebab & solusi |
|---|---|
| βGoogle OAuth belum dikonfigurasiβ di halaman login | Isi GOOGLE_CLIENT_ID & GOOGLE_CLIENT_SECRET di .env/environment, lalu restart. Panduan di README. |
| Login ditolak β email belum didaftarkan | Email belum terdaftar di users/klien. Leader menambahkan anggota di Firma & Pengaturan, atau superadmin menambahkannya. |
| βMenunggu persetujuanβ saat login | Akun tercatat tetapi belum diaktifkan β leader menyetujui di Firma & Pengaturan (bagian permintaan akses). |
| Diarahkan ke βBuat Firmaβ | Anda belum tergabung di firma (umum untuk pendaftar baru). Lengkapi form β firma jadi + trial 30 hari aktif otomatis. |
| β403 β Peran Anda tidak memiliki aksesβ | Halaman terbatas untuk peran lain (lihat matriks bab 1). Mis. keuangan hanya leader/superadmin. |
| Halaman inti diblokir ke halaman tagihan | Langganan firma kedaluwarsa. Perpanjang di Langganan & Tagihan (leader) atau minta superadmin. |
| Trial tidak muncul di pilihan | Trial hanya sekali per firma β otomatis disembunyikan bila sudah pernah dipakai. |
| Pembayaran pending | Selesaikan di Midtrans; halaman mengecek otomatis, atau klik Cek Status. Mode simulasi aktif bila kredensial Midtrans kosong. |
| OCR KTP tidak terisi | Server belum punya tesseract-ind (apt install tesseract-ocr tesseract-ocr-ind) atau hasil scan kurang jelas β isi manual; file tetap tersimpan. |
| Generate AI mati / βperlu API keyβ | Tambahkan key Gemini di Firma & Pengaturan β AI (Gemini) API Keys (semua user firma boleh menambah). |
| Scan TTD advokat tidak muncul di PDF | Upload di Firma & Pengaturan β Edit anggota (bukan di surat). Pastikan PNG/JPG. |
| Dokumen tidak bisa diunduh (π) | Dokumen rahasia β hanya leader/superadmin. Minta leader membuka kerahasiaan atau mengunduhkannya untuk Anda. |
| Dokumen rahasia tidak tampil di Portal Klien | By design β kerahasiaan cloud storage; dokumen rahasia tidak pernah diekspos ke portal. |
| Nomor surat tidak sesuai harapan | Sesuaikan Format nomor di Firma & Pengaturan ({NO}/{KODE}/{ROMAWI_BULAN}/{TAHUN}) dan Kode Dokumen firma. |
| Pengingat sidang tidak muncul | Pengingat dibuat saat Dashboard dibuka (atau via cron cron_pengingat_sidang.php). Pastikan jadwal berstatus terjadwal dan tanggalnya H-1/H-0. |
| Slide splash tidak berubah di aplikasi | Pastikan edit tersimpan (alert hijau di web), lalu tutup penuh aplikasi dan buka lagi β slide show dimuat ulang dari server setiap aplikasi dibuka (bab 15.5). |
| Klien lupa password portal | Leader mengedit klien di Data Klien dan mengatur ulang password portal. |
| Menerima email "Informasi & Petunjuk Penggunaan" | Email otomatis karena ada percobaan login mobile dengan email yang belum terdaftar/disetujui (bab 19.1). Daftarkan email tersebut (superadmin/leader β bab 15.2), lalu login ulang di aplikasi. |
| Email notifikasi/petunjuk tidak terkirim | Isi SMTP di includes/config.local.php server (SMTP_HOST/PORT/USER/PASS/SECURE). Gmail: gunakan App Password 16 karakter (myaccount.google.com/apppasswords), bukan password login biasa; port 587+TLS atau 465+SSL. |
| Kop surat/margin PDF tidak sesuai | Atur gaya kop, margin, kertas, font di Firma & Pengaturan β Gaya Surat; semua berlaku ke preview & PDF. |
| Posisi logo kop/footer ingin digeser | Seret logo langsung di pratinjau kop (Firma & Pengaturan), atau isi input offset Kop/Footer X-Y (mm) β tersimpan otomatis dan dipakai di PDF. |
| βFPDF error: Interlacing not supportedβ | Sudah ditangani otomatis: PNG interlaced/16-bit dikonversi saat PDF dibuat (cache .f8.png). Bila masih terjadi, upload ulang logo sebagai PNG/JPG biasa. |
| βCannot redeclare env()β di server | includes/config.local.php hanya boleh berisi putenv() β jangan menyalin isi config.php ke file itu. Salin dari config.local.example.php. |
Dokumen ini dibuat dari kondisi aplikasi terkini (September 2026). Bila ada fitur yang
berubah, perbarui bab terkait. Panduan instalasi & konfigurasi teknis: README.md.
Panduan deploy: deploy/README.md, deploy/MANUAL.md, deploy/AAPANEL.md.