Features: - Complete admin interface for managing platform specifications - Metrics dashboard showing total platforms, configurations, codecs, and aspect ratios - Add new platforms with custom codecs and format configurations - Edit existing platforms and their aspect ratio settings - Delete platforms from the system - Export all specifications to JSON (for backups) - Import specifications from JSON (bulk updates/restore) - Real-time platform list with detailed specification tables - Dark theme (black + yellow) matching main app - Link to admin panel from main app footer Backend Enhancements: - 5 new admin API endpoints (POST, PUT, DELETE, export, import) - Auto-save to platform_specs.json file - Auto-load specs from JSON on server startup - Persistent storage for platform configurations - CORS enabled for admin endpoints Admin Panel allows non-technical users to: - Add new social media platforms as they emerge - Update bitrate recommendations - Add new aspect ratio support - Manage all 21+ platform configurations - Export/import for version control and backups Access: frontend/admin.html 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
8.2 KiB
Admin Panel Guide
Overview
The Admin Panel allows you to manage platform specifications, add new platforms, edit existing configurations, and import/export settings.
Access: http://localhost:8888/admin.html (or http://localhost:8000/admin.html for standard setup)
Features
📊 Metrics Dashboard
View real-time statistics:
- Total Platforms - Number of configured platforms
- Total Configurations - Total format combinations across all platforms
- Unique Codecs - Number of different codecs in use
- Aspect Ratios - Total unique aspect ratios supported
🎛 Platform Management
View All Platforms:
- See all configured platforms with their specifications
- Each platform shows: Name, Key, Codec, Format count
- Detailed table of all aspect ratios with resolutions and bitrates
Add New Platform:
- Click "+ Add New Platform"
- Fill in platform details:
- Platform Key (lowercase, no spaces - used in API)
- Platform Name (display name)
- Video Codec (H264, H265, or VP9)
- Container Format (MP4, WebM, MOV)
- Add format configurations (aspect ratios):
- Aspect Ratio (e.g., 16:9)
- Resolution (e.g., 1920x1080)
- Bitrate (recommended, e.g., 1500k)
- Min/Max Bitrate (range)
- Audio Bitrate (e.g., 128k)
- Audio Codec (optional - defaults to AAC)
- Note (optional)
- Click "+ Add Format Configuration" for multiple aspect ratios
- Click "Save Platform"
Edit Platform:
- Click "Edit" button on any platform card
- Modify settings (platform key cannot be changed)
- Add/remove format configurations
- Click "Save Platform"
Delete Platform:
- Click "Delete" button on any platform card
- Confirm deletion
- Platform is removed from system
📤 Export/Import
Export Specifications:
- Click "Export Specs (JSON)"
- Downloads
platform_specs_YYYY-MM-DD.jsonfile - Contains all platform configurations
- Use for backups or sharing
Import Specifications:
- Click "Import Specs (JSON)"
- Select a previously exported JSON file
- Replaces ALL current specifications
- Use for restoring backups or bulk updates
Reload from Server:
- Click "Reload from Server"
- Refreshes display with current backend data
- Use after manual changes or testing
Example: Adding a New Platform
Scenario: Add Instagram Reels
Platform Details:
- Key:
instagram_reels - Name:
Instagram Reels - Codec:
libx264(H264) - Container:
mp4
Format Configuration:
- Aspect Ratio:
9:16 - Resolution:
1080x1920 - Bitrate:
2500k - Min Bitrate:
2000k - Max Bitrate:
3000k - Audio Bitrate:
128k - Audio Codec:
aac - Note:
Optimized for Instagram Reels
After saving, the platform will be immediately available in the main app!
Data Persistence
How Specs Are Saved
When you add, edit, or delete platforms:
- Changes are applied to in-memory PLATFORM_SPECS
- Automatically saved to backend/platform_specs.json
- File is loaded on server startup
- Changes persist across server restarts
File Location
backend/platform_specs.json
This file is auto-generated and excluded from Git (.gitignore).
Backup Strategy
Recommended:
- Regularly export specs via Admin Panel
- Save exported JSON files with date stamps
- Store backups in version control or cloud storage
- Import when needed to restore
Platform Key Naming
Platform keys are used in:
- API endpoints
- Filename detection
- Internal references
Rules:
- Lowercase only
- No spaces (use underscores)
- Unique across all platforms
- Cannot be changed after creation
Good examples:
tiktokmetayoutube_ctvamazon_prime
Bad examples:
TikTok(uppercase)YouTube CTV(spaces)meta-fb(hyphens - use underscores)
Format Configuration Details
Required Fields
- Aspect Ratio - Format ratio (e.g., 16:9, 1:1, 9:16)
- Resolution - Width x Height (e.g., 1920x1080)
- Bitrate - Recommended video bitrate (e.g., 1500k)
- Min Bitrate - Minimum acceptable bitrate
- Max Bitrate - Maximum acceptable bitrate
- Audio Bitrate - Audio bitrate (e.g., 128k)
Optional Fields
- Audio Codec - Override default audio codec (aac, opus, etc.)
- Note - Special instructions or warnings
Bitrate Format
Use FFmpeg bitrate notation:
1500k= 1500 kbps15000k= 15 Mbps128k= 128 kbps
Codec Reference
Video Codecs
| Codec Value | Display Name | Best For | Notes |
|---|---|---|---|
libx264 |
H264 | Universal compatibility | Most widely supported |
libx265 |
H265/HEVC | Better compression | TikTok recommended |
libvpx-vp9 |
VP9 | Quality & efficiency | YouTube preferred |
Container Formats
| Container | Extensions | Compatible Codecs |
|---|---|---|
mp4 |
.mp4 | H264, H265 |
webm |
.webm | VP9 |
mov |
.mov | H264, H265 |
Audio Codecs
aac- Default, universal (for MP4)opus- High quality (for WebM/VP9)mp3- Legacy support
Validation
The system validates:
- ✅ Duplicate platform keys (prevented)
- ✅ Required fields present
- ✅ Format array not empty
- ✅ Valid bitrate formats
Not automatically validated:
- Resolution format (ensure it's
WIDTHxHEIGHT) - Aspect ratio accuracy
- Codec compatibility with container
API Endpoints
Admin endpoints require backend access:
| Endpoint | Method | Description |
|---|---|---|
/api/admin/platforms |
POST | Add new platform |
/api/admin/platforms/<key> |
PUT | Update platform |
/api/admin/platforms/<key> |
DELETE | Delete platform |
/api/admin/export |
GET | Export all specs as JSON |
/api/admin/import |
POST | Import specs from JSON |
Troubleshooting
Changes Not Showing in Main App
- Click "Reload from Server" in Admin Panel
- Refresh main app page (hard reload: Cmd+Shift+R)
- Check backend logs for save errors
- Verify platform_specs.json was updated
Export Not Working
- Check browser allows downloads
- Check browser console (F12) for errors
- Verify backend
/api/admin/exportendpoint works:curl http://localhost:5000/api/admin/export
Import Fails
Check JSON format:
{
"platform_key": {
"name": "Platform Name",
"codec": "libx264",
"container": "mp4",
"formats": [
{
"ratio": "16:9",
"size": "1920x1080",
"bitrate": "1500k",
"bitrate_min": "1300k",
"bitrate_max": "1700k",
"audio": "128k"
}
]
}
}
Platform Key Can't Be Changed
Platform keys are immutable after creation to prevent breaking:
- Filename detection patterns
- API references
- Existing configurations
Solution: Delete and recreate platform with new key
Best Practices
- Export regularly - Create backups before major changes
- Test new platforms - Verify conversions work after adding
- Use descriptive keys - Clear, lowercase identifiers
- Document notes - Add notes for unusual configurations
- Validate ranges - Ensure min ≤ recommended ≤ max bitrates
Security Note
Current Setup:
- Admin panel has NO authentication
- Suitable for local development only
- For production: Add authentication layer
Production Recommendations:
- Implement login system
- Use environment variables for credentials
- Restrict admin endpoints to authenticated users
- Add audit logging for changes
Quick Reference
Adding Platform Checklist
- Click "Add New Platform"
- Enter platform key (lowercase, unique)
- Enter platform name (display)
- Select codec
- Select container
- Add at least one format configuration
- Verify bitrate ranges
- Save platform
- Test in main app
Editing Platform Checklist
- Click "Edit" on platform card
- Modify settings
- Add/remove format configurations
- Save changes
- Reload main app to see changes
Access Admin Panel: Add /admin.html to your frontend URL
Repository: https://bitbucket.org/zlalani/loreal-video-optimizer