import 'package:flutter/material.dart'; import 'package:flutter_web_plugins/url_strategy.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; import 'env.dart'; import 'router.dart'; import 'session.dart'; import 'theme.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); usePathUrlStrategy(); // admin.nkbmusic.com/songs, not /#/songs (nginx serves index.html for any path) if (!Env.isConfigured) { runApp(const _MissingConfig()); return; } await Supabase.initialize(url: Env.supabaseUrl, publishableKey: Env.supabasePublishableKey); AdminSession.instance.start(); runApp(const NkAdminApp()); } class NkAdminApp extends StatelessWidget { const NkAdminApp({super.key}); @override Widget build(BuildContext context) => MaterialApp.router( title: 'NK Admin', debugShowCheckedModeBanner: false, theme: buildNkTheme(), routerConfig: adminRouter, ); } class _MissingConfig extends StatelessWidget { const _MissingConfig(); @override Widget build(BuildContext context) => MaterialApp( theme: buildNkTheme(), home: const Scaffold( body: Center(child: Text('Built without env.json: run deploy-admin.sh (see admin/README.md).')), ), ); }