- 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>
12 lines
629 B
Dart
12 lines
629 B
Dart
/// Build-time configuration, passed with `--dart-define` (or `--dart-define-from-file=env.json`).
|
|
/// When the Supabase values are empty the app runs on the bundled demo catalog.
|
|
abstract final class Env {
|
|
static const supabaseUrl = String.fromEnvironment('SUPABASE_URL');
|
|
static const supabasePublishableKey = String.fromEnvironment('SUPABASE_PUBLISHABLE_KEY');
|
|
|
|
/// Public base URL of the R2 bucket (custom domain), e.g. https://media.nangakathai.app
|
|
static const mediaBaseUrl = String.fromEnvironment('MEDIA_BASE_URL');
|
|
|
|
static bool get hasSupabase => supabaseUrl.isNotEmpty && supabasePublishableKey.isNotEmpty;
|
|
}
|