Skip to content

Exsport

Exsport adalah platform e-commerce untuk merek tas Exsport (exsportbags.com). Pelanggan menelusuri katalog, menambah barang ke cart, memilih kurir, membayar, lalu melacak pengiriman. Staf mengelola produk, stok, order, member, promosi dan konten dari admin panel. Platform ini bicara dengan tiga layanan luar: Biteship untuk pengiriman, DOKU untuk pembayaran, dan PowerBiz (WMS) untuk stok gudang.

Binari membangun dan memeliharanya. Semuanya satu project Jira, DEF07.

Bagaimana bentuknya

Exsport adalah satu produk yang dibagi ke beberapa repository, satu per layanan. Ini kebalikan dari INACT, yang satu codebase di-fork per klien. Di sini ada satu sistem live, dan pembagiannya berdasarkan peran, bukan klien.

        Storefront (Next.js)          Admin (Next.js)
              │                              │
              └──────────────┬───────────────┘

                   Backend (NestJS, GraphQL + REST)

        ┌────────────────────┼────────────────────┐
        ▼                    ▼                     ▼
     Biteship             DOKU              PowerBiz (WMS)
   (delivery)           (payment)             (stock)
        │                    │                     │
        └───────── webhook receiver → SNS ─────────┘

Repository-nya

Semua di bawah binari-digital di GitHub. Checkout lokal ada di bawah /Volumes/xpro/erisristemena/ dalam folder yang dinamai sesuai stack (nestjs/, nextjs/, …), bukan di bawah www/ seperti repo INACT.

RepoPeranStackBranch di origin
def-exsport-backendGraphQL + REST API, semua business logicNestJS 10, Apollo, TypeORM, Postgresmain, staging, development
def-exsport-frontend-storefrontToko pelangganNext.js 15, React 19, Apollo, NextAuthmain, staging, development
def-exsport-frontend-adminAdmin / CMSNext.js 15, React 19, Apollo, NextAuthmain, staging, development
def-exsport-webhookMenerima callback pihak ketiga, menyebar ke SNSExpress 5, plain JSmain only
def-exsport-3rdparty-simulatorProxy di depan Biteship/DOKU/WMS, dengan simulasi errorExpress 5, http-proxymain only
def-exsport-data-migrationImport produk dan member sekali jalan dari Google SheetsDeno, TypeScriptmain only
def-exsport-stresstestLoad test yang menjalankan browser sungguhanGo 1.24, playwright-gomain only
def-exsport-pulumiAWS infrastructure as codePulumi, TypeScriptmain only

Versi dibaca segar di perbandingan repo. Model branch dibaca dari origin, jangan dari ingatan — ini yang menentukan seluruh git workflow. Lihat Mengerjakan tiket.

Fakta stack yang penting

APIBackend menyajikan code-first GraphQL (autoSchemaFile: true, tanpa schema.gql yang di-commit) di /{APP_PREFIX}/graphql, ditambah REST untuk file upload dan webhook masuk
DatabasePostgres saja — satu engine, jadi tidak ada aturan cross-driver INACT yang berlaku
SchemaTypeORM dengan synchronize: true — schema hanya ditentukan oleh file entity *.model.ts. Tanpa folder migrations, tanpa seed script
AuthDua realm JWT terpisah: admin/CMS dan member storefront. Guard per-resolver, tanpa global guard
FrontendKeduanya Next.js 15 App Router, Apollo Client, NextAuth. Storefront pakai Tailwind v4, admin pakai Tailwind v3
Pihak ketigaBiteship, DOKU, PowerBiz WMS — hanya diakses dari backend. Di dev mereka menunjuk ke simulator
DeployPush ke sebuah branch otomatis men-deploy env itu lewat GitHub Actions di runner self-hosted rumah

Ke mana selanjutnya

Baru di sini: Setup lokal, lalu codebase tour, lalu mengerjakan tiket. Menelusuri fitur: peta fitur dan halaman fitur itu. Bekerja di satu repo: halaman repo-nya. Menambah atau memperbaiki halaman: panduan kontribusi.