Next.js 14 application delivering decentralized ROSCA (Rotating Savings and Credit Association) platform to 1.7B+ unbanked adults via Stellar blockchain.
Moistello digitizes traditional savings circles (esusu, tontine, chit fund) using Soroban smart contracts. Members contribute USDC/XLM regularly, receiving periodic payouts based on programmed rules.
Financial Inclusion : Banking services for unbanked adults without traditional accounts
Trustless Transparency : Smart contracts enforce rules automatically
Portable Reputation : MoiScore (0-1000) builds lifelong financial reputation
Sub-cent Fees : Stellar transactions <$0.001, protocol fee 0.5% on payouts
Type
Description
Access Control
Public
Anyone meeting minimum MoiScore can join
Permissionless
Private
Invite-only via link or code
Restricted
Community
Token-gated (DAO/token holder only)
Multi-sig
Premium
Higher limits, priority support, collateralized
Permissioned
Mode
Mechanism
Random
VRF selects recipient (provably fair)
Fixed Order
Pre-defined sequential distribution
Auction (Chit Fund)
Members bid discount, winner gets pool minus discount
Vote-Based
Community votes recipient each round
MoiScore Reputation (0-1000)
Factor
Weight
Streak (consecutive on-time payments)
35%
Completions (successful circles)
30%
Volume (total contributed)
20%
Recency (recent activity)
15%
Score tiers unlock higher circle limits and lower collateral requirements.
Category
Technology
Framework
Next.js 14 (App Router)
Language
TypeScript 5.x
Styling
Tailwind CSS 3.x
State
Zustand 5.x
Animation
Framer Motion
Icons
Lucide React
Build
Turbopack
Business-Centric Project Structure
src/
├── app/
│ ├── (auth)/
│ │ ├── login/page.tsx # 557-line login monolith
│ │ └── register/page.tsx # 914-line registration monolith
│ ├── (dashboard)/
│ │ ├── circles/page.tsx # Circle discovery/listings
│ │ ├── circles/create/page.tsx # Circle creation with 4 payout types
│ │ ├── governance/page.tsx # Community voting interface
│ │ ├── reputation/page.tsx # Score display + tier benefits
│ │ ├── wallet/page.tsx # USDC/XLM balance + transactions
│ │ └── settings/page.tsx # Profile + notification prefs
│ └── docs/ # Documentation pages
├── stores/
│ ├── multi-wallet-store.ts # Wallet connection state
│ ├── auth-store.ts # Session tokens
│ ├── ui-store.ts # Theme, toasts
│ └── auth-flow-store.ts # Auth orchestration (REDUNDANT)
└── lib/
└── wallet/
└── wc2-session-store.ts # Weak hash for session IDs (FORGEABLE)
Authentication Business Flow
[Wallet Connect] → [Sign Challenge] → [JWT Token] → [Authenticated]
[Wallet Connect] → [Passkey Email] → [Profile Setup] → [Sign & Register] → [Authenticated]
Pending : Circle created, waiting for members
Active : Contributions and payouts in progress
Completed : All members received payouts
Cancelled : Organzier cancelled before start
Disputed : Under review
Parameter
Default
Range
Late Fee
5%
Configurable
Grace Period
24h
1-168h
Max Strikes
3
1-10
Collateral
0%
Optional
Node.js 18+
npm 9+ or yarn 1.22+
Access at http://localhost:1110
Command
Description
dev
Development server on port 1110
build
Production build
lint
ESLint checks
test
Run test suite
Branch from main
Follow existing conventions
Add tests for changes
Pass npm run lint
Submit PR with description
Apache 2.0