Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Sistem manajemen kantor Notaris & PPAT (Pejabat Pembuat Akta Tanah). Aplikasi bilingual (Indonesia / Inggris) dengan frontend Next.js dan backend Laravel. Status: M0–M8 selesai, seluruhnya sudah di-merge ke main. Milestone plan ini (AGENTS.md §2) berhenti di M8 — tidak ada M9. Bukan berarti aplikasi ini "production ready": lihat "Keterbatasan yang sengaja masih terbuka" di bawah, dan baca docs/PROJECT_STATUS.md sebelum mengasumsikan apa pun tentang status proyek.README 전문 보기 ↗
Sistem manajemen kantor Notaris & PPAT (Pejabat Pembuat Akta Tanah). Aplikasi bilingual (Indonesia / Inggris) dengan frontend Next.js dan backend Laravel.
Status: M0–M8 selesai, seluruhnya sudah di-merge ke
main. Milestone plan ini (AGENTS.md §2) berhenti di M8 — tidak ada M9. Bukan berarti aplikasi ini "production ready": lihat "Keterbatasan yang sengaja masih terbuka" di bawah, dan baca docs/PROJECT_STATUS.md sebelum mengasumsikan apa pun tentang status proyek.Sudah ada: autentikasi sesi dan otorisasi berbasis Data Scope; manajemen Pengguna dan Peran; Party (Perorangan & Perusahaan); Proyek beserta Pihak Terkait; Jenis Layanan; Pekerjaan (Matter) Notaris dan PPAT beserta para pihaknya; mesin alur kerja (template, tahapan, instansiasi, riwayat perpindahan tahap); Dokumen dan Tugas (dengan storage privat dan versioning); Akta Notaris dan Minuta Akta; Akta PPAT, Properti (dengan riwayat kepemilikan), dan Warkah; Dashboard; Billing (Quotation, Invoice, Payment, Disbursement); serta Reports (operasional, Notaris, PPAT, finansial, audit).
Belum ada, dan sengaja belum dikerjakan: pajak PPAT (
ppat.taxes.*tidak ada di katalog permission), Register dan Protocol Notaris/PPAT, kewajiban pelaporan bulanan PPAT, serta Calendar (kanonik di skema tetapi tidak dimiliki milestone mana pun). Setiap item tercatat sebagai open item di docs/DECISIONS.md dan docs/PROJECT_STATUS.md §7 — bukan diam-diam terlewat.Mesin alur kerja sengaja dikirim kosong. Tidak ada template Notaris/PPAT bawaan: isi alur kerja menunggu validasi domain, bukan menunggu pengembangan (D-104).
Aturan hukum yang belum divalidasi domain tidak boleh dikarang.
08_NOTARY_WORKFLOW.mddan09_PPAT_WORKFLOW.mdmasih berstatusDRAFT — DOMAIN VALIDATION REQUIREDdan tidak boleh dipakai untuk mengimplementasikan alur kerja hukum (AGENTS.md§58, §62).
Browser
│
▼
Next.js (localhost:3000)
│ REST + cookie sesi (Sanctum SPA)
▼
Laravel (localhost:8000)
│
├── PostgreSQL 18 127.0.0.1:5432 (Docker)
└── Redis 8 127.0.0.1:6379 (Docker)
Backend Laravel adalah sumber kebenaran untuk autentikasi, otorisasi, validasi, dan aturan bisnis. Pemeriksaan di frontend hanya untuk pengalaman pengguna.
notary-ppat-office-management/
├── frontend/ # Aplikasi Next.js
├── backend/ # API Laravel
├── docs/ # Spesifikasi kanonik
├── infra/ # Konfigurasi infrastruktur
├── scripts/ # Skrip bantu
├── .github/workflows/ # CI quality gate
├── .editorconfig
├── .gitattributes
├── .gitignore
├── AGENTS.md # Konstitusi coding untuk asisten AI
├── README.md
└── docker-compose.yml # Infrastruktur development lokal saja
| Kebutuhan | Versi | Catatan |
|---|---|---|
| Node.js | 24.x LTS | Minimum Next.js adalah >= 20.9; lihat D-013 |
| pnpm | 11.x | Diaktifkan lewat Corepack yang menyertai Node 24 |
| PHP | >= 8.3 | Workstation saat ini memakai 8.4; jangan pakai fitur khusus 8.4 |
| Composer | 2.x | |
| Docker Desktop | terbaru | Hanya untuk PostgreSQL dan Redis |
Frontend dan backend berjalan native, bukan di dalam container.
Frontend http://localhost:3000
Backend http://localhost:8000
PostgreSQL 127.0.0.1:5432
Redis 127.0.0.1:6379
Gunakan localhost secara konsisten di browser. Cookie sesi terikat pada nama host, jadi
mencampur localhost dan 127.0.0.1 dalam satu alur login akan memutus sesi.
Jalankan ketiga langkah berikut berurutan. Perintah diberi label direktori asalnya.
docker compose up -d
docker compose ps
Compose hanya menjalankan PostgreSQL dan Redis. Keduanya di-bind ke 127.0.0.1, jadi tidak
terekspos ke jaringan.
Kata sandi PostgreSQL memakai fallback khusus development yang tertulis langsung di
docker-compose.yml. Untuk memakai kata sandi sendiri, buat .env di root berisi
POSTGRES_PASSWORD=... sebelum container pertama kali dibuat, lalu pakai nilai yang sama di
langkah berikutnya. Berkas itu tidak ikut ter-commit.
Menghentikan container tanpa menghapus data:
docker compose down
Peringatan:
docker compose down -vikut menghapus named volumenotary_ppat_postgres_datadannotary_ppat_redis_databeserta seluruh isinya. Jangan dipakai sebagai perintah shutdown harian.
backend/cd backend
composer install
Buat .env lokal dari contoh yang tersedia:
# PowerShell
Copy-Item .env.example .env
# bash
cp .env.example .env
php artisan key:generate
Lalu buka backend/.env dan isi DB_PASSWORD dengan kata sandi PostgreSQL yang dipakai
container pada langkah 1 — nilai fallback development-nya terlihat di docker-compose.yml.
backend/.env sudah masuk .gitignore. Jangan meng-commit berkas itu, dan jangan
membagikan APP_KEY.
Jalankan migrasi:
php artisan migrate
composer installtidak membuat.envdan tidak membuatAPP_KEY. Hook itu hanya berjalan saat repositori pertama kali dibuat dengancreate-project. Karena itu kedua langkah di atas wajib dilakukan manual pada setiap clone baru. Lihat D-019.
frontend/cd frontend
corepack enable
pnpm install --frozen-lockfile
Berkas environment tidak wajib. Aplikasi sudah memakai default http://localhost:8000
untuk API dan http://localhost:3000 untuk dirinya sendiri. Salin .env.example menjadi
.env.local hanya bila salah satu URL itu perlu diubah.
Seluruh variabel berawalan NEXT_PUBLIC_ terlihat di browser. Jangan pernah menaruh kata
sandi database, APP_KEY, atau rahasia lain di sana.
Dua terminal:
# terminal 1 — dari backend/
php artisan serve --host=127.0.0.1 --port=8000
# terminal 2 — dari frontend/
pnpm dev
Buka http://localhost:3000. Pengguna anonim diarahkan ke /id/login.
Belum ada pengguna bawaan dan tidak ada seeder akun. Siapkan deployment baru dengan:
# dari backend/
php artisan app:bootstrap
Perintah itu membuat satu Organization, satu Office, sembilan role bawaan, seluruh 177 permission kanonik, dan administrator pertama. Perintah berjalan interaktif dan menanyakan kata sandi tanpa menampilkannya — kata sandi tidak pernah diterima sebagai argumen baris perintah (D-060).
Perintah ini sekali jalan. Deployment yang sudah terisi ditolak, bukan ditimpa (D-058), jadi menjalankannya lagi tidak akan mengembalikan role yang sudah sengaja dihapus.
Bila hanya perlu menyinkronkan katalog permission tanpa mem-bootstrap apa pun:
php artisan permissions:sync
Perintah itu aditif dan idempoten — menambah permission kanonik yang belum ada, tidak pernah menghapus, dan aman dijalankan berulang.
# dari backend/
php artisan parties:rebuild-identity-fingerprints
Menghitung ulang fingerprint berkunci untuk NIK, NPWP, dan tax_id Perusahaan — kolom
turunan yang dipakai deteksi data ganda (D-086). Kolomnya internal: tidak pernah muncul di
API maupun di antarmuka.
Jalankan pada dua keadaan:
APP_KEY dirotasi. Fingerprint diturunkan dari kunci aplikasi, sehingga
rotasi membatalkan seluruhnya.Clone baru tidak memerlukannya: basis data kosong, dan setiap identitas yang direkam sesudahnya mendapat fingerprint-nya saat itu juga.
Perintah ini idempoten — menjalankannya dua kali menghasilkan keadaan yang sama dengan sekali, dan menjalankannya pada tabel yang terisi separuh akan menuntaskan sisanya. Perintah ini tidak mengenkripsi ulang apa pun, dan keluarannya hanya berupa jumlah: tidak ada identitas, tidak ada fingerprint, dan tidak ada pengenal catatan yang tercetak ke terminal atau ke log.
Backend, dari backend/:
vendor/bin/pint --test # format
php artisan test # Pest, SQLite in-memory, tidak butuh Docker
php artisan migrate:status
Frontend, dari frontend/:
pnpm install --frozen-lockfile
pnpm format:check
pnpm lint
pnpm typecheck
pnpm test # Vitest + React Testing Library, sekali jalan
pnpm build
Perintah yang sama dijalankan otomatis oleh CI pada setiap push dan pull request — lihat
.github/workflows/quality.yml. Daftar di atas tidak boleh lebih lemah daripada berkas itu
(AGENTS.md §52).
Skrip test lainnya:
pnpm test:watch # mode watch, untuk pengembangan
pnpm test:ci # sekali jalan + laporan coverage (dipakai CI)
pnpm test:ui # antarmuka Vitest di browser
Test frontend adalah lapisan presentasi. Batas keamanan tetap di backend (AGENTS.md §28):
test frontend yang hijau tidak pernah berarti sebuah endpoint sudah terotorisasi.
Rute selalu diawali locale, dan nama rute tetap dalam bahasa Inggris di kedua locale:
/id/login /en/login
/id/dashboard /en/dashboard
/ selalu mengarah ke /id. Locale ditentukan hanya oleh URL — tanpa deteksi
accept-language dan tanpa cookie locale. Lihat D-020.
Baca AGENTS.md dan berkas relevan di docs/ sebelum menulis kode.
| Berkas | Isi |
|---|---|
| docs/00_PROJECT_OVERVIEW.md | Ruang lingkup produk, hierarki bisnis, milestone |
| docs/01_ARCHITECTURE.md | Arsitektur sistem dan struktur repositori |
| docs/02_MENU_AND_PERMISSIONS.md | Struktur menu, role, matriks permission |
| docs/03_DATABASE_ERD.md | Skema database dan ERD |
| docs/04_UI_DESIGN_SYSTEM.md | Design system dan wireframe |
| docs/05_I18N_LEGAL_TERMINOLOGY.md | Aturan bilingual dan terminologi hukum |
| docs/06_API_CONVENTIONS.md | Konvensi REST API |
| docs/07_SECURITY_RULES.md | Aturan keamanan |
| docs/08_NOTARY_WORKFLOW.md | DRAFT — DOMAIN VALIDATION REQUIRED |
| docs/09_PPAT_WORKFLOW.md |
Tujuh berkas 12_ sampai 18_ adalah architecture lock per milestone: masing-masing
mencatat apa yang boleh dibangun domainnya, apa yang tidak, dan pernyataan mana yang disalin dari
sumber kanonik alih-alih diputuskan setempat. Baca lock domain yang sedang dikerjakan sebelum
mengubahnya (AGENTS.md §58).
Dokumen 08 dan 09 tidak boleh dipakai untuk mengimplementasi alur kerja hukum sebelum divalidasi oleh sumber domain.
M0 Foundation selesai
M1 Identity & Access Management selesai
M2 Party / Individual / Company selesai
M3 Project Management selesai
M4 Matter & Workflow Engine selesai
M5 Documents & Tasks selesai
M6 Notary Module selesai
M7 PPAT Module selesai
M8 Dashboard, Billing & Reports selesai
Seluruh milestone M0–M8 sudah di-merge ke main. Urutan ini mengikuti
docs/10_M0_FOUNDATION.md dan AGENTS.md §2, yang berhenti di M8 —
tidak ada M9 dalam rencana ini. Untuk status terkini secara rinci (angka aktual, apa yang masih
terbuka, dan apa yang dikerjakan berikutnya di luar rencana milestone ini), baca
docs/PROJECT_STATUS.md.
Belum ditentukan.
| DRAFT — DOMAIN VALIDATION REQUIRED |
| docs/10_M0_FOUNDATION.md | Spesifikasi implementasi M0 |
| docs/11_LEGAL_REFERENCES.md | Register rujukan hukum |
| docs/12_M2_PARTY_ARCHITECTURE.md | Architecture lock M2 — Party |
| docs/13_M3_PROJECT_ARCHITECTURE.md | Architecture lock M3 — Project |
| docs/14_M4_MATTER_ARCHITECTURE.md | Architecture lock M4 — Matter & Workflow |
| docs/15_M5_DOCUMENT_TASK_ARCHITECTURE.md | Architecture lock M5 — Document & Task |
| docs/16_M6_NOTARY_ARCHITECTURE.md | Architecture lock M6 — Notary |
| docs/17_M7_PPAT_ARCHITECTURE.md | Architecture lock M7 — PPAT |
| docs/18_M8_DASHBOARD_BILLING_REPORTS_ARCHITECTURE.md | Architecture lock M8 — Dashboard, Billing & Reports |
| docs/DECISIONS.md | Keputusan kanonik dan aturan presedensi, plus register open item |
| docs/CHANGELOG.md | Riwayat perubahan per milestone |
| docs/PROJECT_STATUS.md | Orientasi status proyek saat ini — baca ini dulu untuk tahu posisi aktual, bukan dokumen ini |
| scripts/README.md | Panduan operasional backup & pemulihan data untuk PC kantor (Bahasa Indonesia) |
| user_manual.html | Manual pengguna akhir untuk staf kantor |