A complete full-stack platform for comedy and modelling content creators, featuring a beautiful public website and comprehensive admin dashboard.
- Hero Section: Eye-catching landing page with gradient backgrounds and animations
- Instagram Reels: Auto-updating Instagram posts fetched via Instagram Graph API
- YouTube Videos: Auto-updating YouTube videos fetched via YouTube Data API v3
- Portfolio Gallery: Photo and video galleries with category filtering
- Blog: Full-featured blog with rich media support
- About Page: Professional about section with bio and expertise
- Contact Form: Collaboration request form with email integration
- Dark Mode: Toggle between light and dark themes
- Comedy Mascot: Interactive animated mascot with fun messages
- Responsive Design: Mobile-first design that works on all devices
- Dashboard Overview: Analytics and quick stats
- Instagram Manager: Sync and manage Instagram posts visibility
- YouTube Manager: Sync and manage YouTube videos visibility
- Portfolio Manager: Upload and organize modelling photos/videos
- Blog Manager: Create, edit, and publish blog posts with media
- Contact Requests: View and manage collaboration inquiries
- Settings: Configure API keys, theme, and site information
- Supabase Database: Secure PostgreSQL database with Row Level Security
- Edge Functions: Automated API sync for Instagram and YouTube
- Cloudinary Integration: Media upload and optimization
- Authentication: Secure admin login system
- Real-time Updates: Dynamic content that updates automatically
- SEO Optimized: Semantic HTML and meta tags
- React 18: Modern React with hooks
- TypeScript: Type-safe development
- Tailwind CSS: Utility-first styling
- Lucide React: Beautiful icons
- Vite: Fast development and building
- Supabase: Backend as a service
- PostgreSQL: Robust database
- Edge Functions: Serverless functions for API sync
- Row Level Security: Database-level security
- Instagram Graph API: Fetch Instagram content
- YouTube Data API v3: Fetch YouTube videos
- Cloudinary: Media management
Create a .env file in the root directory:
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
VITE_CLOUDINARY_UPLOAD_PRESET=your_cloudinary_upload_presetnpm installThe database schema is already migrated. Tables include:
admin_users- Admin authenticationsite_settings- Platform configurationinstagram_posts- Instagram contentyoutube_videos- YouTube contentportfolio_items- Portfolio mediablog_posts- Blog articlescontact_requests- Contact form submissionsanalytics- Page view tracking
Use the Supabase dashboard to insert an admin user into the admin_users table.
Log in to the admin dashboard at /admin/login and navigate to Settings to configure:
- Instagram Access Token
- YouTube API Key
- Cloudinary credentials
Start the development server:
npm run devVisit:
- Public site:
http://localhost:5173 - Admin login:
http://localhost:5173/admin/login
Build for production:
npm run buildPreview production build:
npm run previewTwo Edge Functions are deployed for automated content sync:
Fetches latest Instagram posts and stores them in the database.
Fetches latest YouTube videos and stores them in the database.
- Login: Navigate to
/admin/loginand sign in - Configure Settings: Go to Settings and add API keys
- Sync Content: Use Instagram and YouTube managers to sync content
- Manage Visibility: Toggle which posts/videos appear on the public site
- Add Portfolio: Upload modelling photos and videos
- Create Blog Posts: Write and publish blog articles
- Handle Contacts: Review and respond to collaboration requests
- Click "Sync" button to fetch latest content
- Toggle visibility for each post/video
- Content appears on homepage automatically
- Add photos or videos with categories
- Organize by drag-and-drop (order_index)
- Toggle visibility per item
- Create text-only or media-rich posts
- Save as draft or publish immediately
- SEO-friendly slugs auto-generated
- Mark as read/replied
- Filter by status
- Delete old requests
Edit src/components/Navbar.tsx and src/components/Footer.tsx to customize branding.
The platform uses orange and pink accent colors. Edit Tailwind classes to change the color scheme.
Custom animations are defined in tailwind.config.js:
wiggle- Mascot animationfade-in- Page entrance animation
- Row Level Security (RLS) enabled on all tables
- Admin authentication required for dashboard
- Public content filtered by visibility flags
- API keys stored securely in database
- CORS properly configured
- Lazy loading for images
- Optimized builds with Vite
- CDN-ready assets
- Efficient database queries
- Edge Functions for API calls
For issues or questions:
- Check the console for error messages
- Verify API keys are configured correctly
- Ensure database migrations are applied
- Check Supabase Edge Function logs
This project is private and proprietary.