# 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 ```bash cd admin-web npm install ``` ### 2. Configure Environment Variables Create a `.env.local` file: ```bash NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key ``` ### 3. Run Development Server ```bash npm run dev ``` Open [http://localhost:3000](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_users` table ### Managing Content 1. **Dashboard**: View stats and access quick actions 2. **Workouts**: View all workouts, delete with confirmation 3. **Trainers**: View trainer cards with color indicators 4. **Collections**: View collections with gradient previews 5. **Media**: Upload files to Supabase Storage buckets ### Authentication Flow 1. User signs in at `/login` 2. App checks if user exists in `admin_users` table 3. If authorized, redirects to dashboard 4. Sidebar provides navigation to all sections 5. Logout clears session and redirects to login ## Supabase Schema The dashboard expects these tables: - `workouts` - Workout definitions - `trainers` - Trainer profiles - `collections` - Workout collections - `collection_workouts` - Collection-workout links - `admin_users` - Admin access control And storage buckets: - `videos` - Workout videos - `thumbnails` - Workout thumbnails - `avatars` - Trainer avatars See the main project `SUPABASE_SETUP.md` for full schema details. ## Building for Production ```bash 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 1. Create a new directory in `app/` 2. Add `page.tsx` with your component 3. Add link to `components/sidebar.tsx` ### Adding shadcn Components ```bash npx shadcn add component-name ``` ## License Same as TabataFit project