blog-backup/README.md

1.9 KiB

Daily Digest Blog

Next.js App Router blog with Supabase-backed posts, authenticated admin panel, and MP3 audio hosting.

Run locally

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: <CRON_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: <CRON_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.