Three consumable products (nk_support_small/medium/large) via Google Play
and App Store billing; a 'give more' option emails support. FAQ, Terms and
Privacy updated: v1 is free, creator accounts come in a later update.
docs/support-payments.md lists the per-country prices and store setup.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Songs without their own cover use their album's. Covers live in a public
'covers' bucket that only admins can write to.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Now Playing shows where music plays and opens the phone's output switcher
- Settings hub: Wi-Fi-only downloads (default on), storage, sound, help, legal
- Privacy Policy and Terms bundled as Markdown (assets/legal), shown in-app
- 'Is this your song?' report form feeding takedown_requests (+ kind, user_id)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Email-code sign-in for admins only; Overview with a needs-attention list;
Songs with search, playback, editing, approve/hide and bulk edit; Albums
and Singers with merge; creator applications queue. Adds the admin views,
functions and creator_applications table, a deploy-admin script and a
how-to guide. The admin nginx config no longer caches unhashed JS and
sends its security headers again.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Flutter app (Android/iOS): home, explore, albums, search, player with
equalizer, mini player, sign up/sign in with email codes, profile,
encrypted offline downloads, About page
- server/: one-command deploy of self-hosted Supabase behind HestiaCP/nginx
(or Caddy), migrations, backups, email templates
- supabase/migrations: schema, row-level security, profiles
- tools/: song scanner and importer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>