Membangun platform AgriHub Indonesia sebagai monorepo lengkap berdasarkan PDF plan. Platform ini menghubungkan petani-konsumen via marketplace, AI chatbot RAG berbasis Puter.js, WhatsApp Bot (Baileys.js), pembayaran Midtrans + escrow, pemantauan harga pangan, dan logistik Biteship.
Root workspace config dengan npm workspaces pointing ke packages/*. Scripts: dev, build, lint.
Root TypeScript config dengan references ke masing-masing package.
Node_modules, dist, .env, dev.db, .baileys.
Template env vars untuk server.
Types: User, Product, Order, Wallet, SupplyDemand, PriceData, Message.
Konstanta: komisi fee, platform commission rate, escrow window.
Dependencies: express, knex, better-sqlite3, pg, puter, baileys, midtrans-client, axios, multer, helmet, cors, jsonwebtoken, bcryptjs.
Entry point Express server dengan auto-migration.
Knex config (SQLite dev / PostgreSQL prod).
Migration files untuk semua tabel: users, products, orders, wallets, transactions, supply_demand, price_data, rag_documents, group_credits, whatsapp_sessions.
Seed data: 100+ jenis tanaman Indonesia dengan info dasar.
auth.ts (Puter OAuth + JWT), errorHandler.ts, upload.ts (multer).
auth.ts— login, logout, profile (Enhanced: identifier-based login, Puter OAuth, magic links)products.ts— CRUD marketplace (Updated: includes store_postal_code)orders.ts— buat order, status (Updated: includes shipping_fee, courier, service)escrow.ts— hold, release, disputewallet.ts— saldo, withdrawrag.ts— upload dokumen, chat AIwhatsapp.ts— QR, status botsupply-demand.ts— input stok/demand, matchingprice-monitor.ts— data harga, prediksishipping.ts— Biteship ongkir, booking, trackingwebhook.ts— Midtrans webhook (Updated: shipping cost line-item handling)wa_magic_sessions.ts— [NEW] Handles proof-of-ownership via WA bot magic links
ragService.ts— Puter.js AI + embedding + retrievaldocumentParser.ts— PDF, DOCX, XLSX, URL, YouTube parserwhatsappBot.ts— Baileys.js bot logicmidtransService.ts— Snap + webhook handlerescrowService.ts— escrow state machinematchingService.ts— supply-demand matching algorithmscrapingService.ts— harga pangan scraperbiteshipService.ts— Biteship API wrapper
Dependencies: react, react-dom, react-router-dom, @radix-ui/*, framer-motion, recharts, leaflet, puter, tailwindcss, axios.
Vite config + proxy ke server :3001.
Tailwind v4 dengan Forest Green theme:
- Primary:
#2D6A4F(forest green) - Accent:
#52B788 - Background:
#F8FAF9
Service Worker untuk loading progress bar saat load aset Vite.
LandingPage.tsx— Hero section, 4 pilar, fitur utamaLoginPage.tsx— Puter OAuth loginDashboardPage.tsx— Overview statsMarketplacePage.tsx— Browse produk petaniProductDetailPage.tsx— Detail produk + orderSellerDashboard.tsx— Manajemen toko petaniChatPage.tsx— AI chatbot RAGPriceMonitorPage.tsx— Chart harga pangan + mapOrdersPage.tsx— Daftar pesananWalletPage.tsx— Saldo & transaksiAdminPage.tsx— Admin panel
- Layout:
Sidebar.tsx,Header.tsx,Footer.tsx - UI:
Button.tsx,Card.tsx,Badge.tsx,Modal.tsx,LoadingBar.tsx - Charts:
PriceChart.tsx(Recharts),DistributionMap.tsx(Leaflet) - Features:
ProductCard.tsx,ChatMessage.tsx,EscrowStatus.tsx
# Install dependencies
cd d:\CraftThingy\AgriHub
npm install
# Start server dev
npm run dev --workspace=packages/server
# Start client dev
npm run dev --workspace=packages/clientManual: Buka browser → http://localhost:5173 (landing page muncul, green theme) → http://localhost:3001/health (returns {status: "ok"}).
# Test RAG endpoint
curl -X POST http://localhost:3001/api/rag/chat -H "Content-Type: application/json" -d '{"message": "Apa penyakit umum tanaman padi?"}'Manual: Scan QR WhatsApp → kirim pesan /stok → bot membalas menu stok.
Manual: Lakukan checkout produk → redirect ke Midtrans Snap → bayar sandbox → webhook fires → status order berubah ke paid.
Manual: Buka /price-monitor → chart harga pangan tampil → map Leaflet tampil distribusi supply/demand.
# Test matching endpoint
curl -X GET http://localhost:3001/api/supply-demand/matches?wilayah=jawa-barat