7.7 KiB
Frontend Structure Sistem Inventory Walet
1. Tujuan
Dokumen ini menjelaskan struktur frontend yang disarankan untuk aplikasi inventory sarang burung walet berbasis lot, traceability, sorting, partial allocation, dan QR/barcode workflow.
Target utamanya:
- mudah dibangun bertahap
- mudah dipahami tim frontend
- mobile-friendly untuk flow gudang
- scalable untuk modul traceability dan reporting
2. Rekomendasi Stack
- Next.js / React
- TypeScript
- Tailwind CSS
- shadcn/ui atau komponen serupa
- TanStack Query untuk server state
- Zustand atau Redux Toolkit untuk local workflow state yang kompleks
- React Hook Form + Zod untuk form
- Data table component untuk list/listing besar
- QR scanner berbasis camera API di mobile web
3. Struktur Folder Tingkat Atas
src/
app/
components/
features/
lib/
hooks/
services/
types/
store/
utils/
config/
4. Struktur app/routes
src/app/
login/
page.tsx
dashboard/
page.tsx
suppliers/
page.tsx
new/page.tsx
[id]/page.tsx
[id]/bank/page.tsx
customers/
page.tsx
new/page.tsx
[id]/page.tsx
[id]/bank/page.tsx
item-types/
page.tsx
item-grades/
page.tsx
warehouses/
page.tsx
[id]/page.tsx
purchases/
page.tsx
new/page.tsx
[id]/page.tsx
[id]/edit/page.tsx
receipts/
page.tsx
new/page.tsx
[id]/page.tsx
lots/
page.tsx
[id]/page.tsx
[id]/trace/page.tsx
sorting/
page.tsx
new/page.tsx
[id]/page.tsx
regrade/
new/page.tsx
sales/
page.tsx
new/page.tsx
[id]/page.tsx
[id]/allocation/page.tsx
[id]/picking/page.tsx
adjustments/
page.tsx
new/page.tsx
returns/
sales/page.tsx
purchase/page.tsx
barcode/
scan/page.tsx
lookup/page.tsx
reports/
stock-summary/page.tsx
stock-lots/page.tsx
purchases/page.tsx
sales/page.tsx
margins/page.tsx
shrinkage/page.tsx
traceability/page.tsx
settings/
page.tsx
5. Struktur Features
Setiap domain besar sebaiknya punya feature sendiri.
src/features/
auth/
dashboard/
suppliers/
customers/
item-types/
item-grades/
warehouses/
purchases/
receipts/
lots/
sorting/
regrade/
sales/
allocations/
adjustments/
returns/
barcode/
reports/
6. Contoh Isi Tiap Feature
Catatan domain tambahan:
- feature suppliers dan customers perlu mendukung field
bank_namedanbank_account_number - halaman detail supplier/customer sebaiknya punya section informasi pembayaran
Contoh feature purchases:
src/features/purchases/
api/
get-purchases.ts
get-purchase-detail.ts
create-purchase.ts
update-purchase.ts
components/
purchase-form.tsx
purchase-line-table.tsx
purchase-status-badge.tsx
purchase-filter.tsx
hooks/
use-purchase-form.ts
use-purchases-query.ts
schemas/
purchase.schema.ts
types/
purchase.type.ts
Contoh feature sales:
src/features/sales/
api/
get-sales.ts
get-sales-detail.ts
create-sales.ts
allocate-sales.ts
confirm-picking.ts
components/
sales-form.tsx
sales-line-table.tsx
allocation-panel.tsx
picking-panel.tsx
sales-summary-card.tsx
hooks/
use-sales-form.ts
use-allocation.ts
use-picking.ts
schemas/
sales.schema.ts
types/
sales.type.ts
7. Shared Components
src/components/
ui/
layout/
app-shell.tsx
sidebar.tsx
topbar.tsx
mobile-nav.tsx
tables/
data-table.tsx
table-toolbar.tsx
forms/
form-field.tsx
number-input.tsx
date-picker.tsx
select-async.tsx
status/
status-badge.tsx
stock-badge.tsx
cards/
metric-card.tsx
lot-card.tsx
dialogs/
confirm-dialog.tsx
allocation-dialog.tsx
trace-dialog.tsx
scanners/
qr-scanner.tsx
barcode-input.tsx
8. Services Layer
Pisahkan akses API dari komponen.
src/services/
api-client.ts
auth.service.ts
supplier.service.ts
purchase.service.ts
receipt.service.ts
lot.service.ts
sorting.service.ts
sales.service.ts
adjustment.service.ts
report.service.ts
9. Types Layer
src/types/
api.ts
auth.ts
supplier.ts
customer.ts
item.ts
warehouse.ts
purchase.ts
receipt.ts
lot.ts
sorting.ts
sales.ts
report.ts
10. State Management
Server state
Gunakan TanStack Query untuk:
- fetch list
- detail view
- mutation create/update
- invalidate cache
Local workflow state
Gunakan Zustand/Redux untuk flow kompleks seperti:
- sales allocation draft
- picking workflow
- sorting result draft
- scanner temporary state
11. Halaman Paling Kritis
A. Stock Lot List
Kebutuhan:
- filter kuat
- table cepat
- klik ke lot detail
- status warna
B. Lot Detail
Kebutuhan:
- identitas lot jelas
- parent-child relation
- movement timeline
- link ke sales/purchase/receipt
- aksi cepat hold/release/regrade/transfer
C. Allocation Screen
Kebutuhan:
- sales line summary di atas
- list lot tersedia
- qty allocation editor
- auto allocate FIFO
- kalkulasi total costing real-time
- validasi total qty
D. Picking Screen
Kebutuhan:
- scan QR
- tampil lot teralokasi
- input qty picked aktual
- error warning jika beda dari alokasi
E. Barcode Lookup Screen
Kebutuhan:
- buka cepat dari scan
- tampil ringkas tapi informatif
- tombol ke lot detail
12. Layout dan UX
Desktop
Cocok untuk:
- dashboard
- purchasing
- reports
- stock table besar
Mobile
Cocok untuk:
- scanning
- receiving
- picking
- transfer lot
- quick lot lookup
Saran:
- gunakan responsive layout, bukan dua app terpisah dulu
- fokus mobile-first pada layar operasional gudang
13. Form Strategy
Gunakan form section
Untuk form besar seperti purchase, receipt, sales:
- header section
- detail lines section
- summary section
- actions footer sticky
Untuk line items
Gunakan editable table atau repeater row.
14. Component Priorities MVP
Bangun komponen inti dulu:
- app shell
- data table
- form field library
- status badge
- QR scanner
- allocation panel
- movement timeline
- lot summary card
15. Flow Antar Halaman
Purchase to Receipt
Purchase List -> Purchase Detail -> Create Receipt -> Receipt Detail -> Generate Lots -> Lot Detail
Lot to Sorting
Lot List -> Lot Detail -> Create Sorting -> Sorting Result -> Child Lot Detail
Sales Flow
Sales List -> Create Sales -> Allocation Screen -> Picking Screen -> Sales Detail
Scan Flow
Scan Page -> Lookup Result -> Lot Detail / Picking / Transfer
16. Permissions UI
Owner
- read mostly all
- no heavy transactional edit by default
Purchasing
- purchase pages
Warehouse
- receipt, lots, transfer, adjustment, barcode
QC
- sorting, regrade
Sales
- sales, allocation, picking
UI harus hide action sesuai role.
17. Frontend API Integration Pattern
Untuk tiap feature:
- query key per list/detail
- mutation untuk create/update/action
- central error handler
- loading skeleton untuk page utama
- toast notification untuk success/error
18. Frontend Deliverable yang Bisa Lanjut Dibuat
Dari struktur ini, next bisa diturunkan menjadi:
- route map detail
- component tree per halaman
- page-by-page wireframe detail
- UI kit token
- frontend task breakdown per sprint
19. Rekomendasi Eksekusi
Urutan frontend yang paling masuk akal:
- layout + auth
- master data basic pages
- purchase & receipt
- stock lot & lot detail
- sales & allocation
- sorting & regrade
- scanner flow
- reports
20. Kesimpulan
Frontend sistem walet ini sebaiknya dibangun modular per feature, dengan lot detail dan allocation flow sebagai pusat desain. Fokus utama harus pada kecepatan operasional gudang dan kejelasan traceability, bukan sekadar tampilan tabel stok biasa.