MenuMingle Admin Portal - User Guide
Version: 2.1.1
Last Updated: January 2025
Documentation Status: Complete
Table of Contents
- Overview
- Access & Authentication
- Feature Status Summary
- Available Features
- Partially Implemented Features
- Coming Soon / Needs Development
- Navigation Structure
- Best Practices
- Troubleshooting
Overview
The MenuMingle Admin Portal provides comprehensive system management capabilities for platform administrators. It offers tools for managing restaurants, users, analytics, security, and system health monitoring.
Key Capabilities
- Restaurant Management: Full CRUD operations, approval workflows, subscription management
- User Management: User search, role assignment, account status management, safe deletion
- Analytics: Platform-wide metrics and performance insights
- Video Optimization: Bulk video processing and optimization tools
- Session Management: Active session monitoring and termination
- Security Monitoring: Audit logs and security alerts (partial)
- System Health: Performance metrics and service status (partial)
Access & Authentication
Access Requirements
- Role Required: Super Admin (
isSuperAdmin: true) - Login URL:
/admin-login - Portal URL:
/admin - Authentication: Supabase Auth with role-based access control
Access Denied
If you don't have Super Admin privileges, you'll see an "Access Denied" message when attempting to access admin routes.
Session Management
- Admin sessions are tracked in the
user_sessionstable - Sessions can be monitored and terminated from
/admin/sessions - Active sessions are displayed with device, location, and activity information
Feature Status Summary
✅ Fully Available (6 features)
These features are fully implemented, accessible from the main navigation, and production-ready:
- Dashboard (
/admin) - Restaurant Management (
/admin/restaurants) - User Management (
/admin/users) - Analytics (
/admin/analytics) - Video Optimizer (
/admin/video-optimizer) - Session Management (
/admin/sessions)
🚧 Partially Implemented (3 features)
These features have UI implemented but use mock data or simulated functionality:
- Security (
/admin/security) - Mock security alerts - System Health (
/admin/health) - Mock system metrics - Settings (
/admin/settings) - Simulated save operations
⏳ Coming Soon / Needs Development
- IP Blocking (mentioned in Security section)
- Real-time Security Alerts (currently using mock data)
- Live System Metrics (currently using mock data)
- Persistent Settings Storage (currently simulated)
Available Features
1. Dashboard (/admin)
Status: ✅ Fully Available
Navigation: Main menu (Home icon)
URL: /admin
Features
-
System Overview Metrics:
- Total restaurants, chefs, dishes
- Active users and restaurants
- New registrations this month
- Total interactions, views, saves, orders
-
Quick Actions:
- Navigate to Restaurant Management
- Navigate to User Management
- Navigate to Analytics
- Navigate to Security
-
Recent Activity Feed:
- Latest platform events
- Action types and metadata
- Timestamps and user information
- Link to full security audit log
-
Growth Metrics:
- Month-over-month growth rates
- Subscription tier distribution
- Platform health indicators
-
Quick Links:
- System Health monitoring
- Session Management
- Settings configuration
Data Sources
- Real-time queries to Supabase:
restaurantstablechefstabledishestableprofilestableuser_interactionstableaudit_logstable
2. Restaurant Management (/admin/restaurants)
Status: ✅ Fully Available
Navigation: Main menu (Building2 icon)
URL: /admin/restaurants
Features
-
Restaurant CRUD Operations:
- Create new restaurants
- Edit existing restaurant details
- Delete restaurants (with confirmation)
- View restaurant details and analytics
-
Search & Filtering:
- Text search by name, cuisine, location
- Filter by subscription tier
- Filter by status (active, pending, inactive)
- Filter by cuisine type
- Filter by price range
- Filter by location
- Filter by visibility settings
- Filter by last active date
- Filter by date added
- Sort by various fields (created_at, name, etc.)
-
Bulk Operations:
- Bulk status updates
- Bulk subscription tier changes
- Bulk email sending
- Bulk deletion (with confirmation)
-
Restaurant Details:
- Contact information
- Business configuration
- Team structure
- Platform setup
- System configuration
- Review and launch workflow
-
View Modes:
- List view
- Card view
- Responsive design for mobile/tablet
-
Restaurant Analytics:
- View individual restaurant analytics
- Performance metrics
- Engagement statistics
Data Sources
restaurantstableprofilestable (for restaurant owners)dishestable (for dish counts)user_interactionstable (for analytics)
3. User Management (/admin/users)
Status: ✅ Fully Available
Navigation: Main menu (Users icon)
URL: /admin/users
Features
-
User Search & Filtering:
- Text search by name, email
- Filter by role
- Filter by account status
- Filter by restaurant association
- Filter by registration date
- Filter by last active date
- Advanced filtering options
-
User Operations:
- View user details
- Edit user information
- Assign roles
- Assign to restaurants
- Invite new users
- Invite restaurant staff
- Delete users (with safe deletion validation)
- Export user data
-
Role Management:
- Assign user roles
- View role permissions
- Manage restaurant associations
-
Bulk Operations:
- Bulk role assignment
- Bulk status updates
- Bulk restaurant assignment
- Bulk deletion (with confirmation)
-
User Metrics:
- Total users
- Active users
- Users by role
- New users this month
Data Sources
profilestableauth.userstable (via Supabase Auth)user_rolestablerestaurant_stafftable
Safety Features
- Safe deletion with validation
- Confirmation dialogs for destructive actions
- Audit logging of user changes
4. Analytics (/admin/analytics)
Status: ✅ Fully Available
Navigation: Main menu (BarChart3 icon)
URL: /admin/analytics
Features
-
Platform Metrics:
- Total restaurants count
- Total chefs count
- Total dishes count
- Total user profiles
- Total interactions
- Total views
- Total saves
- Total orders
-
Engagement Metrics:
- Dish views
- Dishes saved
- Orders placed
- All user interactions
-
Platform Health Indicators:
- Average dishes per restaurant
- Average views per dish
- Order conversion rate
- Save rate
-
Data Refresh:
- Manual refresh button
- Real-time data from database
Data Sources
restaurantstablechefstabledishestableprofilestableuser_interactionstable (filtered by interaction_type)
5. Video Optimizer (/admin/video-optimizer)
Status: ✅ Fully Available
Navigation: Main menu (Video icon)
URL: /admin/video-optimizer
Features
-
Video Detection:
- Detect unoptimized videos
- Identify videos without quality variants
- Detect media optimization issues
- Identify URL mismatches
-
Bulk Optimization:
- Process multiple videos at once
- Queue optimization jobs
- Track optimization progress
- View optimization results
-
Thumbnail Integrity:
- Check thumbnail URLs
- Verify thumbnail generation
- Fix thumbnail issues
-
Video Quality Analysis:
- View video quality variants
- Check video optimization status
- Monitor CDN cache status
-
Individual Video Management:
- Optimize individual videos
- View video details
- Delete videos
- Download videos
Detection Reasons
no_qualities: Video lacks quality variantsmedia_unoptimized: Media asset not optimizedurl_mismatch: URL inconsistencies detected
Data Sources
dishestablemedia_assetstable- Video storage buckets
6. Session Management (/admin/sessions)
Status: ✅ Fully Available
Navigation: Main menu (Users icon)
URL: /admin/sessions
Features
-
Active Session Viewer:
- View all user sessions
- Filter by user
- Filter by status (active/inactive)
- Search sessions
-
Session Details:
- Device information
- Device fingerprint
- IP address
- User agent
- Location data
- Last activity timestamp
- Session expiration
- Creation timestamp
-
Session Operations:
- Terminate individual sessions
- View session history
- Monitor active sessions
-
Device Tracking:
- Device type (desktop, mobile, tablet)
- Browser information
- Operating system
-
Metrics:
- Total active sessions
- Sessions by device type
- Recent session activity
Data Sources
user_sessionstableprofilestable (for user email lookup)
Partially Implemented Features
7. Security (/admin/security)
Status: 🚧 Partially Implemented (Mock Data)
Navigation: Hidden (accessible via direct URL)
URL: /admin/security
Current Implementation
- UI Components: Fully implemented
- Audit Log Viewer: ✅ Real data from
audit_logstable - Security Alerts: ⚠️ Using mock data
- Suspicious Activity Detection: ⚠️ Using mock data
- Failed Login Attempts: ⚠️ Mock data
- Session Anomalies: ⚠️ Mock data
Features Available
- View audit logs (real data)
- Security alert dashboard (mock alerts)
- Suspicious IP tracking (mock IPs)
- Active admin session count (mock count)
What Needs Development
-
Real Security Alert Generation:
- Implement actual suspicious activity detection
- Analyze failed login patterns
- Detect privilege escalation attempts
- Monitor data export patterns
-
IP Blocking (marked as "planned" in code):
- Implement IP blocking functionality
- Create blocked IP list management
- Automatic blocking for suspicious activity
-
Real-time Monitoring:
- Connect to actual security monitoring systems
- Real-time alert generation
- Integration with Supabase Auth logs
Code Location
src/pages/admin/AdminSecurity.tsx- Mock alerts generated in
fetchSecurityData()function (lines 88-114)
8. System Health (/admin/health)
Status: 🚧 Partially Implemented (Mock Data)
Navigation: Hidden (accessible via direct URL)
URL: /admin/health
Current Implementation
- UI Components: Fully implemented
- Metrics Display: ✅ UI ready
- Service Status: ⚠️ Using mock data
- Performance Metrics: ⚠️ Using mock data
Features Available
-
System metrics dashboard (mock data):
- CPU Usage
- Memory Usage
- Disk Usage
- Database Connections
- API Response Time
- Error Rate
-
Service status monitoring (mock data):
- Service uptime
- Last check timestamps
- Response times
- Service health status
What Needs Development
-
Real System Metrics:
- Connect to Supabase monitoring APIs
- Real-time database performance metrics
- Actual storage usage from Supabase Storage
- Edge function performance data
-
Service Monitoring:
- Real service health checks
- Actual uptime tracking
- Real response time measurements
-
Error Tracking:
- Connect to error logging system
- Real error rate calculations
- Error trend analysis
-
Performance Benchmarks:
- Historical performance data
- Performance trend analysis
- Alert thresholds
Code Location
src/pages/admin/AdminSystemHealth.tsx- Mock metrics generated in
fetchSystemHealth()function (lines 60-104)
9. Settings (/admin/settings)
Status: 🚧 Partially Implemented (Simulated Saves)
Navigation: Hidden (accessible via direct URL)
URL: /admin/settings
Current Implementation
- UI Components: Fully implemented
- Settings Forms: ✅ All form fields present
- Save Functionality: ⚠️ Simulated (not persisted to database)
Features Available
-
Platform Settings:
- Maintenance mode toggle
- New registrations toggle
- Email notifications toggle
- Analytics tracking toggle
- Auto moderation toggle
- API rate limit configuration
- Max file size configuration
- Maintenance message editor
- Admin email configuration
-
Feature Flags:
- Social features toggle
- QR menu generation toggle
What Needs Development
-
Persistent Storage:
- Create
platform_settingstable in Supabase - Implement real save functionality
- Load settings from database on page load
- Create
-
Settings Management:
- Settings versioning
- Settings history/audit log
- Default settings configuration
-
Settings Validation:
- Input validation
- Settings dependency checks
- Rollback functionality
Code Location
src/pages/admin/AdminSettings.tsx- Simulated save in
handleSaveSettings()function (lines 45-65) - Comment indicates: "In a real implementation, this would save to Supabase"
Coming Soon / Needs Development
Permissions Management (/admin/permissions)
Status: ⏳ Available but Not in Main Navigation
URL: /admin/permissions
Access: Direct URL only
Current Status
- Component:
PermissionManagementcomponent exists - Route: Configured in App.tsx
- Navigation: Not included in main admin navigation
- Permission Guard: Protected with
users.editpermission
Features
- Role configuration
- Permission assignment
- Context-aware permissions (admin vs restaurant)
- Permission templates
Recommendation
- Add to main navigation if permissions management is a priority feature
- Or keep as hidden feature for advanced admin use
Navigation Structure
Main Navigation (Visible)
The Admin Portal sidebar includes these items:
- Dashboard (
/admin) - Home icon - Restaurants (
/admin/restaurants) - Building2 icon - Users (
/admin/users) - Users icon - Analytics (
/admin/analytics) - BarChart3 icon - Video Optimizer (
/admin/video-optimizer) - Video icon - Sessions (
/admin/sessions) - Users icon
Hidden Navigation (Direct URL Access)
These pages exist but are commented out in navigation:
- Security (
/admin/security) - Shield icon - System Health (
/admin/health) - Activity icon - Settings (
/admin/settings) - Settings icon
Additional Routes
- Permissions (
/admin/permissions) - Not in navigation, accessible via direct URL
Best Practices
Security
- Access Control: Only Super Admins should have access
- Audit Logging: All admin actions are logged to
audit_logstable - Session Management: Regularly review and terminate suspicious sessions
- User Deletion: Always use safe deletion with validation
Data Management
- Bulk Operations: Use bulk operations carefully, especially deletions
- Restaurant Management: Verify restaurant details before approval
- User Management: Review user roles and permissions regularly
- Video Optimization: Monitor optimization queue to prevent overload
Performance
- Analytics Refresh: Use manual refresh to avoid excessive queries
- Large Datasets: Use filters to narrow down large result sets
- Session Monitoring: Limit session queries to active sessions when possible
Development
- Mock Data: Be aware that Security and System Health use mock data
- Settings: Settings changes are currently simulated and not persisted
- Testing: Test all admin operations in staging before production
Troubleshooting
Access Issues
Problem: "Access Denied" message when accessing admin routes
Solution:
- Verify user has
isSuperAdmin: truein their profile - Check Supabase Auth role assignments
- Ensure user is logged in with correct account
Data Not Loading
Problem: Dashboard or analytics showing zero values
Solution:
- Check Supabase connection
- Verify RLS policies allow admin access
- Check browser console for errors
- Refresh the page
Settings Not Saving
Problem: Settings page shows "Settings saved" but changes don't persist
Solution:
- This is expected behavior - settings are currently simulated
- Settings need to be implemented with database persistence
- See "Settings" section in "Partially Implemented Features"
Security Alerts Not Appearing
Problem: Security page shows no alerts or only mock alerts
Solution:
- Security alerts are currently using mock data
- Real security monitoring needs to be implemented
- See "Security" section in "Partially Implemented Features"
System Health Metrics Not Accurate
Problem: System Health page shows incorrect or static metrics
Solution:
- System Health currently uses mock data
- Real monitoring integration needs to be implemented
- See "System Health" section in "Partially Implemented Features"
Video Optimization Not Working
Problem: Videos not optimizing or optimization failing
Solution:
- Check video storage bucket permissions
- Verify media_assets table structure
- Check browser console for errors
- Review optimization queue status
Development Roadmap
High Priority
-
Implement Real Security Monitoring
- Replace mock security alerts with real detection
- Implement IP blocking functionality
- Connect to Supabase Auth logs
-
Implement Real System Health Monitoring
- Connect to Supabase monitoring APIs
- Implement real-time metrics collection
- Add error tracking integration
-
Implement Settings Persistence
- Create
platform_settingstable - Implement real save/load functionality
- Add settings validation
- Create
Medium Priority
-
Add Permissions to Main Navigation
- Decide if permissions management should be visible
- Add to navigation if needed
-
Enhance Audit Logging
- Add more detailed audit events
- Improve audit log search/filtering
- Add audit log export functionality
-
Improve Bulk Operations
- Add progress indicators for large operations
- Add operation cancellation
- Improve error handling
Low Priority
-
Add Help Documentation
- In-app tooltips
- Contextual help buttons
- Feature tutorials
-
Enhance Analytics
- Add date range filtering
- Add export functionality
- Add chart visualizations
-
Improve Mobile Experience
- Optimize admin portal for mobile devices
- Add mobile-specific navigation
- Improve touch interactions
Technical Details
Database Tables Used
restaurants- Restaurant dataprofiles- User profileschefs- Chef/admin profilesdishes- Dish datauser_interactions- User engagement datauser_sessions- Session trackingaudit_logs- Admin action loggingmedia_assets- Video/media datauser_roles- Role assignmentsrestaurant_staff- Restaurant team members
Key Components
AdminLayout- Main layout wrapper with navigationAdminPageHeader- Standardized page headersSectionCard- Reusable section containersMetricCard- Metric display cardsAdminActionBar- Action buttons and filtersAdminErrorBoundary- Error handling
Authentication
- Uses
useAuth()hook - Checks
isSuperAdminflag - Supabase Auth integration
- Row-Level Security (RLS) policies
Support & Contact
For questions or issues with the Admin Portal:
- Check this documentation first
- Review the codebase in
src/pages/admin/ - Check Supabase logs for database errors
- Review browser console for frontend errors
Last Updated: January 2025
Maintained By: Platform Development Team
Documentation Version: 1.0