D
Engineering

Conventions

Konvensi implementasi Toko Digital untuk controller, Inertia, frontend state, route parameter, dan perubahan lintas service.

Controller dan Inertia

Controller storefront mengumpulkan data yang diperlukan halaman lalu memanggil Inertia::render. Nama halaman harus mengikuti resolver di resources/js/app.js dan resources/js/ssr.js.

Mapping penting:

ControllerHalaman
DigitalStorePublishControllerBiolink/OpenSsr, Biolink/ProductDetail, Biolink/AllProducts
DigitalStoreControllerBiolink/Pratinjau, Biolink/ProductDetail, Biolink/AllProducts
CartPublishControllerPublished cart, checkout, pending, success
CartControllerPreview cart, checkout, simulator, success

Route parameter

Route path-based dapat membuat parameter masuk secara positional ke method controller yang tidak mengharapkannya. Source mengatasi ini dengan membaca parameter eksplisit:

php
$slug = $request->route('slug') ?? $slug;
$page = $request->route('page') ?? $page;

Pertahankan pola ini ketika menambah action pada group /{username}.

State cart

Cart customer disimpan di browser melalui localStorage. Pinia useCartStore membantu membaca dan menyegarkan data, tetapi mutasi cart masih tersebar pada komponen produk/cart dan bukan seluruhnya terenkapsulasi pada store.

Jangan mengubah key cart atau format item tanpa memeriksa halaman product, cart, checkout, dan flow variant.

Frontend dan SSR

app.js menginisialisasi plugin client, sedangkan ssr.js menginisialisasi resolver SSR dan plugin yang aman untuk server. Perubahan pada global registration, browser API, atau import Sass harus diuji dengan npm run build.

Data section

Section page builder adalah array bersarang di dokumen DigitalStorePage. Renderer membedakan section berdasarkan section_type dan component terkait. Tambahkan section baru dengan memeriksa writer page builder, renderer, halaman published, preview, dan SSR.

Perubahan lintas repository

Perubahan pada payment, order, stock, wallet, customer, atau service URL harus ditelusuri ke consumer di dazoapp, backend Go, engine WhatsApp, atau frontend utama. Dokumentasikan kontrak yang benar-benar digunakan, bukan nama fungsi saja.