Turkish and international radio streams in one place — Next.js, Prisma (SQLite), M3U import, categories, favorites, soft delete, and an admin panel.
- Browse stations by category, All, or Favorites (
localStoragekey:radyo_favorites) - Sticky player with previous / next (wrap-around within the current list)
- Per-station menu: rename, change category, soft delete — optimistic UI + toasts (Sonner)
- Admin: Stations (with category-wide soft delete), M3U import (rate-limited), Trash (restore / empty trash)
- Seed script loads
prisma/stations.jsonand normalizes tiny categories post-seed
git clone https://github.com/waldseelen/RadioStack.git
cd RadioStack
npm install
npx prisma db push
npx prisma db seed
npm run devOpen http://localhost:3000. Admin UI: /admin.
| Command | Description |
|---|---|
npm run dev |
Next.js dev server (Turbopack) |
npm run build |
prisma generate + production build |
npm run start |
Production server |
npm run db:push |
Push Prisma schema to SQLite |
npm run db:seed |
Run ts-node prisma/seed.ts (via Prisma seed) |
npm run db:studio |
Prisma Studio |
cp .env.example .envOr create .env with:
DATABASE_URL="file:./dev.db"SQLite file is created under prisma/ after db push.
Next.js 15.3.6+ (patched for CVE-2025-66478) · React 19 · Prisma 6 · SQLite · Tailwind CSS 4 · Zustand · lucide-react · Sonner
MIT (or your choice — add a LICENSE file if needed).