Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nanga Kathai (NK)
Our song: a music app for the Badaga people of the Nilgiris. Flutter app for iOS and Android.
- Plan: docs/NK_IMPLEMENTATION_PLAN.md
- Design canvas: https://claude.ai/artifact/9ZLCbGn4rUTVTqfRXTtMkq
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
- Create a project and run
supabase/migrations/20261027000000_init.sql(SQL editor, orsupabase db push). - Auth → Email: turn on email sign-in. In the "Magic Link" email template, include
{{ .Token }}so people receive the 6-digit code. - 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
Languages
Dart
73.9%
HTML
7%
PLpgSQL
5.4%
Python
4.7%
Shell
4%
Other
5%