push docs
Browse files- DEVELOPMENT_LOG.md +82 -8
- TODO_BUSINESS_MODEL.md +286 -0
DEVELOPMENT_LOG.md
CHANGED
|
@@ -69,12 +69,16 @@ Zurri is an AI Agents Marketplace platform with a chat protocol, wallet point sy
|
|
| 69 |
- Verification status
|
| 70 |
- [x] Creator dashboard endpoints (overview, earnings)
|
| 71 |
- [x] Earnings tracking with time-series data
|
|
|
|
| 72 |
|
| 73 |
### β
Admin Dashboard
|
| 74 |
- [x] Admin authentication middleware
|
| 75 |
- [x] Admin overview endpoint with platform statistics
|
| 76 |
- [x] Platform metrics (users, agents, messages, points volume)
|
| 77 |
- [x] Date range filters
|
|
|
|
|
|
|
|
|
|
| 78 |
|
| 79 |
### β
IPFS Integration (Pinata)
|
| 80 |
- [x] Pinata SDK integration
|
|
@@ -91,14 +95,23 @@ Zurri is an AI Agents Marketplace platform with a chat protocol, wallet point sy
|
|
| 91 |
- [x] Example values
|
| 92 |
|
| 93 |
### β
Security & Best Practices
|
| 94 |
-
- [x] JWT authentication
|
| 95 |
-
- [x] Password hashing (bcrypt)
|
| 96 |
-
- [x]
|
| 97 |
-
- [x]
|
| 98 |
-
- [x]
|
| 99 |
-
- [x]
|
| 100 |
-
- [x]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
- [x] Environment variable management
|
|
|
|
| 102 |
|
| 103 |
### β
Deployment
|
| 104 |
- [x] Dockerfile for Hugging Face Spaces
|
|
@@ -116,10 +129,50 @@ Zurri is an AI Agents Marketplace platform with a chat protocol, wallet point sy
|
|
| 116 |
- Exchange rate management operational
|
| 117 |
- Complete API documentation
|
| 118 |
- Docker deployment ready
|
|
|
|
|
|
|
| 119 |
|
| 120 |
### π In Progress
|
| 121 |
- None
|
| 122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 123 |
### π Next Milestone: Frontend Development
|
| 124 |
The frontend will be built in a separate milestone. The backend is ready to serve API requests.
|
| 125 |
|
|
@@ -129,6 +182,9 @@ The frontend will be built in a separate milestone. The backend is ready to serv
|
|
| 129 |
- `POST /api/auth/register` - User registration
|
| 130 |
- `POST /api/auth/login` - User login
|
| 131 |
- `GET /api/auth/me` - Get current user profile
|
|
|
|
|
|
|
|
|
|
| 132 |
|
| 133 |
### Creator Authentication
|
| 134 |
- `POST /api/creator-auth/register` - Creator registration
|
|
@@ -218,5 +274,23 @@ The frontend will be built in a separate milestone. The backend is ready to serv
|
|
| 218 |
- Frontend development will be done in a separate milestone
|
| 219 |
- Backend is production-ready and deployed on Hugging Face Spaces
|
| 220 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 221 |
## Last Updated
|
| 222 |
-
2024-
|
|
|
|
| 69 |
- Verification status
|
| 70 |
- [x] Creator dashboard endpoints (overview, earnings)
|
| 71 |
- [x] Earnings tracking with time-series data
|
| 72 |
+
- [x] Total points earned tracking (gross earnings)
|
| 73 |
|
| 74 |
### β
Admin Dashboard
|
| 75 |
- [x] Admin authentication middleware
|
| 76 |
- [x] Admin overview endpoint with platform statistics
|
| 77 |
- [x] Platform metrics (users, agents, messages, points volume)
|
| 78 |
- [x] Date range filters
|
| 79 |
+
- [x] Admin payment exemption for testing unapproved agents
|
| 80 |
+
- [x] Admin can test pending/rejected agents without payment
|
| 81 |
+
- [x] Admin test transactions tracked separately (ADMIN_TEST type)
|
| 82 |
|
| 83 |
### β
IPFS Integration (Pinata)
|
| 84 |
- [x] Pinata SDK integration
|
|
|
|
| 95 |
- [x] Example values
|
| 96 |
|
| 97 |
### β
Security & Best Practices
|
| 98 |
+
- [x] JWT authentication with enhanced validation
|
| 99 |
+
- [x] Password hashing (bcrypt, 12 rounds)
|
| 100 |
+
- [x] Password strength validation (8+ chars, uppercase, lowercase, number, special char)
|
| 101 |
+
- [x] Forgot password functionality with secure reset tokens
|
| 102 |
+
- [x] Password reset with token expiration (1 hour)
|
| 103 |
+
- [x] Change password endpoint for authenticated users
|
| 104 |
+
- [x] Account lockout after 5 failed login attempts (30-minute lockout)
|
| 105 |
+
- [x] Failed login attempt tracking
|
| 106 |
+
- [x] CORS configuration with origin validation
|
| 107 |
+
- [x] Helmet security headers (CSP, HSTS, XSS protection, frame guard)
|
| 108 |
+
- [x] Rate limiting (general API, auth endpoints, password reset)
|
| 109 |
+
- [x] Input sanitization (XSS prevention)
|
| 110 |
+
- [x] Request size validation
|
| 111 |
+
- [x] Request logging
|
| 112 |
+
- [x] Error handling with secure messages
|
| 113 |
- [x] Environment variable management
|
| 114 |
+
- [x] Trust proxy configuration for rate limiting
|
| 115 |
|
| 116 |
### β
Deployment
|
| 117 |
- [x] Dockerfile for Hugging Face Spaces
|
|
|
|
| 129 |
- Exchange rate management operational
|
| 130 |
- Complete API documentation
|
| 131 |
- Docker deployment ready
|
| 132 |
+
- Security enhancements (password reset, account lockout, rate limiting)
|
| 133 |
+
- Admin testing capabilities (no payment for unapproved agents)
|
| 134 |
|
| 135 |
### π In Progress
|
| 136 |
- None
|
| 137 |
|
| 138 |
+
### π Pending: Business Model Implementation
|
| 139 |
+
|
| 140 |
+
#### Payout System & Commission Model
|
| 141 |
+
The following features need to be implemented to complete the business model:
|
| 142 |
+
|
| 143 |
+
1. **Platform Commission System**
|
| 144 |
+
- [ ] Configure platform commission percentage (e.g., 20-30%)
|
| 145 |
+
- [ ] Store commission rate in environment variables or database
|
| 146 |
+
- [ ] Calculate creator earnings after platform cut
|
| 147 |
+
- [ ] Track platform revenue separately
|
| 148 |
+
|
| 149 |
+
2. **Creator Earnings Calculation**
|
| 150 |
+
- [ ] Update earnings endpoints to show net earnings (after platform cut)
|
| 151 |
+
- [ ] Track gross vs net earnings per transaction
|
| 152 |
+
- [ ] Calculate platform revenue from each transaction
|
| 153 |
+
- [ ] Display earnings breakdown (gross, platform fee, net)
|
| 154 |
+
|
| 155 |
+
3. **Payout System**
|
| 156 |
+
- [ ] Create Payout entity (pending, processing, completed, failed)
|
| 157 |
+
- [ ] Payout request endpoint for creators
|
| 158 |
+
- [ ] Minimum payout threshold (e.g., $10 or 200 points)
|
| 159 |
+
- [ ] Payout approval workflow (admin approval)
|
| 160 |
+
- [ ] Payout processing (manual or automated via Paystack transfers)
|
| 161 |
+
- [ ] Payout history for creators
|
| 162 |
+
- [ ] Payout management for admins
|
| 163 |
+
|
| 164 |
+
4. **Financial Tracking**
|
| 165 |
+
- [ ] Track platform revenue (total commission earned)
|
| 166 |
+
- [ ] Track creator payouts (total paid out)
|
| 167 |
+
- [ ] Track pending payouts
|
| 168 |
+
- [ ] Financial reporting for admins
|
| 169 |
+
|
| 170 |
+
5. **Integration Requirements**
|
| 171 |
+
- [ ] Paystack transfer API integration for automated payouts
|
| 172 |
+
- [ ] Bank account verification for creators
|
| 173 |
+
- [ ] Tax document handling (if required)
|
| 174 |
+
- [ ] Payout notifications (email/webhook)
|
| 175 |
+
|
| 176 |
### π Next Milestone: Frontend Development
|
| 177 |
The frontend will be built in a separate milestone. The backend is ready to serve API requests.
|
| 178 |
|
|
|
|
| 182 |
- `POST /api/auth/register` - User registration
|
| 183 |
- `POST /api/auth/login` - User login
|
| 184 |
- `GET /api/auth/me` - Get current user profile
|
| 185 |
+
- `POST /api/auth/forgot-password` - Request password reset
|
| 186 |
+
- `POST /api/auth/reset-password` - Reset password with token
|
| 187 |
+
- `POST /api/auth/change-password` - Change password (authenticated)
|
| 188 |
|
| 189 |
### Creator Authentication
|
| 190 |
- `POST /api/creator-auth/register` - Creator registration
|
|
|
|
| 274 |
- Frontend development will be done in a separate milestone
|
| 275 |
- Backend is production-ready and deployed on Hugging Face Spaces
|
| 276 |
|
| 277 |
+
## Recent Updates
|
| 278 |
+
|
| 279 |
+
### Security Enhancements (2024-11-04)
|
| 280 |
+
- Implemented comprehensive password security (strength validation, reset flow)
|
| 281 |
+
- Added account lockout after failed login attempts
|
| 282 |
+
- Enhanced rate limiting for authentication endpoints
|
| 283 |
+
- Added input sanitization and XSS protection
|
| 284 |
+
- Configured trust proxy for rate limiting behind proxies
|
| 285 |
+
|
| 286 |
+
### Admin Features (2024-11-04)
|
| 287 |
+
- Admins can test unapproved agents without payment
|
| 288 |
+
- Admin test transactions tracked separately
|
| 289 |
+
- Admin can view history for any agent status
|
| 290 |
+
|
| 291 |
+
### Business Model (Pending)
|
| 292 |
+
- Commission system and payout infrastructure planned
|
| 293 |
+
- See `TODO_BUSINESS_MODEL.md` for detailed implementation plan
|
| 294 |
+
|
| 295 |
## Last Updated
|
| 296 |
+
2024-11-04
|
TODO_BUSINESS_MODEL.md
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Business Model Implementation TODOs
|
| 2 |
+
|
| 3 |
+
## Overview
|
| 4 |
+
This document outlines the remaining tasks to implement the complete business model for Zurri, including platform commission, creator payouts, and financial tracking.
|
| 5 |
+
|
| 6 |
+
## Platform Commission System
|
| 7 |
+
|
| 8 |
+
### 1. Commission Configuration
|
| 9 |
+
- [ ] **Environment Variable**: Add `PLATFORM_COMMISSION_PERCENTAGE` (default: 20%)
|
| 10 |
+
- [ ] **Database Config**: Optionally store commission rate in database for dynamic changes
|
| 11 |
+
- [ ] **Commission Service**: Create `CommissionService` to calculate:
|
| 12 |
+
- Platform commission from transaction
|
| 13 |
+
- Creator net earnings
|
| 14 |
+
- Platform revenue
|
| 15 |
+
|
| 16 |
+
### 2. Transaction Updates
|
| 17 |
+
- [ ] **Modify Transaction Entity**: Add fields for commission tracking:
|
| 18 |
+
- `platformCommission` (decimal) - Points taken as commission
|
| 19 |
+
- `creatorEarnings` (decimal) - Points earned by creator (net)
|
| 20 |
+
- `grossAmount` (decimal) - Total points charged (already exists as `amount`)
|
| 21 |
+
- [ ] **Update WalletService.chargeForTask()**:
|
| 22 |
+
- Calculate commission when charging user
|
| 23 |
+
- Store commission and creator earnings in transaction
|
| 24 |
+
- Track creator earnings separately
|
| 25 |
+
|
| 26 |
+
### 3. Earnings Calculation
|
| 27 |
+
- [ ] **Update CreatorController.earnings()**:
|
| 28 |
+
- Show net earnings (after commission)
|
| 29 |
+
- Show platform fee breakdown
|
| 30 |
+
- Show gross earnings for reference
|
| 31 |
+
- [ ] **Update CreatorController.overview()**:
|
| 32 |
+
- Display gross earnings, platform fee, net earnings
|
| 33 |
+
- Show pending payout amount
|
| 34 |
+
- Show total paid out
|
| 35 |
+
|
| 36 |
+
## Payout System
|
| 37 |
+
|
| 38 |
+
### 4. Payout Entity
|
| 39 |
+
- [ ] **Create Payout Entity**:
|
| 40 |
+
```typescript
|
| 41 |
+
- id: UUID
|
| 42 |
+
- creatorId: string (FK to User)
|
| 43 |
+
- amount: decimal (points to payout)
|
| 44 |
+
- amountInCurrency: decimal (converted to preferred currency)
|
| 45 |
+
- currency: string (USD, NGN, etc.)
|
| 46 |
+
- status: enum (pending, processing, completed, failed, cancelled)
|
| 47 |
+
- payoutMethod: enum (bank_transfer, wallet_address)
|
| 48 |
+
- bankAccount?: jsonb (if bank transfer)
|
| 49 |
+
- walletAddress?: string (if crypto)
|
| 50 |
+
- paymentReference?: string (Paystack transfer reference)
|
| 51 |
+
- processedAt?: Date
|
| 52 |
+
- processedBy?: string (Admin user ID)
|
| 53 |
+
- failureReason?: string
|
| 54 |
+
- metadata?: jsonb
|
| 55 |
+
- createdAt: Date
|
| 56 |
+
- updatedAt: Date
|
| 57 |
+
```
|
| 58 |
+
|
| 59 |
+
### 5. Payout Endpoints
|
| 60 |
+
|
| 61 |
+
#### Creator Endpoints
|
| 62 |
+
- [ ] **POST /api/creators/payouts/request**
|
| 63 |
+
- Request payout (minimum threshold check)
|
| 64 |
+
- Validate payout method (bank account or wallet)
|
| 65 |
+
- Create pending payout record
|
| 66 |
+
- Deduct from creator's available earnings
|
| 67 |
+
|
| 68 |
+
- [ ] **GET /api/creators/payouts**
|
| 69 |
+
- List creator's payout history
|
| 70 |
+
- Filter by status, date range
|
| 71 |
+
- Pagination
|
| 72 |
+
|
| 73 |
+
- [ ] **GET /api/creators/payouts/:id**
|
| 74 |
+
- Get payout details
|
| 75 |
+
|
| 76 |
+
#### Admin Endpoints
|
| 77 |
+
- [ ] **GET /api/admin/payouts**
|
| 78 |
+
- List all pending/completed payouts
|
| 79 |
+
- Filter by status, creator, date range
|
| 80 |
+
- Pagination
|
| 81 |
+
|
| 82 |
+
- [ ] **POST /api/admin/payouts/:id/approve**
|
| 83 |
+
- Approve payout
|
| 84 |
+
- Initiate Paystack transfer (if automated)
|
| 85 |
+
- Update payout status
|
| 86 |
+
|
| 87 |
+
- [ ] **POST /api/admin/payouts/:id/reject**
|
| 88 |
+
- Reject payout with reason
|
| 89 |
+
- Return earnings to creator's available balance
|
| 90 |
+
|
| 91 |
+
- [ ] **POST /api/admin/payouts/:id/process**
|
| 92 |
+
- Mark payout as processing
|
| 93 |
+
- For manual processing workflows
|
| 94 |
+
|
| 95 |
+
- [ ] **GET /api/admin/payouts/stats**
|
| 96 |
+
- Total pending payouts
|
| 97 |
+
- Total paid out (all time)
|
| 98 |
+
- Payouts by status
|
| 99 |
+
|
| 100 |
+
### 6. Payout Service
|
| 101 |
+
- [ ] **Create PayoutService**:
|
| 102 |
+
- `calculateAvailableEarnings(userId)` - Calculate creator's available balance
|
| 103 |
+
- `requestPayout(userId, amount, method)` - Create payout request
|
| 104 |
+
- `processPayout(payoutId, adminId)` - Process approved payout
|
| 105 |
+
- `processPaystackTransfer(payout)` - Automated transfer via Paystack
|
| 106 |
+
- `validatePayoutMethod(creator, method)` - Validate bank account/wallet
|
| 107 |
+
- `checkMinimumThreshold(amount)` - Verify minimum payout amount
|
| 108 |
+
|
| 109 |
+
### 7. Payout Processing
|
| 110 |
+
- [ ] **Manual Processing**:
|
| 111 |
+
- Admin reviews and approves payout
|
| 112 |
+
- Admin initiates bank transfer manually
|
| 113 |
+
- Admin marks as completed
|
| 114 |
+
|
| 115 |
+
- [ ] **Automated Processing**:
|
| 116 |
+
- Integrate Paystack Transfer API
|
| 117 |
+
- Auto-initiate transfer on approval
|
| 118 |
+
- Webhook handling for transfer status
|
| 119 |
+
- Retry logic for failed transfers
|
| 120 |
+
|
| 121 |
+
### 8. Payout Configuration
|
| 122 |
+
- [ ] **Environment Variables**:
|
| 123 |
+
- `MINIMUM_PAYOUT_POINTS` (default: 200 points = $10)
|
| 124 |
+
- `PAYOUT_ENABLED` (boolean)
|
| 125 |
+
- `PAYSTACK_TRANSFER_ENABLED` (boolean)
|
| 126 |
+
- `PAYSTACK_TRANSFER_SOURCE` (balance, account)
|
| 127 |
+
|
| 128 |
+
## Financial Tracking
|
| 129 |
+
|
| 130 |
+
### 9. Platform Revenue Tracking
|
| 131 |
+
- [ ] **Create PlatformRevenue Entity** (optional) or use Transaction aggregation:
|
| 132 |
+
- Track total commission earned
|
| 133 |
+
- Track by time period (daily, monthly, yearly)
|
| 134 |
+
- Track by agent/category
|
| 135 |
+
|
| 136 |
+
- [ ] **Admin Dashboard Updates**:
|
| 137 |
+
- Total platform revenue
|
| 138 |
+
- Commission breakdown
|
| 139 |
+
- Revenue trends (charts)
|
| 140 |
+
- Top revenue-generating agents
|
| 141 |
+
|
| 142 |
+
### 10. Creator Financial Dashboard
|
| 143 |
+
- [ ] **Enhanced Earnings Display**:
|
| 144 |
+
- Gross earnings (total points earned)
|
| 145 |
+
- Platform fee (commission deducted)
|
| 146 |
+
- Net earnings (available for payout)
|
| 147 |
+
- Pending payout amount
|
| 148 |
+
- Total paid out (all time)
|
| 149 |
+
- Next payout date (if scheduled)
|
| 150 |
+
|
| 151 |
+
### 11. Transaction Metadata
|
| 152 |
+
- [ ] **Update Transaction Metadata**:
|
| 153 |
+
- Store commission breakdown in metadata
|
| 154 |
+
- Store creator earnings in metadata
|
| 155 |
+
- Store payout information (if applicable)
|
| 156 |
+
|
| 157 |
+
## Integration Requirements
|
| 158 |
+
|
| 159 |
+
### 12. Paystack Transfer API
|
| 160 |
+
- [ ] **Paystack Transfer Integration**:
|
| 161 |
+
- Single transfer endpoint
|
| 162 |
+
- Bulk transfer endpoint (for batch payouts)
|
| 163 |
+
- Transfer recipient management
|
| 164 |
+
- Transfer status webhooks
|
| 165 |
+
- Error handling and retry logic
|
| 166 |
+
|
| 167 |
+
- [ ] **Recipient Management**:
|
| 168 |
+
- Create transfer recipient (bank account)
|
| 169 |
+
- Verify recipient details
|
| 170 |
+
- Store recipient codes
|
| 171 |
+
|
| 172 |
+
### 13. Bank Account Verification
|
| 173 |
+
- [ ] **Bank Account Validation**:
|
| 174 |
+
- Verify account number with bank code (Paystack)
|
| 175 |
+
- Validate account name matches
|
| 176 |
+
- Store verified account details
|
| 177 |
+
- Re-verification on payout requests
|
| 178 |
+
|
| 179 |
+
### 14. Currency Conversion
|
| 180 |
+
- [ ] **Payout Currency Conversion**:
|
| 181 |
+
- Convert points to creator's preferred currency
|
| 182 |
+
- Use current exchange rates
|
| 183 |
+
- Display in both points and currency
|
| 184 |
+
- Handle currency fluctuations
|
| 185 |
+
|
| 186 |
+
## Security & Compliance
|
| 187 |
+
|
| 188 |
+
### 15. Payout Security
|
| 189 |
+
- [ ] **Rate Limiting**: Limit payout requests per creator
|
| 190 |
+
- [ ] **Verification**: Require verified creator profile for payouts
|
| 191 |
+
- [ ] **Audit Trail**: Log all payout actions (create, approve, process, reject)
|
| 192 |
+
- [ ] **Admin Authorization**: Require admin role for payout processing
|
| 193 |
+
- [ ] **Payout Limits**: Maximum payout amount per request/period
|
| 194 |
+
|
| 195 |
+
### 16. Tax & Compliance
|
| 196 |
+
- [ ] **Tax ID Collection**: Already in CreatorProfile
|
| 197 |
+
- [ ] **Tax Reporting**: Generate tax reports (if needed)
|
| 198 |
+
- [ ] **KYC Verification**: Link payout eligibility to verification status
|
| 199 |
+
- [ ] **Document Verification**: Verify ID documents before first payout
|
| 200 |
+
|
| 201 |
+
## Database Migrations
|
| 202 |
+
|
| 203 |
+
### 17. Schema Updates
|
| 204 |
+
- [ ] **Transaction Table**:
|
| 205 |
+
- Add `platformCommission` column
|
| 206 |
+
- Add `creatorEarnings` column
|
| 207 |
+
- Add migration for existing transactions
|
| 208 |
+
|
| 209 |
+
- [ ] **Payout Table**:
|
| 210 |
+
- Create `payouts` table
|
| 211 |
+
- Add indexes (creatorId, status, createdAt)
|
| 212 |
+
- Add foreign keys
|
| 213 |
+
|
| 214 |
+
- [ ] **Platform Revenue Table** (optional):
|
| 215 |
+
- Create `platform_revenue` table for aggregated tracking
|
| 216 |
+
|
| 217 |
+
## Testing
|
| 218 |
+
|
| 219 |
+
### 18. Unit Tests
|
| 220 |
+
- [ ] Test commission calculation
|
| 221 |
+
- [ ] Test payout request validation
|
| 222 |
+
- [ ] Test minimum threshold checks
|
| 223 |
+
- [ ] Test currency conversion
|
| 224 |
+
- [ ] Test payout status transitions
|
| 225 |
+
|
| 226 |
+
### 19. Integration Tests
|
| 227 |
+
- [ ] Test Paystack transfer integration
|
| 228 |
+
- [ ] Test payout approval workflow
|
| 229 |
+
- [ ] Test payout rejection and refund
|
| 230 |
+
- [ ] Test earnings calculation accuracy
|
| 231 |
+
|
| 232 |
+
## Documentation
|
| 233 |
+
|
| 234 |
+
### 20. API Documentation
|
| 235 |
+
- [ ] Swagger documentation for all payout endpoints
|
| 236 |
+
- [ ] Payout flow documentation
|
| 237 |
+
- [ ] Commission calculation examples
|
| 238 |
+
- [ ] Paystack transfer setup guide
|
| 239 |
+
|
| 240 |
+
### 21. Business Rules Documentation
|
| 241 |
+
- [ ] Commission percentage explanation
|
| 242 |
+
- [ ] Payout minimum threshold
|
| 243 |
+
- [ ] Payout processing timeframes
|
| 244 |
+
- [ ] Payout method requirements
|
| 245 |
+
|
| 246 |
+
## Priority Order
|
| 247 |
+
|
| 248 |
+
### Phase 1: Core Business Model (High Priority)
|
| 249 |
+
1. Commission calculation and tracking
|
| 250 |
+
2. Update earnings endpoints with net/gross breakdown
|
| 251 |
+
3. Payout entity creation
|
| 252 |
+
4. Basic payout request endpoint
|
| 253 |
+
|
| 254 |
+
### Phase 2: Payout Processing (Medium Priority)
|
| 255 |
+
5. Admin payout approval
|
| 256 |
+
6. Manual payout processing
|
| 257 |
+
7. Payout history and tracking
|
| 258 |
+
|
| 259 |
+
### Phase 3: Automation (Lower Priority)
|
| 260 |
+
8. Paystack transfer integration
|
| 261 |
+
9. Automated payout processing
|
| 262 |
+
10. Bulk payout support
|
| 263 |
+
|
| 264 |
+
### Phase 4: Advanced Features (Future)
|
| 265 |
+
11. Scheduled payouts
|
| 266 |
+
12. Advanced financial reporting
|
| 267 |
+
13. Tax document generation
|
| 268 |
+
14. Multi-currency support enhancements
|
| 269 |
+
|
| 270 |
+
## Estimated Implementation Time
|
| 271 |
+
|
| 272 |
+
- **Phase 1**: 2-3 days
|
| 273 |
+
- **Phase 2**: 2-3 days
|
| 274 |
+
- **Phase 3**: 3-4 days
|
| 275 |
+
- **Phase 4**: 5-7 days
|
| 276 |
+
|
| 277 |
+
**Total**: ~12-17 days for complete business model implementation
|
| 278 |
+
|
| 279 |
+
## Notes
|
| 280 |
+
|
| 281 |
+
- Commission percentage should be configurable (start with 20-30%)
|
| 282 |
+
- Minimum payout should be reasonable (e.g., $10 or 200 points)
|
| 283 |
+
- Payout processing can start manual, then automate later
|
| 284 |
+
- Consider payout scheduling (weekly, monthly) for efficiency
|
| 285 |
+
- Track all financial data for accounting and reporting
|
| 286 |
+
|