Skip to content

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

FiturBackend moduleStorefrontAdminThird party
Cataloguecatalogs/products, /products/[slug], /series, /collaborationProducts, Heads/Types, Categories, Brands, Series, Collaborations, Tags
Cart and checkoutusers (cart) + orders/checkout/shippingBiteship (rates), DOKU (pay)
Ordersorders/user/my-orderOrders (view only)WMS, Biteship, DOKU
Payment (DOKU)paymentsDOKU Jokul CheckoutDOKU
Delivery (Biteship)deliveriespilihan courier di checkoutBiteship
Stock (PowerBiz WMS)catalogs (WmsService)stock ditampilkan di PDPproduct quantityPowerBiz WMS
Promotionspromotionspermukaan voucher + flash saleVouchers, Discounts, Flash sales
Members and authusers/auth/*, /user/*Members
Homepage and contentadmins (homepage)/Homepage, Stores
Journalsjournals/journalsJournals
Admin users and RBACadminsAdmins, 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.ts yang menyatakan @Entity({ name: '...' }). Lihat Database.
  • Konten dwibahasa di data, bukan di UI. Sebagian besar entity membawa nameId/nameEn, descId/descEn dan seterusnya. Tidak ada frontend yang punya locale routing; storefront memakai field Bahasa Indonesia.