Dokumen ini berisi standar teknis, struktur database, dan panduan integrasi bagi tim frontend untuk proyek IPB Pre-Loved.
Kita menggunakan Modular Monolith dengan Next.js App Router. Setiap fitur utama (Auth, Product, Catalog, Admin, dll) memiliki folder modulnya sendiri di src/modules/.
Sistem memiliki 4 role utama:
GUEST: Belum login. Cuma bisa liat katalog.ONBOARDING: Sudah login IPB tapi belum pilih role (Buyer/Seller). Dipaksa masuk /onboarding.BUYER: Pengguna umum yang bisa belanja & wishlist.SELLER: Pengguna yang bisa buka Dashboard Penjual & listing barang.ADMIN: Pengguna dengan akses ke QC Dashboard.ONBOARDING./onboarding.completeOnboarding({ role, whatsappNumber }) dari @/modules/auth/actions.ONBOARDING.APPROVED, status produk otomatis kembali ke PENDING.updateProduct(id, formData) dari @/modules/product/actions.Berikut daftar fungsi modular yang siap digunakan oleh Frontend:
| Modul | Fungsi Utama | Kegunaan |
|---|---|---|
| Media | POST /api/upload |
Upload file (Image/Video) dengan progress bar. |
| Catalog | getApprovedProducts(filters) |
Ambil data publik dengan filter (Search, Price, Category, Condition). |
| Catalog | getProductById(id) |
Detail produk lengkap (images + video + seller info). |
| Product | createProduct({ urls, ... }) |
Simpan produk (validasi aturan 3 foto / 1+1 video). |
| Product | updateProduct(id, ...) |
Edit barang (status reset ke PENDING jika non-admin). |
| Admin | reviewProduct(...) |
Admin Approve/Reject produk + Log review. |
| User | updateSellerProfile(...) |
Update nomor WhatsApp di Settings. |
[!IMPORTANT]
- Jangan instal package yang makan memori besar atau berbayar, gunakan ekosistem Cloudflare.
- Dilarang bikin fitur Keranjang/Checkout/Chatting, semuanya direct ke WhatsApp!
- Jangan ubah schema database tanpa persetujuan lewat grup, karena ini ngaruh banget ke query UI/UX.
Dokumen ini adalah kontrak antara Backend Agent dan Frontend Agent.
Jangan mengimpor dari file actions.js tunggal lagi. Gunakan modul spesifik:
import { ... } from "@/modules/admin/actions"; // Manajemen User & DB
import { ... } from "@/modules/product/actions"; // CRUD Produk & QC
import { ... } from "@/modules/category/actions"; // Manajemen Kategori
import { ... } from "@/modules/wishlist/actions"; // Manajemen Wishlist
import { ... } from "@/modules/user/actions"; // Manajemen Profil
import { getApprovedProducts, getProductById, getFeaturedProducts } from "@/modules/catalog/services"; // Katalog & Detail
const isAdmin = session?.user?.role === "ADMIN"./onboarding.