Available Metrics
All statistics are calculated in real-time from thegetAdminStats query in convex/tools.ts:254-282.
Total Tools
Formula:approvedCount + pendingCount
The complete count of all tools in the system, including both approved tools visible to users and pending submissions awaiting review.
Approved Tools
Query: All tools whereapproved = true
The number of tools currently live and visible in the public directory. These tools can be:
- Browsed by category
- Found in search results
- Upvoted by users
- Featured on the homepage
Pending Approvals
Query: All tools whereapproved = false
Tools submitted by users that are waiting for admin review. This is your review queue - each pending tool needs to be either approved or rejected.
The pending count is also displayed as a badge in the “Pending Approvals” section header.
Total Categories
Formula:Set(categories).size
The number of unique categories currently in use by approved tools. Categories are tracked from the approved tools only:
- AI Writing
- Code Generation
- Image Generation
- Chatbots
- Productivity
- Marketing
- Research
Featured Tools
Filter: Tools wherefeatured = true
The count of tools marked as featured. Featured tools typically appear:
- On the homepage
- In special “Featured” sections
- At the top of category listings
The featured flag is set in the database schema but requires custom admin logic to toggle. You may need to add a UI for managing featured status.
Total Upvotes
Formula: Sum of allupvotes fields
The aggregate upvote count across all approved tools. This represents total community engagement:
- User engagement with the platform
- Popular tools and categories
- Content quality
- Community activity
Stats Dashboard UI
The six metrics are displayed in a responsive grid on the admin dashboard atapp/admin/page.tsx:104-142:
Visual Design
Each stat card includes:- Icon with contextual color (green for approved, yellow for pending, etc.)
- Large numeric value in bold tracking-tight font
- Small label in muted text
- Card background with subtle styling
Loading State
While stats are loading, placeholder values show ”—” (em dash)
Responsive Grid
Grid adapts: 2 columns on mobile, 3 on tablet, 6 on desktop
Performance Optimization
The stats query uses Convex database indices for optimal performance:Index Usage
Why Indices Matter
This approach ensures:
- Fast query execution even with thousands of tools
- No sequential scans of the entire database
- Real-time stats without caching complexity
Public vs Admin Stats
There’s also agetStats query for public-facing statistics:
| Metric | Public | Admin |
|---|---|---|
| Total Tools | Approved only | Approved + Pending |
| Pending Count | Not shown | Shown |
| Approved Count | Not shown | Shown |
| Auth Required | No | Yes (admin check) |
Monitoring Best Practices
Daily Checks
- Pending Count: Keep this low by reviewing submissions promptly
- Approval Rate: Monitor ratio of approved to total tools
- Category Distribution: Ensure balanced content across categories
Growth Indicators
- Total Tools: Should steadily increase as submissions grow
- Total Upvotes: Indicates user engagement and platform activity
- Featured Tools: Manually curate high-quality tools to feature
Quality Metrics
- Low pending count = Efficient moderation
- High upvote count = Strong community engagement
- Diverse categories = Broad platform appeal