Confirmed textile orders become accountable production capital.
Modalin is a product pre-order platform for Indonesian textile artisans. It turns product interest into structured campaigns with real products, minimum-order targets, transparent production costs, payment-backed orders, production milestones, and persistent customer records.
Modalin is built for purchases. It is not an investment, lending, equity, securities, profit-sharing, or financial-return product.
Traditional artisans often receive interest through WhatsApp, social media, exhibitions, resellers, and direct conversations. That interest is difficult to convert into a production plan: quantities remain uncertain, costs are fragmented, and artisans may need to fund materials before customer demand is confirmed.
Modalin creates one accountable flow:
- An artisan records the product, cultural context, costs, capacity, and production timeline.
- The platform calculates the minimum funding and order targets from confirmed inputs.
- Customers place product pre-orders and complete payment through Midtrans.
- Confirmed orders update campaign funding progress and production readiness.
- Production milestones and actual expenses remain visible in persistent records.
| Repository | Responsibility |
|---|---|
Modalin-FE |
React web application for public discovery, authentication, campaign creation, checkout, order history, and artisan operations |
Modalin-BE |
Express API for authentication, authorization, PostgreSQL persistence, financial rules, payments, storage, email, and production records |
The product PRD remains in the main Modalin repository. Each application repository contains its own setup and runtime documentation.
| Layer | Technology |
|---|---|
| Web | React 19, Vite 8, TypeScript, Tailwind CSS 4 |
| API | Node.js, Express 5, TypeScript, Zod |
| Authentication | Better Auth with email/password and Google OAuth |
| Data | PostgreSQL and Prisma 7 |
| Payments | Midtrans Snap checkout and payment notifications |
| Media | AWS S3 or S3-compatible object storage |
| Communication | SMTP confirmation email |
The current runtime is web-first. WhatsApp-first communication and assisted extraction are product directions, but this codebase does not claim an active WhatsApp or production AI provider integration.
- Product pre-orders, not financial products — customers purchase defined textile products.
- Confirmed inputs — artisans remain responsible for prices, capacity, timelines, and cultural claims.
- Demand-led production — campaigns connect production starts to explicit order and funding rules.
- Financial transparency — planned and actual costs remain separate and auditable.
- Realistic capacity — production commitments must respect artisan capacity and campaign deadlines.
- Persistent accountability — orders, payments, milestones, expenses, and campaign states remain recorded.
- Production services only — authentication, storage, payments, email, and data use configured providers rather than browser-only substitutes.
Start the backend first:
cd Modalin-BE
npm ci
npm run prisma:generate
npm run prisma:migrate
npm run devThen start the frontend in a second terminal:
cd Modalin-FE
npm ci
npm run devConfiguration and provider requirements are documented in each application's repository README.
The repositories currently cover public campaign discovery, account authentication, artisan onboarding, campaign creation, feasibility calculations, product checkout, payment state handling, order history, artisan dashboards, production milestones, expense records, image storage, and payment confirmation email.
Roadmap requirements that are not wired to a production provider remain requirements, not completed feature claims.