- Replace browse tab with Supabase-connected explore tab with filters - Add React Query for data fetching with loading states - Add 3 structured programs with weekly progression - Add Supabase anonymous auth sync service - Add PostHog analytics with screen tracking and events - Add comprehensive test strategy (Vitest + Maestro E2E) - Add RevenueCat subscription system with DEV simulation - Add i18n translations for new screens (EN/FR/DE/ES) - Add data deletion modal, sync consent modal - Add assessment screen and program routes - Add GitHub Actions CI workflow - Update activity store with sync integration
TabataFit Admin Dashboard
A web-based admin dashboard for managing TabataFit content, built with Next.js, Tailwind CSS, and shadcn/ui.
Features
- Dashboard: Overview with stats and quick actions
- Workouts: Manage workout library (view, delete)
- Trainers: Manage trainer profiles
- Collections: Organize workouts into collections
- Media: Upload videos, thumbnails, and avatars
Tech Stack
- Framework: Next.js 15 (App Router)
- Styling: Tailwind CSS
- Components: shadcn/ui
- Backend: Supabase
- Icons: Lucide React
Getting Started
1. Install Dependencies
cd admin-web
npm install
2. Configure Environment Variables
Create a .env.local file:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
3. Run Development Server
npm run dev
Open http://localhost:3000 in your browser.
Project Structure
app/
├── login/ # Login page
├── workouts/ # Workouts management
├── trainers/ # Trainers management
├── collections/ # Collections management
├── media/ # Media upload
├── page.tsx # Dashboard
├── layout.tsx # Root layout with sidebar
components/
├── sidebar.tsx # Navigation sidebar
├── ui/ # shadcn/ui components
lib/
├── supabase.ts # Supabase client + types
├── utils.ts # Utility functions
Usage
Login
Navigate to /login and sign in with your admin credentials. The user must exist in both:
- Supabase Auth
admin_userstable
Managing Content
- Dashboard: View stats and access quick actions
- Workouts: View all workouts, delete with confirmation
- Trainers: View trainer cards with color indicators
- Collections: View collections with gradient previews
- Media: Upload files to Supabase Storage buckets
Authentication Flow
- User signs in at
/login - App checks if user exists in
admin_userstable - If authorized, redirects to dashboard
- Sidebar provides navigation to all sections
- Logout clears session and redirects to login
Supabase Schema
The dashboard expects these tables:
workouts- Workout definitionstrainers- Trainer profilescollections- Workout collectionscollection_workouts- Collection-workout linksadmin_users- Admin access control
And storage buckets:
videos- Workout videosthumbnails- Workout thumbnailsavatars- Trainer avatars
See the main project SUPABASE_SETUP.md for full schema details.
Building for Production
npm run build
The build output will be in .next/. You can deploy to Vercel, Netlify, or any Next.js-compatible host.
Customization
Theme
The dashboard uses a dark theme with:
- Background:
neutral-950(#0a0a0a) - Cards:
neutral-900(#171717) - Accent: Orange (#f97316)
Modify app/globals.css and Tailwind config to change colors.
Adding Pages
- Create a new directory in
app/ - Add
page.tsxwith your component - Add link to
components/sidebar.tsx
Adding shadcn Components
npx shadcn add component-name
License
Same as TabataFit project