4.3 KiB
4.3 KiB
TPMJS Feature Roadmap
User System & Social Features
1. User Authentication System
- Add authentication (OAuth with GitHub/Google)
- User profile pages (
/user/[username]) - Store user preferences and settings
- API key management for programmatic access
2. User Collections
- Create named collections of tools (e.g., "My AI Agents", "Data Processing")
- Public/private collection visibility
- Share collections via URL
- Fork/clone collections from other users
- Collection descriptions and tags
Database Schema:
model User {
id String @id @default(cuid())
email String @unique
name String?
avatarUrl String?
collections Collection[]
ratings Rating[]
createdAt DateTime @default(now())
}
model Collection {
id String @id @default(cuid())
name String
description String?
isPublic Boolean @default(false)
userId String
user User @relation(fields: [userId], references: [id])
tools CollectionTool[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model CollectionTool {
id String @id @default(cuid())
collectionId String
collection Collection @relation(fields: [collectionId], references: [id])
toolId String
tool Tool @relation(fields: [toolId], references: [id])
addedAt DateTime @default(now())
notes String? // User's notes about why this tool is in the collection
@@unique([collectionId, toolId])
}
3. Package Ratings & Reviews
- 1-5 star rating system
- Optional text reviews
- Aggregate rating displayed on tool cards
- Sort/filter by rating
- Prevent duplicate ratings (one per user per tool)
- Verified usage badge (user has actually executed the tool)
Database Schema:
model Rating {
id String @id @default(cuid())
score Int // 1-5
review String? @db.Text
userId String
user User @relation(fields: [userId], references: [id])
toolId String
tool Tool @relation(fields: [toolId], references: [id])
verified Boolean @default(false) // True if user has executed the tool
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([userId, toolId])
}
4. Integrate Collections with SDK Tools
@tpmjs/search-registry:
- Add
collectionparameter to filter tools by collection ID - Add
collectionNameparameter to filter by collection name - Return collection metadata in search results
- Support searching within user's own collections
@tpmjs/registry-execute:
- Accept collection ID to scope tool execution
- Log which collection a tool was executed from (for analytics)
- Support executing all tools in a collection sequentially
API Endpoints:
GET /api/collections - List public collections
GET /api/collections/[id] - Get collection details
POST /api/collections - Create collection (auth required)
PUT /api/collections/[id] - Update collection (auth required)
DELETE /api/collections/[id] - Delete collection (auth required)
POST /api/collections/[id]/tools - Add tool to collection
DELETE /api/collections/[id]/tools/[toolId] - Remove tool from collection
GET /api/tools?collection=[id] - Filter tools by collection
GET /api/users/[username]/collections - Get user's public collections
Implementation Order
-
Phase 1: User System (required for everything else)
- Authentication with NextAuth.js
- User model and basic profile
-
Phase 2: Collections
- Collection CRUD
- Add/remove tools from collections
- Collection pages
-
Phase 3: Ratings
- Rating submission
- Display ratings on tool cards
- Sort by rating
-
Phase 4: SDK Integration
- Update @tpmjs/search-registry
- Update @tpmjs/registry-execute
- Collection-aware execution
Notes
- Consider rate limiting on ratings to prevent abuse
- Collections could have a "featured" flag for editorial picks
- Future: collaborative collections (multiple editors)
- Future: collection analytics (views, forks, tool executions)