D
Engineering

Architecture

Arsitektur Toko Digital sebagai aplikasi Laravel-Inertia yang merender storefront multi-tenant dan berintegrasi dengan service Dazo.

Toko Digital adalah aplikasi Laravel 10 dengan frontend Vue 3 + Inertia.js. Laravel menentukan store, mengambil data MongoDB, menjalankan validasi transaksi, lalu mengirim props ke halaman Inertia.

Lapisan runtime

LapisanLokasiTanggung jawab
HTTP routeroutes/web.php, routes/api.phpPublished store, preview, checkout, token, shipping, dan payment proxy
Controllerapp/Http/Controllers/Resolve store, query data, validasi request, dan render Inertia
Modelapp/Models/Persistence MongoDB/MySQL dan relasi domain
Trait/middlewareapp/Http/Traits/, app/Http/Middleware/Resolusi username, token, reserved path, dan request context
Inertia clientresources/js/app.jsResolver halaman, Pinia, Vuex, plugin UI, dan client hydration
Inertia SSRresources/js/ssr.jsResolver server-side untuk halaman yang mendukung SSR
Asset buildvite.config.jsBundle client dan SSR

Published dan preview

Published dan preview sengaja dipisahkan:

  • DigitalStorePublishController membaca type = published.
  • DigitalStoreController membaca type = draft dan memerlukan token preview.
  • Published storefront dirender ke Biolink/OpenSsr.
  • Preview storefront dirender ke Biolink/Pratinjau.

Detail alurnya ada di Publish dan Preview.

Batas service

Toko Digital memiliki UI storefront dan sebagian proses transaksi, tetapi menggunakan data serta endpoint dari ekosistem Dazo. Payment checkout dan pemeriksaan status pembayaran meneruskan request ke aplikasi utama. Order observer, stock, wallet, dan digital product dapat diproses di dazoapp.

Request flow tingkat tinggi

text
Browser
  │
  ├── GET storefront / product / checkout
  │       │
  │       └── Laravel route
  │               ├── resolve username atau host
  │               ├── query Store + DigitalStore + DigitalStorePage + Product
  │               └── Inertia props → Vue page → optional SSR
  │
  └── POST checkout / API
          ├── validasi cart, customer, shipping, payment
          ├── simpan atau siapkan order
          └── panggil service Dazo bila membutuhkan payment atau status eksternal