Arsitektur struktur file dan folder untuk BIMA

± 4 menit baca

bima/ # Root directory (di luar public_html jika memungkinkan)
│
├── public/ # 🌐 WEB ROOT (Document Root / public_html)
│ ├── .htaccess # Rules: Tolak akses langsung ke file/folder lain, redirect semua ke index.php
│ ├── index.php # 🚪 PINTU MASUK UTAMA (Front Controller untuk Normal Mode)
│ ├── rescue.php # 🚪 PINTU MASUK DARURAT (Front Controller khusus Rescue Mode)
│ └── assets/ # File statis global (CSS framework, JS global, logo, favicon)
│ ├── css/
│ ├── js/
│ └── images/
│
├── core/ # 🏛️ KERNEL & CORE SERVICES (Kode Inti / "Pemerintah")
│ ├── Kernel/ # Bootstrap, Router, Request/Response, Autoloader
│ │ ├── Bootstrap.php # Memuat config, menentukan mode, inisialisasi dasar
│ │ ├── Router.php # Menerjemahkan URL ke Modul/Controller/Aksi
│ │ ├── Request.php # Abstraksi $_GET, $_POST, $_SERVER, $_FILES
│ │ └── Response.php # Abstraksi output (HTML, JSON, Redirect)
│ │
│ ├── Services/ # Layanan Pusat (Wajib dipakai modul, tidak boleh di-bypass)
│ │ ├── AccessControl.php # RBAC, Scope, Policy Evaluation
│ │ ├── WorkflowEngine.php # Approval, Verify, Reject, Delegasi
│ │ ├── AuditTrail.php # Pencatatan log aksi (immutable)
│ │ ├── DatabaseManager.php # Koneksi, Uji 6-Level, Migrasi, Backup
│ │ ├── ModuleRegistry.php # Membaca manifest, mendaftarkan modul, sinkronisasi menu/izin
│ │ └── Notification.php # Queue dan dispatch notifikasi (email, WA, in-app)
│ │
│ ├── Security/ # Autentikasi, Session, CSRF, Enkripsi
│ │ ├── Auth.php # Login/Logout (Normal & Rescue)
│ │ ├── Session.php # Manajemen sesi (DB untuk normal, File untuk rescue)
│ │ └── Encryption.php # Helper untuk enkripsi kredensial rescue & config
│ │
│ ├── Database/ # Abstraksi Database (PDO Wrapper)
│ │ ├── Connection.php # Singleton/Pool koneksi
│ │ ├── QueryBuilder.php # (Opsional) Pembuat query sederhana agar tidak raw SQL di mana-mana
│ │ └── Migration.php # Engine untuk menjalankan file migrasi berurutan
│ │
│ └── Helpers/ # Fungsi utilitas global (format tanggal, rupiah, string)
│
├── modules/ # 🧩 MODUL BISNIS ("Penduduk" / Plug-and-Play)
│ ├── _template/ # 📋 Folder kosong berisi struktur baku (di-copy saat buat modul baru)
│ │
│ ├── maintenance/ # Contoh Modul 1: Maintenance (Work Order)
│ │ ├── manifest.json # 📜 KARTU IDENTITAS (Wajib: metadata, menu, izin, workflow)
│ │ ├── Controllers/ # Penanganan request (tipis, tanpa logika bisnis)
│ │ ├── Services/ # Logika bisnis murni modul ini
│ │ ├── Repositories/ # Query database khusus tabel modul ini
│ │ ├── Entities/ # Class representasi data (DTO)
│ │ ├── Views/ # Template HTML (PHP native atau template engine ringan)
│ │ ├── Database/
│ │ │ ├── Migrations/ # File SQL/PHP untuk buat/ubah tabel (berurutan)
│ │ │ └── Seeds/ # Data awal referensi
│ │ ├── Routes/ # Definisi routing khusus modul ini
│ │ ├── Assets/ # CSS/JS khusus modul ini (di-copy ke public saat install)
│ │ └── Lang/ # Terjemahan (id.json, en.json)
│ │
│ └── qc-inspection/ # Contoh Modul 2: QC Inspection
│ ├── manifest.json
│ └── ... (struktur sama dengan maintenance)
│
├── config/ # ⚙️ KONFIGURASI (Di luar public, tidak di-commit ke Git jika sensitif)
│ ├── .env # Variabel lingkungan (APP_KEY, DB_HOST, dll)
│ ├── app.php # Setting umum aplikasi (timezone, locale, base_url)
│ ├── database.php # Konfigurasi koneksi DB (Ditulis otomatis oleh DatabaseManager)
│ └── rescue.php # Konfigurasi akun rescue (Hash password, batas waktu)
│
├── storage/ # 💾 AREA TULIS (Wajib permission 755/775, TIDAK BOLEH bisa dieksekusi PHP)
│ ├── .htaccess # Rules: DENY ALL (Tolak akses langsung via browser)
│ │
│ ├── rescue_store/ # 🛟 PENYIMPANAN LOKAL RESCUE MODE
│ │ ├── encrypted_config.dat # Konfigurasi DB terenkripsi (untuk backup/restore)
│ │ ├── emergency_audit.log # Log audit saat DB mati (akan disync saat DB hidup)
│ │ └── session/ # File sesi khusus mode rescue
│ │
│ ├── logs/ # Log aplikasi, error PHP, audit trail (format JSON/CSV)
│ ├── cache/ # Cache query, cache izin RBAC, compiled views
│ ├── uploads/ # File upload user (dipisah per modul/tahun/bulan)
│ └── backups/ # Dump database otomatis/manual
│
└── vendor/ # 📦 DEPENDENSI EKSTERNAL (Jika pakai Composer)
└── ... # (Misal: library PDF generator, library Excel, dll)

Tinggalkan jejak kecil

Satu emoji cukup untuk bilang bahwa tulisan ini pernah menyentuh seseorang.


Bagikan

Visualisasi struktur rangka utama BIMA

Saya membaginya menjadi 4 diagram visual: Arsitektur Lapisan, Alur Permintaan (Request Flow), Pemisahan Mode (Normal vs Rescue), dan Siklus Plug and Play Modul. 1. Diagram Arsitektur Lapisan (Layered Architecture) Ini…

☀️ Cerah Proyek

Ketika Kata Menjadi Tempat Berteduh

Ketika apa yang dirasakan akhirnya mewujud menjadi tulisan, ada rasa lega yang luar biasa. Seolah-olah dada yang tadinya sesak kini kembali mendapatkan ruang untuk bernapas lega.

☀️ Cerah Catatan

Hobi Mainan Mini 4WD

Di pikiranku, ada "Tamiya merek Gokey", "Tamiya merek Auldey", dan "Tamiya merek Tamiya" (yang belakangan baru kuketahui sebagai merek asli pemegang lisensinya).

☀️ Cerah Hobi