Fitur
Exsport adalah satu produk yang dipecah ke beberapa repo. Sebuah fitur jarang berada di satu tempat: ia punya domain backend (satu module NestJS), permukaan storefront (yang dilihat customer), dan permukaan admin (yang dikelola staf). Halaman ini adalah petanya. Tiap baris menautkan ke halaman yang menelusuri fitur itu dari ujung ke ujung.
Cara halaman ini diverifikasi
Dibaca pada 2026-09-15 dari def-exsport-backend (module, resolver, entity NestJS), def-exsport-frontend-storefront dan def-exsport-frontend-admin (route Next.js App Router). Tidak ada kode yang diubah.
Jalur request
Kedua frontend tidak pernah memanggil third party secara langsung. Mereka memanggil backend, dan backend memanggil Biteship, DOKU dan WMS.
Storefront (Next.js) ─┐
├─► Backend (NestJS, /gapi/graphql + REST) ─► Biteship · DOKU · PowerBiz WMS
Admin (Next.js) ─┘ ◄─ webhooks/* (their callbacks)- Operasi GraphQL storefront berprefix
front*(frontProducts,frontMemberCart). Operasi admin bernama polos (products,createVoucher). - Read dan write tanpa file lewat GraphQL. Create/update yang mengunggah file lewat REST (multipart), misalnya
POST catalogs/products. Lihat API and auth. - Ketiga third party memanggil balik lewat route REST di bawah
webhooks/*. Lihat Third parties.
Peta domain
| Fitur | Backend module | Storefront | Admin | Third party |
|---|---|---|---|---|
| Catalogue | catalogs | /products, /products/[slug], /series, /collaboration | Products, Heads/Types, Categories, Brands, Series, Collaborations, Tags | — |
| Cart and checkout | users (cart) + orders | /checkout/shipping | — | Biteship (rates), DOKU (pay) |
| Orders | orders | /user/my-order | Orders (view only) | WMS, Biteship, DOKU |
| Payment (DOKU) | payments | DOKU Jokul Checkout | — | DOKU |
| Delivery (Biteship) | deliveries | pilihan courier di checkout | — | Biteship |
| Stock (PowerBiz WMS) | catalogs (WmsService) | stock ditampilkan di PDP | product quantity | PowerBiz WMS |
| Promotions | promotions | permukaan voucher + flash sale | Vouchers, Discounts, Flash sales | — |
| Members and auth | users | /auth/*, /user/* | Members | — |
| Homepage and content | admins (homepage) | / | Homepage, Stores | — |
| Journals | journals | /journals | Journals | — |
| Admin users and RBAC | admins | — | Admins, Roles | — |
Dua hal yang membentuk setiap fitur
- Skema database hanya ditentukan oleh file entity. Backend menjalankan TypeORM dengan
synchronize: true, tanpa folder migration dan tanpa script seed. Sebuah tabel ada karena ada*.model.tsyang menyatakan@Entity({ name: '...' }). Lihat Database. - Konten dwibahasa di data, bukan di UI. Sebagian besar entity membawa
nameId/nameEn,descId/descEndan seterusnya. Tidak ada frontend yang punya locale routing; storefront memakai field Bahasa Indonesia.