- Add Prisma schema with all database models - Creator channels, streams, VOD, clips, monetization - Real-time chat, polls, interactions - Subscriptions, donations, payouts - Social graph (followers), clips, leaderboards - Complete Platform Architecture documentation - API structure and routes documentation - Implementation roadmap (8 phases) - Updated README with platform vision - Install core dependencies: Prisma, Clerk, Stripe, Socket.io Ready for Phase 1 development with database setup.
175 lines
5 KiB
Markdown
175 lines
5 KiB
Markdown
# AeThex LIVE - API Structure
|
|
|
|
## API Routes
|
|
|
|
### Authentication
|
|
- `POST /api/auth/register` - Create account
|
|
- `POST /api/auth/login` - Login
|
|
- `POST /api/auth/logout` - Logout
|
|
- `GET /api/auth/me` - Get current user
|
|
- `POST /api/auth/refresh` - Refresh token
|
|
|
|
### Users
|
|
- `GET /api/users/:id` - Get user profile
|
|
- `PATCH /api/users/:id` - Update profile
|
|
- `GET /api/users/:id/followers` - Get user followers
|
|
- `POST /api/users/:username/follow` - Follow user
|
|
- `DELETE /api/users/:username/follow` - Unfollow user
|
|
- `GET /api/users/:id/stats` - User statistics
|
|
|
|
### Channels
|
|
- `POST /api/channels` - Create channel
|
|
- `GET /api/channels/:slug` - Get channel
|
|
- `PATCH /api/channels/:id` - Update channel
|
|
- `DELETE /api/channels/:id` - Delete channel
|
|
- `GET /api/channels/:id/streams` - Get channel streams
|
|
- `GET /api/channels/:id/followers` - Get followers
|
|
- `POST /api/channels/:id/follow` - Follow channel
|
|
- `DELETE /api/channels/:id/follow` - Unfollow channel
|
|
- `GET /api/channels/:id/analytics` - Channel analytics
|
|
- `GET /api/channels/:id/settings` - Channel settings
|
|
- `PATCH /api/channels/:id/settings` - Update settings
|
|
|
|
### Streams & Live
|
|
- `POST /api/streams` - Create/start stream
|
|
- `GET /api/streams/:id` - Get stream details
|
|
- `PATCH /api/streams/:id` - Update stream
|
|
- `DELETE /api/streams/:id` - End stream
|
|
- `GET /api/streams/:id/viewers` - Get viewer count
|
|
- `POST /api/streams/:id/webhooks` - Stream webhooks (from provider)
|
|
- `GET /api/browse` - Browse live streams
|
|
- `GET /api/search` - Search streams
|
|
- `GET /api/recommended` - Recommended streams
|
|
|
|
### Chat (Real-time via Socket.io)
|
|
- `socket.emit('join-stream', {streamId})` - Join chat
|
|
- `socket.emit('send-message', {message})` - Send message
|
|
- `socket.emit('delete-message', {messageId})` - Delete message
|
|
- `socket.on('new-message', handler)` - Receive messages
|
|
- `socket.on('user-joined', handler)` - User joined
|
|
- `socket.on('user-left', handler)` - User left
|
|
|
|
### VOD & Archives
|
|
- `GET /api/vods/:id` - Get VOD
|
|
- `GET /api/channels/:id/vods` - Get channel VODs
|
|
- `GET /api/vods/:id/progress` - Get watch progress
|
|
- `POST /api/vods/:id/progress` - Save watch progress
|
|
- `POST /api/vods/:id/report` - Report VOD
|
|
|
|
### Clips
|
|
- `POST /api/clips` - Create clip
|
|
- `GET /api/clips/:id` - Get clip
|
|
- `PATCH /api/clips/:id` - Update clip
|
|
- `DELETE /api/clips/:id` - Delete clip
|
|
- `GET /api/channels/:id/clips` - Get channel clips
|
|
- `POST /api/clips/:id/like` - Like clip
|
|
- `DELETE /api/clips/:id/like` - Unlike clip
|
|
- `GET /api/clips/trending` - Trending clips
|
|
|
|
### Monetization
|
|
- `POST /api/subscriptions` - Create subscription
|
|
- `GET /api/subscriptions/me` - Get my subscriptions
|
|
- `DELETE /api/subscriptions/:id` - Cancel subscription
|
|
- `POST /api/donations` - Create donation
|
|
- `GET /api/donations/me` - My donations
|
|
- `GET /api/channels/:id/revenue` - Channel revenue
|
|
- `GET /api/payouts` - Get payouts
|
|
- `POST /api/payouts/request` - Request payout
|
|
|
|
### Interactions
|
|
- `POST /api/polls` - Create poll
|
|
- `GET /api/polls/:id` - Get poll
|
|
- `POST /api/polls/:id/vote` - Vote on poll
|
|
- `POST /api/reactions` - Send reaction
|
|
- `POST /api/gifts` - Send gift
|
|
|
|
### Gaming/Tournaments
|
|
- `POST /api/tournaments` - Create tournament
|
|
- `GET /api/tournaments/:id` - Get tournament
|
|
- `POST /api/tournaments/:id/join` - Join tournament
|
|
- `GET /api/leaderboards/:name` - Get leaderboard
|
|
- `GET /api/leaderboards/:name/entries/:userId` - Get user rank
|
|
|
|
### Moderation
|
|
- `GET /api/moderation/queue` - Get mod queue
|
|
- `POST /api/moderation/queue/:id/approve` - Approve
|
|
- `POST /api/moderation/queue/:id/reject` - Reject
|
|
- `POST /api/channels/:id/bans` - Ban user
|
|
- `DELETE /api/channels/:id/bans/:userId` - Unban user
|
|
- `GET /api/channels/:id/bans` - Get bans
|
|
|
|
## Real-time Events (Socket.io)
|
|
|
|
### Stream Events
|
|
- `stream:started` - Stream went live
|
|
- `stream:ended` - Stream ended
|
|
- `stream:updated` - Stream metadata changed
|
|
- `viewers:updated` - Viewer count changed
|
|
- `viewers:joined` - User joined stream
|
|
- `viewers:left` - User left stream
|
|
|
|
### Chat Events
|
|
- `chat:message` - New chat message
|
|
- `chat:deleted` - Message deleted
|
|
- `chat:cleared` - Chat cleared
|
|
- `chat:emote` - Emote sent
|
|
- `chat:ban` - User banned
|
|
|
|
### Interaction Events
|
|
- `poll:created` - Poll started
|
|
- `poll:voted` - Someone voted
|
|
- `poll:ended` - Poll ended
|
|
- `reaction:sent` - Reaction/emote displayed
|
|
- `gift:sent` - Gift displayed to chat
|
|
|
|
### Monetization Events
|
|
- `subscription:new` - New subscriber
|
|
- `donation:received` - Donation received
|
|
- `milestone:reached` - Milestone (100 followers, etc.)
|
|
|
|
## WebSocket Message Format
|
|
|
|
```json
|
|
{
|
|
"type": "event_type",
|
|
"payload": {
|
|
// Event-specific data
|
|
},
|
|
"timestamp": "2026-02-07T12:00:00Z"
|
|
}
|
|
```
|
|
|
|
## Error Responses
|
|
|
|
```json
|
|
{
|
|
"error": true,
|
|
"code": "ERROR_CODE",
|
|
"message": "Human readable message",
|
|
"status": 400
|
|
}
|
|
```
|
|
|
|
## Rate Limiting
|
|
|
|
- Public endpoints: 100 req/min per IP
|
|
- Authenticated endpoints: 300 req/min per user
|
|
- Streaming endpoints: 50 req/min
|
|
- Chat: 5 messages/10 seconds per user
|
|
|
|
## Pagination
|
|
|
|
```
|
|
GET /api/resource?page=1&limit=20
|
|
```
|
|
|
|
Response:
|
|
```json
|
|
{
|
|
"data": [...],
|
|
"total": 100,
|
|
"page": 1,
|
|
"limit": 20,
|
|
"hasMore": true
|
|
}
|
|
```
|