metatroncubeswdev fc989b4c77 Store release setup: app icon, launch screen, iOS config, Android signing, Codemagic
- App icon from the NK emblem (iOS set, Android adaptive icon, Play 512 icon)
- Dark launch screen on both platforms; app locked to portrait; iPhone-only
- Info.plist: display name, photo/camera reasons, export compliance
- Android release signing from key.properties or Codemagic CM_KEYSTORE_*
- codemagic.yaml: iOS to TestFlight, Android to Play internal testing
- Account deletion web page; fix trailing dot in email links
- docs/app-store-release.md: step-by-step store guide

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 00:06:31 -04:00

Nanga Kathai (NK)

Our song: a music app for the Badaga people of the Nilgiris. Flutter app for iOS and Android.

Run

flutter pub get
flutter run                     # bundled demo catalog (3 demo tones), no backend needed

With Supabase, put the keys in env.json (git-ignored):

{
  "SUPABASE_URL": "https://<project>.supabase.co",
  "SUPABASE_PUBLISHABLE_KEY": "<publishable key>",
  "MEDIA_BASE_URL": "https://<r2 public domain>"
}
flutter run --dart-define-from-file=env.json

Layout

Path What
lib/app/ Theme (colours from the emblem), routes, onboarding flag
lib/audio/ NkAudioHandler (just_audio + audio_service: background play, lock screen, queue, shuffle, repeat) and its providers
lib/data/ Catalog repository (demo JSON or Supabase), liked songs and recently played
lib/core/ Models, occasions, spelling-tolerant search
lib/features/ Screens: welcome, sign-in, home, explore, occasion, search, now playing, singer, library, downloads
lib/shared/widgets/ Artwork and photo fade, singer avatar, track row, mini player, tab shell
assets/ Emblem, Nilgiris photos, demo catalog and demo tones
supabase/migrations/ Database schema and access rules

Supabase setup

  1. Create a project and run supabase/migrations/20261027000000_init.sql (SQL editor, or supabase db push).
  2. Auth → Email: turn on email sign-in. In the "Magic Link" email template, include {{ .Token }} so people receive the 6-digit code.
  3. Make yourself admin: update profiles set role = 'admin' where id = '<your user id>';

Photo credits

Landscape photos from Unsplash (Unsplash License): Vaisakh Satheesan (tea estate), Ravi Raj (Ooty village), Harshal More (Ooty valley).

Description
No description provided
Readme 20 MiB
Languages
Dart 73.9%
HTML 7%
PLpgSQL 5.4%
Python 4.7%
Shell 4%
Other 5%