Lompat ke konten
dokumentasi.id
Commit b472665
v1
Star1,3 rb

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-4 composer.json:25 Seluruh kode PHP berada di namespace Uasoft\Badaso\, dipetakan ke direktori src/ lewat autoload PSR-4, composer.json:62-66 dan BadasoServiceProvider terdaftar otomatis sebagai provider lewat extra.laravel.providers. composer.json:72-78

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.
Fig. 1: Peta fitur Badaso ke modul di src/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-42 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-57 Sebagian besar fitur itu punya controller dan prefix rute tetap di src/Routes/api.php:

FiturModulPrefix rute
CRUD data hasil generatorBadasoCRUDControllercrud
Pembuatan CRUD dari tabelBadasoTableController@generateCRUDtable
Manajemen userBadasoUserControllerusers
Manajemen roleBadasoRoleControllerroles
Manajemen permissionBadasoPermissionControllerpermissions
Relasi user-role dan role-permissionBadasoUserRoleController, BadasoRolePermissionControlleruser-roles, role-permissions
Manajemen menuBadasoMenuControllermenus
Konfigurasi aplikasiBadasoConfigurationsControllerconfigurations
Media managerBadasoFileControllerfile
Metadata komponen formBadasoDataController@getComponentsdata/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-180

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-30 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-41 src/Migrations/2020_11_18_015852_create_user_roles.php:17-22 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-91 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-60 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-72 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-49 Tahap register mendaftarkan OrchestratorEventServiceProvider, DoctrineSupportServiceProvider, DropboxServiceProvider, GoogleDriveServiceProvider, LogViewerServiceProvider, L5SwaggerServiceProvider, dan enam command console. src/Providers/BadasoServiceProvider.php:104-125 Command utamanya adalah badaso:setup {--force=false}. src/Commands/BadasoSetup.php:19-33 Aset dipublikasikan dalam empat tag: Badaso, BadasoConfig, BadasoSeeder, dan BadasoResource. src/Providers/BadasoServiceProvider.php:51-71 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-22 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-9

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.
Fig. 2: Dua permukaan HTTP BadasoBrowser 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 konfigurasiNilai defaultRujukan
middleware.authenticateBadasoAuthenticatesrc/Config/badaso.php:4-8
authenticate.guardsanctumsrc/Config/badaso.php:10-12
expired_token.default60 * 24src/Config/badaso.php:17-23
expired_token.remember60 * 24 * 30src/Config/badaso.php:25-30
api_route_prefixbadaso-apisrc/Config/badaso.php:32-36
admin_panel_route_prefixbadaso-dashboardsrc/Config/badaso.php:32-36
widgetsUserWidget, RoleWidget, PermissionWidgetsrc/Config/badaso.php:48-52

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:18 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-9 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-110 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.