Files
AbelBirdNest-Stock/docs/codex-handoff-2026-05-23.md

14 KiB

Codex Handoff - 2026-05-23

Dokumen ini adalah snapshot terbaru setelah penambahan halaman profile user, perapihan dashboard, penyiapan deploy Alpine Linux tanpa compile di server, release artifact amd64 untuk Alpine x86_64, export master data lokal ke SQL, dan pemisahan alur purchase submit dari finalisasi penerimaan/lot.

Status Umum

  • App aktif dikembangkan di Next.js + Prisma + PostgreSQL.
  • Branch aktif: main
  • Repo remote utama: https://git.iptek.co/wirabasalamah/AbelBirdNest-Stock.git
  • Local workspace: /Users/wirabasalamah/Documents/Codex/abelbirdnest-web
  • Server deploy terbaru yang sedang dibahas: Alpine Linux x86_64, RAM 1 GB, tanpa compile di server.

Ringkasan Perubahan Terbaru

0. Alur Purchase, Penerimaan, Lot, dan Realisasi Dipisah

1. Halaman Profile User

2. Dashboard Spacing Fix

  • Dashboard sebelumnya punya section yang saling menempel vertikal.
  • Perbaikan dilakukan dengan wrapper space-y-6 dan sedikit memperbesar gap pada grid metric.
  • Tujuannya murni visual: card-card lebih lega dan border panel tidak menumpuk.
  • File utama:

3. Deploy Alpine Linux Kosong

  • Sudah disiapkan panduan deploy khusus untuk server Alpine Linux kosong dengan RAM kecil.
  • Asumsi utama:
    • server x86_64
    • tidak ada build di server
    • release diupload sebagai artifact siap jalan
    • service manager memakai OpenRC
  • Dokumen baru:
  • Service OpenRC baru:
  • Service ini me-load .env sebelum menjalankan node server.js.

4. Workflow Build Artifact Alpine

  • Ditambahkan script build artifact khusus Alpine:
  • Script ini:
    • build di Docker node:22-alpine
    • copy output standalone
    • memasukkan .next/static, public, prisma, deploy, dan doc deploy
    • tidak membawa .env production nyata
  • Script sekarang mendukung:
    • DOCKER_PLATFORM=linux/amd64
  • Ini penting karena server target adalah Alpine x86_64.

5. Prisma Binary Targets untuk Alpine

  • Error deploy sempat muncul:
    • Prisma client di artifact lama terbentuk untuk linux-musl-arm64-openssl-3.0.x
    • server nyata butuh linux-musl-openssl-3.0.x
  • binaryTargets Prisma sekarang mencakup:
    • native
    • darwin-arm64
    • debian-openssl-3.0.x
    • linux-musl-openssl-3.0.x
    • linux-musl-arm64-openssl-3.0.x
  • File utama:

6. User Production Awal SYSTEM_ADMIN

  • Sudah disiapkan SQL khusus untuk membuat user awal production:
    • email: wirabasalamah@gmail.com
    • username: wirabasalamah
    • role: SYSTEM_ADMIN
    • password: P@ssw0rd
  • File:
  • Di server, user ini sudah diverifikasi ada, ACTIVE, dan email_verified_at terisi.

7. Master Data Lokal Dibawa ke Server via SQL

  • Diputuskan tidak perlu build ulang hanya untuk membawa bank, currency, dan grade.
  • Data master lokal sudah diexport ke file SQL:
  • Isi dump saat dibuat:
    • 147 bank
    • 48 currency
    • 348 grade
    • 0 grade buy price standards
    • 0 grade sell price standards
  • Tabel yang dibawa:
    • banks
    • currencies
    • grades
    • grade_buy_price_standards
    • grade_sell_price_standards

Artifact Release Penting

  • Artifact Linux historis:
    • abelbirdnest-release.tar.gz
    • abelbirdnest-release-20260521-0841.tar.gz
  • Artifact Alpine musl awal:
    • abelbirdnest-release-alpine-20260522-0508.tar.gz Catatan: ini masih belum aman untuk server x86_64 karena mismatch Prisma engine.
  • Artifact Alpine final yang benar untuk server x86_64:
    • abelbirdnest-release-alpine-amd64-20260522-0635.tar.gz
  • File ini yang harus dipakai untuk deploy Alpine x86_64.

Temuan Deploy Server Alpine

1. Port Runtime

  • Di lapangan, app berjalan di 3000, bukan 3007.
  • Redirect root / ke /login lalu setelah login aktif, /login akan redirect ke /dashboard.
  • Jadi jika curl https://abelbirdnest.id/ menghasilkan payload redirect ke dashboard/login, itu berarti app sebenarnya hidup.

2. Perilaku /login

3. Certbot di Alpine

  • Untuk Alpine, pendekatan yang dipakai:
    • apk add certbot certbot-nginx
  • Jika repo community belum aktif, perlu ditambahkan dulu di /etc/apk/repositories.

Verifikasi yang Sudah Dilakukan

  • npm run typecheck lolos setelah patch profile dan dashboard.
  • npm run typecheck -- --pretty false lolos setelah patch purchase/receipt/menu/translasi.
  • npm run build lokal Mac lolos.
  • Build artifact Alpine amd64 melalui Docker emulasi berhasil dibuat.
  • Artifact amd64 diverifikasi mengandung Prisma engine:
    • libquery_engine-linux-musl-openssl-3.0.x.so.node
  • File SQL master data berhasil dibuat dari DB lokal.
  • User wirabasalamah@gmail.com di server sudah dicek via SQL dan memang ada.

Risiko / Catatan Penting

  • Jangan menghapus purchase_lines dari purchase yang sudah punya receipt_lines; gunakan flow baru lewat menu Penerimaan atau koreksi stok/reversal jika barang sudah masuk.
  • Untuk membersihkan satu purchase test beserta lot/receipt terkait, gunakan SQL transaksi terkontrol dan biarkan proses rollback jika lot sudah dipakai transaksi lain.
  • psql tidak menerima query param Prisma ?schema=public; untuk akses manual gunakan URL DB tanpa query param itu, atau options=-csearch_path%3Dpublic.
  • Jangan pakai artifact Alpine non-amd64 di server x86_64.
  • Jangan pakai artifact lama yang hanya punya engine linux-musl-arm64.
  • Untuk import master data:
    • paling aman di database fresh
    • kalau tabel sudah terisi, bisa bentrok id atau unique key
  • Build Alpine di Mac via emulasi amd64 sangat lambat, jadi hindari rebuild jika cukup dengan upload SQL.
  • Build Next standalone masih mengeluarkan warning Prisma saat static generation jika DB lokal di builder tidak hidup; warning ini tidak menggagalkan artifact.

File yang Perlu Diperhatikan Pada Turn Berikutnya

Langkah Lanjutan Paling Masuk Akal

  1. Untuk server dev, update dari Git dan rebuild:
    • git pull origin main
    • npm install --include=dev
    • npx prisma generate
    • npm run build
    • restart service dev.
  2. Verifikasi flow baru:
    • buat/edit purchase
    • klik Ajukan
    • buka Pembelian -> Penerimaan
    • buat receipt
    • klik Buat lot
    • cek lot dan realisasi terbentuk.
  3. Jika server Alpine belum diupdate, upload:
    • abelbirdnest-release-alpine-amd64-20260522-0635.tar.gz
    • master-seed-from-local-20260522.sql
    • seed-system-admin-wirabasalamah.sql
  4. Import master data lokal jika database fresh.
  5. Verifikasi login SYSTEM_ADMIN.
  6. Verifikasi halaman /profile:
    • name, email, phone editable
    • username readonly
  7. Verifikasi dashboard spacing.
  8. Kalau perlu artifact baru lagi, pakai script Alpine dengan DOCKER_PLATFORM=linux/amd64.

Catatan Penutup