A music player Telegram Mini App — stream trending YouTube music without leaving Telegram.
- Home — trending YouTube feed with infinite scroll and live search
- Player — persistent mini player with full queue management
- Playlists — create and sync playlists via Supabase
- Profile — Telegram identity + Google OAuth login
- Animations — smooth tab transitions with Framer Motion
- Frontend — React 18, TypeScript, Vite + SWC
- Styling — Tailwind CSS, shadcn/ui (Radix UI)
- State — Zustand, TanStack Query v5
- Backend — Supabase (Postgres + Auth + RLS)
- API — YouTube Data API v3
- Platform — Telegram WebApp SDK
- Tests — Vitest, Playwright
git clone https://github.com/SexyDark/SayaMusic.git
cd SayaMusic
npm install
npm run devCreate a .env.local file:
VITE_SUPABASE_URL=your_project_url
VITE_SUPABASE_ANON_KEY=your_anon_keysrc/
├── components/ HomeTab, PlaylistTab, ProfileTab, MiniPlayer, BottomNav
├── hooks/ usePlayerStore (Zustand)
├── lib/ youtube.ts, telegram.ts, theme.ts
├── pages/ Index.tsx, NotFound.tsx
└── integrations/ supabase client + types
- Create a bot via @BotFather
- Run
/newappand set your deployed URL - The app calls
WebApp.ready()andexpand()on mount - User info is read from
initDataUnsafe.user