Skip to main content

Arsitektur

Ringkasan

Backend Bitwewe adalah satu codebase Laravel yang mengekspos beberapa “permukaan” HTTP berbeda melalui RouteServiceProvider:

PermukaanPrefix URLMiddleware utamaNamespace controller
REST API (v1)/apiapiApp\Http\Controllers\Api
Web (Swagger)/, /swaggerwebBlade / view
Panel admin/adminweb, adminApp\Http\Controllers\Admin

Definisi registrasi route:

        $this->routes(function () {
Route::middleware('api')
->prefix('api')
->namespace($this->namespace . '\Api')
->group(base_path('routes/api.php'));

Route::middleware('web')
->group(base_path('routes/web.php'));

Route::prefix('admin')
->middleware(['web', 'admin'])
->as('admin.')
->namespace($this->namespace . "\\Admin")
->group(base_path('routes/admin.php'));
});

Struktur kode (cuplikan)

Struktur umum mengikuti konvensi Laravel:

  • routes/api.php, web.php, admin.php
  • app/Http/Controllers/Api/ — API v1
  • app/Http/Controllers/Admin/ — modul backoffice (pengaturan, user, wallet, laporan, dll.)
  • app/Models/ — Eloquent models
  • app/Services/, app/Repositories/, app/Library/ — logika bisnis dan integrasi
  • app/Jobs/, app/Listeners/, app/Events/ — antrian dan event
  • config/ — konfigurasi Passport, Firebase, websockets, dll.
  • database/ — migrasi & seeder

Alur request API v1

  1. Klien memanggil https://<host>/api/....
  2. Grup middleware api tidak mengaktifkan cookie session; binding route tetap ada.
  3. Endpoint yang membutuhkan pengguna terautentikasi memakai auth.xtoken (middleware custom) dan verified:api (verifikasi email untuk guard api) sesuai definisi di routes/api.php.
  4. Webhook kustodial/pembayaran sering dilindungi leader.only (hanya instance tertentu yang memproses callback).

Panel admin

  • Root web / diarahkan ke /admin.
  • Admin memakai sesi web, auth, verified, lalu google2fa untuk 2FA.
  • Nama route berprefiks admin.* (lihat routes/admin.php).

Observabilitas

Middleware global LogRequests mencatat request; integrasi opsional (mis. New Relic, DataDog) dapat dikonfigurasi di lingkungan produksi (lihat Dockerfile / variabel lingkungan).