IPB-Pre-Loved

🏗️ Dokumentasi Backend & Modular Monolith

Dokumen ini berisi standar teknis, struktur database, dan panduan integrasi bagi tim frontend untuk proyek IPB Pre-Loved.

🚀 Filosofi Arsitektur

Kita menggunakan Modular Monolith dengan Next.js App Router. Setiap fitur utama (Auth, Product, Catalog, Admin, dll) memiliki folder modulnya sendiri di src/modules/.

1. Keamanan & Role (Guard Logic)

Sistem memiliki 4 role utama:

2. Alur Onboarding (Security First)

3. Alur Seller & QC (Bait & Switch Protection)

4. Modular Boundaries & 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.

🛠️ Aturan Pengembangan (PENTING)

[!IMPORTANT]

  1. Jangan instal package yang makan memori besar atau berbayar, gunakan ekosistem Cloudflare.
  2. Dilarang bikin fitur Keranjang/Checkout/Chatting, semuanya direct ke WhatsApp!
  3. Jangan ubah schema database tanpa persetujuan lewat grup, karena ini ngaruh banget ke query UI/UX.

🤖 7. AGENT INTEGRATION GUIDE (FOR DEVELOPER 2 & 3)

Dokumen ini adalah kontrak antara Backend Agent dan Frontend Agent.

A. Modular Server Actions

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

B. Role-Based Logic (Frontend Rules)