1
Ringkasan Proyek Badaso
Badaso adalah paket Laravel bernama badaso/core. composer.json mencatat version 3.0.0-alpha, type library, dan deskripsi "The API & platform builder, build your apps 10x faster even more, it's open source & 100% free !". composer.json:1-41 composer.json:252 Seluruh kode PHP berada di namespace Uasoft\Badaso\, dipetakan ke direktori src/ lewat autoload PSR-4, composer.json:62-663 dan BadasoServiceProvider terdaftar otomatis sebagai provider lewat extra.laravel.providers. composer.json:72-784
Halaman ini memetakan kemampuan yang dijanjikan README ke modul nyata di src/, lalu menunjukkan dua permukaan HTTP yang dipakai dashboard dan klien API. Rincian tiap modul ada di halaman masing-masing.
graph TD
SPA['Dashboard SPA: src/resources/badaso/pages']
CRUD['BadasoCRUDController']
TABLE['BadasoTableController']
USERS['BadasoUserController']
ROLES['BadasoRoleController']
PERMS['BadasoPermissionController']
MENUS['BadasoMenuController']
CONFS['BadasoConfigurationsController']
FILES['BadasoFileController']
ENTITIES['rute /v1/entities dari DataType::all()']
PERMMW['middleware check_crud_permission']
DTM[('data_types / data_rows')]
RBACT[('badaso_users / user_roles')]
MENUT[('menus / menu_items')]
CONFT[('configurations')]
SPA --> CRUD
SPA --> TABLE
SPA --> USERS
SPA --> ROLES
SPA --> PERMS
SPA --> MENUS
SPA --> CONFS
SPA --> FILES
CRUD --> DTM
TABLE --> DTM
ENTITIES --> PERMMW
PERMMW --> DTM
USERS --> RBACT
ROLES --> RBACT
PERMS --> RBACT
MENUS --> MENUT
CONFS --> CONFT
style DTM fill:#336791,color:#fff
style RBACT fill:#336791,color:#fff
style MENUT fill:#336791,color:#fff
style CONFT fill:#336791,color:#fff
style PERMMW fill:#f59e0b,color:#000
style ENTITIES fill:#8b5cf6,color:#fff
style SPA fill:#8b5cf6,color:#fff
style FILES fill:#2d7d46,color:#fff
%% fig: Peta fitur Badaso ke modul di src/
%% desc: Dashboard SPA memanggil satu controller per fitur, dan setiap controller membaca atau menulis tabel inti yang didaftarkan Badaso.Fitur README dan modulnya
Bagian "Why badaso ?" menonjolkan dashboard PWA berbasis Vue.js, autentikasi JWT, dan integrasi Rest API serta GraphQL. README.md:29-425 Bagian "Badaso features" menambahkan CRUD generator, API generator, manajemen user, role, dan permission, menu, database, activity logging, log viewer, backup harian, dan media manager. README.md:44-576 Sebagian besar fitur itu punya controller dan prefix rute tetap di src/Routes/api.php:
| Fitur | Modul | Prefix rute |
|---|---|---|
| CRUD data hasil generator | BadasoCRUDController | crud |
| Pembuatan CRUD dari tabel | BadasoTableController@generateCRUD | table |
| Manajemen user | BadasoUserController | users |
| Manajemen role | BadasoRoleController | roles |
| Manajemen permission | BadasoPermissionController | permissions |
| Relasi user-role dan role-permission | BadasoUserRoleController, BadasoRolePermissionController | user-roles, role-permissions |
| Manajemen menu | BadasoMenuController | menus |
| Konfigurasi aplikasi | BadasoConfigurationsController | configurations |
| Media manager | BadasoFileController | file |
| Metadata komponen form | BadasoDataController@getComponents | data/components |
Satu kelompok rute tidak memakai prefix tetap. Grup entities dibangun saat boot dari seluruh DataType, dan setiap entitas memperoleh rute browse, read, edit, serta add dengan middleware check_crud_permission. src/Routes/api.php:159-18017
Model dan tabel inti
Badaso::$models memetakan sepuluh nama pendek ke kelas model: DataRow, DataType, Permission, Role, User, UserRole, RolePermission, Menu, MenuItem, dan Configuration. src/Badaso.php:19-3018 Nama tabel fisik memakai prefix dari config('badaso.database.prefix') yang default-nya badaso_; migration create_user_roles membangun user_roles dengan foreign key ke users dan roles berprefix sama. src/Config/badaso.php:39-4119 src/Migrations/2020_11_18_015852_create_user_roles.php:17-2220 Selain itu Badaso::$protected_tables mendaftar tabel inti yang tidak diperlakukan sebagai tabel aplikasi biasa, misalnya activity_log, data_types, menus, roles, permissions, dan configurations. src/Badaso.php:74-9121 Pemakaian daftar itu dijelaskan di Database Management.
Komponen dan relasi yang dikenali CRUD generator
Badaso::$supported_component memuat 27 tipe komponen, dari text, email, password, textarea, sampai upload_file_multiple, code, relation, dan data_identifier. src/Badaso.php:32-6022 Untuk query, generator hanya mengenal operator containts (ejaan asli di kode) dan =, sedangkan relasi antar tabel dibatasi ke belongs_to, has_one, has_many, dan belongs_to_many. src/Badaso.php:62-7223 Alur pembuatan entitasnya dibahas di CRUD Generator dan Content Manager.
Cara paket menyambung ke aplikasi Laravel
Saat boot, provider mendaftarkan alias facade Badaso, menyisipkan CheckForMaintenanceMode dan GenerateForSwagger ke grup middleware web, memakai PersonalAccessToken sebagai model token Sanctum, mengikat singleton badaso, lalu memuat migrations, views, routes, dan translations milik paket. src/Providers/BadasoServiceProvider.php:30-4924 Tahap register mendaftarkan OrchestratorEventServiceProvider, DoctrineSupportServiceProvider, DropboxServiceProvider, GoogleDriveServiceProvider, LogViewerServiceProvider, L5SwaggerServiceProvider, dan enam command console. src/Providers/BadasoServiceProvider.php:104-12525 Command utamanya adalah badaso:setup {--force=false}. src/Commands/BadasoSetup.php:19-3326 Aset dipublikasikan dalam empat tag: Badaso, BadasoConfig, BadasoSeeder, dan BadasoResource. src/Providers/BadasoServiceProvider.php:51-7127 Langkah pemasangannya ada di Instalasi dan Setup.
Dua permukaan HTTP
Sisi web hanya punya satu rute penangkap: GET /{admin_panel_route_prefix}/{any?} mengembalikan view('badaso::admin-panel.index'), sehingga seluruh navigasi dashboard ditangani SPA. src/Routes/web.php:19-2228 Sisi API adalah satu grup dengan prefix config('badaso.api_route_prefix'), namespace Uasoft\Badaso\Controllers, dan middleware ApiRequest, lalu sub-prefix v1. src/Routes/api.php:7-929
graph LR
SPA['Admin panel SPA (Vue, PWA)']
WEBROUTE['GET /badaso-dashboard/{any?}']
VIEW['view badaso::admin-panel.index']
API['/badaso-api/v1/*']
MW['ApiRequest']
AUTH['BadasoAuthenticate: guard sanctum']
PERM['BadasoCheckPermissions']
CTRL['Uasoft Badaso Controllers']
DB[('tabel ber-prefix badaso_')]
SPA --> WEBROUTE
WEBROUTE --> VIEW
SPA --> API
API --> MW
MW --> AUTH
AUTH --> PERM
PERM --> CTRL
CTRL --> DB
style WEBROUTE fill:#2d7d46,color:#fff
style API fill:#2d7d46,color:#fff
style VIEW fill:#8b5cf6,color:#fff
style SPA fill:#8b5cf6,color:#fff
style MW fill:#f59e0b,color:#000
style AUTH fill:#f59e0b,color:#000
style PERM fill:#f59e0b,color:#000
style DB fill:#336791,color:#fff
%% fig: Dua permukaan HTTP Badaso
%% desc: Browser memuat shell admin panel dari satu rute web, lalu SPA memanggil API v1 yang melewati ApiRequest, autentikasi Sanctum, dan pemeriksaan permission.Nilai yang mengatur kedua permukaan itu ada di src/Config/badaso.php:
| Kunci konfigurasi | Nilai default | Rujukan |
|---|---|---|
middleware.authenticate | BadasoAuthenticate | src/Config/badaso.php:4-830 |
authenticate.guard | sanctum | src/Config/badaso.php:10-1231 |
expired_token.default | 60 * 24 | src/Config/badaso.php:17-2332 |
expired_token.remember | 60 * 24 * 30 | src/Config/badaso.php:25-3033 |
api_route_prefix | badaso-api | src/Config/badaso.php:32-3634 |
admin_panel_route_prefix | badaso-dashboard | src/Config/badaso.php:32-3634 |
widgets | UserWidget, RoleWidget, PermissionWidget | src/Config/badaso.php:48-5235 |
Rantai middleware dan guard-nya dibahas di Autentikasi dan Otorisasi, sedangkan susunan halaman SPA-nya di Frontend Admin Panel.
Status rilis dan hal yang perlu diwaspadai
⚠️ Lisensi paket tidak konsisten. Berkas LICENSE berbunyi MIT License dengan copyright 2021 Uasoft, LICENSE:1-3 tetapi composer.json menulis
"license": "proprietary". composer.json:1836 Pastikan status lisensi sebelum mendistribusikan paket ini.
Menurut SECURITY.md, versi 1.x tidak lagi didukung, sedangkan 2.x dan 3.x didukung. SECURITY.md:3-937 Pada sisi JavaScript, package.json belum punya test nyata: script test hanya echo "Error: no test specified" && exit 1, sementara lint dan format menunjuk direktori ./src/resources/badaso. package.json:105-11038 Alur pemeriksaannya dijelaskan di Pengujian dan CI.
Halaman berikutnya
Struktur paket dan lapisan internalnya di Arsitektur Sistem. Manajemen user, role, dan permission di Manajemen User, Role, dan Permission. Menu dan konfigurasi di Menu dan Konfigurasi Aplikasi. Media, notifikasi, dan activity log di Media, Notifikasi, dan Activity Log.