Millian Lamiaux 3d8d9efd70 feat: YouTube music download system with admin dashboard
Sidecar architecture: edge functions (auth + DB) → youtube-worker container
(youtubei.js for playlist metadata, yt-dlp for audio downloads).

- Edge functions: youtube-playlist, youtube-process, youtube-status (CRUD)
- youtube-worker sidecar: Node.js + yt-dlp, downloads M4A to Supabase Storage
- Admin music page: import playlists, process queue, inline genre editing
- 12 music genres with per-track assignment and import-time defaults
- DB migrations: download_jobs, download_items tables with genre column
- Deploy script and CI workflow for edge functions + sidecar
2026-03-26 10:47:05 +01:00
2026-02-17 17:34:06 +01:00
2026-02-17 17:34:06 +01:00

TabataFit

Apple Fitness+ for Tabata — The Premium HIIT Experience

Expo TypeScript License Tests Coverage

Vision

TabataFit est l'Apple Fitness+ du Tabata. Une expérience premium, video-first, guidée par des coachs, qui transforme 4 minutes d'exercice en une expérience de fitness immersive.

Features

  • 🎬 Video-led workouts — HD video demonstrations by professional trainers
  • ⏱️ Smart timer — Tabata timer with work/rest phases
  • 🔥 Burn Bar — Compare your calories with the community
  • 📊 Activity tracking — Streaks, stats, and trends
  • 🎵 Music sync — Curated playlists for each workout
  • Apple Watch — Heart rate and activity rings

Tech Stack

  • Framework: Expo SDK 52
  • Navigation: Expo Router v3
  • State: Zustand
  • Video: expo-av (HLS streaming)
  • Payments: RevenueCat
  • Analytics: PostHog

Getting Started

# Install dependencies
npm install

# Start development server
npx expo start

# Run on device (scan QR with Expo Go)

Documentation

Document Description
PRD v2.0 Product Requirements
PDD v2.0 Product Design
BDSD v2.0 Brand Design

Project Structure

src/
  features/
    home/        # Home tab
    workouts/    # Workouts browser
    player/      # Video player + timer
    activity/    # Stats & history
    browse/      # Filters & trainers
    profile/     # User settings
  shared/
    components/  # Reusable UI
    hooks/       # Custom hooks
    constants/   # Design tokens
app/             # Expo Router routes

Testing

# Unit tests with coverage
npm run test:coverage

# Component render tests
npm run test:render

# All unit + render tests
npm test && npm run test:render

# Maestro E2E (requires Expo dev server + simulator)
npm run test:maestro

# Admin-web tests
cd admin-web && npm test           # Unit tests
cd admin-web && npm run test:e2e   # Playwright E2E

Test Coverage

Layer Target Tests
Stores 80%+ playerStore, activityStore, userStore, programStore
Services 80%+ analytics, music, purchases, sync
Hooks 70%+ useTimer, useHaptics, useAudio, usePurchases, useMusicPlayer, useNotifications, useSupabaseData
Components 50%+ StyledText, VideoPlayer, WorkoutCard, GlassCard, CollectionCard, modals, Skeleton
Data 80%+ achievements, collections, programs, trainers, workouts

E2E Tests

  • Mobile (Maestro): Onboarding, tab navigation, program browse, workout player, activity, profile/settings
  • Admin Web (Playwright): Auth, navigation, workouts CRUD, trainers, collections

License

Proprietary — All rights reserved.


Built with ❤️ for HIIT lovers

Description
No description provided
Readme 1.8 MiB
Languages
TypeScript 94.5%
JavaScript 3.3%
PLpgSQL 1.7%
CSS 0.3%
Shell 0.2%