# Daily Digest Blog Next.js App Router blog with Supabase-backed posts, authenticated admin panel, and MP3 audio hosting. ## Run locally ```bash npm install npm run dev ``` Dev server runs on `http://localhost:3002`. ## Environment variables Set these in `.env.local`: - `NEXT_PUBLIC_SUPABASE_URL` - `NEXT_PUBLIC_SUPABASE_ANON_KEY` - `SUPABASE_SERVICE_ROLE_KEY` (used by external scripts/tools if needed) - `CRON_API_KEY` ## Public vs admin access - Public blog (`/`) is open to everyone. - Reading messages (`GET /api/messages`) is public. - Admin UI (`/admin`) requires a signed-in Supabase user. - If not signed in, `/admin` redirects to `/login`. - Write APIs (`POST/DELETE /api/messages`) require either: - a valid Supabase user bearer token, or - `x-api-key: ` (for automation/cron). ## Login flow 1. Open `/login` 2. Sign in with a Supabase Auth email/password user 3. You are redirected to `/admin` ## Digest automation endpoint - `POST /api/digest` requires `x-api-key: ` - Used for cron-based digest publishing ## RSS feeds - `GET /api/rss` - Standard digest RSS feed for blog/article consumers - `GET /api/podcast/rss` - Podcast RSS feed (audio episodes) ## MP3 Audio Hosting Upload and host MP3 files for individual blog posts. ### Features - Upload audio files up to 50MB - Custom audio player with play/pause, seek, and volume controls - Audio indicator in admin post list - Automatic duration estimation - Stored in Supabase Storage (`podcast-audio` bucket) ### Usage 1. Go to `/admin` and log in 2. Click "Edit" on any post 3. Scroll to "Audio Attachment" section 4. Upload an MP3 file 5. Save changes ### API Endpoints - `GET /api/audio?postId={id}` - Get audio info for a post - `POST /api/audio` - Upload audio file (requires auth) - `DELETE /api/audio` - Remove audio from post (requires auth) See `docs/MP3_AUDIO_FEATURE.md` for full documentation.