Commit Graph

8 Commits

Author SHA1 Message Date
Jeff Emmett b9551d7597 feat: add integrated music player with Navidrome + Soulseek support
Search and play music from the Navidrome library with a persistent mini
player, full-screen drawer with lyrics/playlists, and Soulseek P2P
fallback for discovering new tracks. All streaming proxied through
server-side API routes to keep credentials hidden.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 20:35:13 -07:00
Jeff Emmett 8c79b97ef7 feat: add one-click channel approval via email
Replace manual Threadfin lookup instructions with a signed approve
button in admin notification emails. Clicking it activates channels
in Threadfin via WebSocket API and sends a confirmation email to
the requester.

- Add /api/approve-channels endpoint with HMAC-signed tokens
- Add lib/threadfin.ts for WebSocket-based channel activation
- Add lib/token.ts for signed token creation/verification
- Add ws dependency for Threadfin WebSocket communication
- Update docker-compose with TOKEN_SECRET and THREADFIN_* env vars

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 12:15:10 -07:00
Jeff Emmett 709a87731c feat: add Request a Channel page, API route, and homepage buttons
Add channel request form (/request-channel) that emails admin with
channel details via nodemailer. Adds cyan "Request a Channel" button
to both hero and CTA sections of the homepage alongside Live TV and
Music buttons. Rename Traefik router to avoid conflicts with media stack.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:02:26 -07:00
Jeff Emmett b43a72a080 Add Docker healthcheck to docker-compose.yml
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 18:00:28 -07:00
Jeff Emmett 547431e9db chore: migrate SMTP from mx.jeffemmett.com to mail.rmail.online
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:15:36 +00:00
Jeff Emmett 3a2604ea2e feat: switch email from Resend to Mailcow SMTP
Resend required domain verification that wasn't set up. Switch to
self-hosted Mailcow (mx.jeffemmett.com) using nodemailer for SMTP,
matching the pattern used by other projects (cosmolocal, etc).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 01:52:34 +00:00
Jeff Emmett 279bd30c72 feat: add Live Sports button and user access request system
- Add Live Sports button linking to Jellyfin Live TV section
- Create /request-access page for users to request account access
- Add API endpoint that sends email notifications via Resend
- Add environment variables for RESEND_API_KEY and ADMIN_EMAIL
- Add .gitignore to exclude build artifacts and node_modules

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 11:26:31 +00:00
Jeff Emmett 7a5281ef4d Add Docker configuration for production deployment
- Add Dockerfile with multi-stage build for Next.js standalone
- Add docker-compose.yml with Traefik labels for jefflix.lol
- Enable standalone output in next.config.mjs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 17:23:51 -08:00