Doc v2026.05.20App v1.0.0Admin v1.0.0
Estado atual da integração
Status de cada categoria de dados
Auth Supabase
Mock atual — qualquer credencial entra
Tickets / Chamados
Lista hardcoded · 6 tickets seed
Comunicados
Lista hardcoded · 5 comunicados seed
Agenda
Persistido em SharedPreferences (local)
Regulatório
Outorgas/CREA/PADOs hardcoded
Financeiro
Faturas hardcoded
Documentos
Lista hardcoded · sem download real
Perfil do provedor
Dados hardcoded · NetSul demo
Push (FCM/APNs)
Initialization pronta · sem token registration
Storage de arquivos
Anexos no chamado salvos só em memória
Stack do app (já implementado)
UIFlutter Material 3 + JetBrains Mono
Statepackage:provider (ChangeNotifier)
Routinggo_router
HTTPpackage:http (pronto, ainda não usado)
Auth localflutter_secure_storage (JWT)
Cache localshared_preferences
Pushfirebase_core + firebase_messaging
Biometrialocal_auth (FaceID/TouchID)
JS Interopdart:js_interop (web)
Stack do backend esperado
AuthSupabase Auth (JWT + PKCE)
APIPostgREST · https://{ref}.supabase.co/rest/v1/*
RealtimeSupabase Realtime (WebSocket)
StorageSupabase Storage (S3)
Edge functionsSupabase Edge (Deno) — opcional
Setup inicial
1. Adicionar credenciais Supabase via .env (ou --dart-define)
# .env (NÃO commitar) SUPABASE_URL=https://abc123.supabase.co SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiI... ENV=production
2. Adicionar dependências no pubspec.yaml:
dependencies: supabase_flutter: ^2.5.0 freezed_annotation: ^2.4.1 json_annotation: ^4.9.0 dev_dependencies: freezed: ^2.5.2 json_serializable: ^6.7.1 build_runner: ^2.4.9
3. Inicializar no main.dart:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Supabase.initialize(
url: const String.fromEnvironment('SUPABASE_URL'),
anonKey: const String.fromEnvironment('SUPABASE_ANON_KEY'),
authOptions: const FlutterAuthClientOptions(
authFlowType: AuthFlowType.pkce,
autoRefreshToken: true,
),
);
runApp(const MeiraApp());
}
final supabase = Supabase.instance.client;