How jeraldsubiera/schedule_summarizer works
Purpose and Entry Points
This is a Flutter multi-platform application, likely for composing and sharing shuttle/session summaries. The Flutter runtime starts at lib/main.dart, applies shared presentation configuration from lib/theme.dart, and renders the primary application shell in lib/views/main_view.dart.
Native host entry points wrap the same Flutter app on Android, iOS, desktop, and web: android/app/src/main/kotlin/com/example/shuttle_summary/MainActivity.kt, ios/Runner/AppDelegate.swift, and web/index.html.
Application Shell and Navigation
lib/views/main_view.dart is the top-level UI coordinator. It is supported by lib/widgets/bottom_nav_bar.dart, which indicates a tabbed or section-based client flow. Feature views are composed as widgets rather than separate native screens, keeping navigation and state in the Dart/UI layer.
Session Domain and Parsing Pipeline
The core domain object is lib/models/session_model.dart. Raw or pasted schedule/session content is transformed by lib/utils/parser_engine.dart into this model layer, creating a boundary between unstructured input and UI-ready schedule data.
Input capture and parsing-oriented interaction live in lib/widgets/accordion_input.dart; parsed results are presented through lib/widgets/schedule_card.dart. This establishes the main flow: user input → parser engine → session models → schedule display.
Player and Search Interaction
Player/participant management is a distinct UI capability in lib/widgets/manage_players_view.dart. lib/widgets/search_autocomplete.dart provides searchable selection, likely feeding player or session-related forms. These widgets remain presentation-side consumers of the app’s in-memory domain data; no repository or backend data-access layer is present in the tree.
Sharing and External Integrations
Sharing is isolated behind platform-specific implementations: lib/utils/sharing.dart selects lib/utils/sharing_mobile.dart or lib/utils/sharing_web.dart. WhatsApp launching follows the same conditional-platform pattern via lib/utils/whatsapp_launcher.dart, lib/utils/whatsapp_launcher_web.dart, and lib/utils/whatsapp_launcher_stub.dart.
Google SSO is similarly abstracted: lib/helpers/google_sso.dart routes to web or non-web implementations in lib/helpers/google_sso_web.dart and lib/helpers/google_sso_stub.dart. These boundaries prevent platform APIs from leaking into core views.
Runtime and Platform Surface
Flutter/Dart is the primary runtime, with generated/native shells for Android, iOS, Linux, macOS, Windows, and web. The web target includes PWA assets and service-worker support in web/manifest.json, web/sw.js, and web/flutter_bootstrap.js. iOS additionally contains a share extension at ios/ShareExtension/ShareViewController.swift, which can receive shared content outside the main app process.
Firebase Infrastructure
Firebase hosting and Firestore security rules are configured in firebase.json, .firebaserc, and firestore.rules. The repository also contains an email extension environment file, extensions/send-email.env, indicating Firebase Extensions may support outbound email. No Dart Firebase service/client implementation is visible, so Firebase appears provisioned infrastructure rather than a currently explicit application data path.
Main entry points: main_view.dart Application shell · main.dart Flutter entry point · sharing.dart Sharing facade · whatsapp_launcher.dart WhatsApp launcher
Components 24
Flutter Client
Dart application UI and domain flow.
- Flutter entry point
lib/main.dart - Shared theme
lib/theme.dart - Application shell · Coordinates the primary client UI.
lib/views/main_view.dart - Bottom navigation
lib/widgets/bottom_nav_bar.dart - Schedule input
lib/widgets/accordion_input.dart - Parser engine · Transforms raw schedule content into domain data.
lib/utils/parser_engine.dart - Session model
lib/models/session_model.dart - Schedule display
lib/widgets/schedule_card.dart - Player management
lib/widgets/manage_players_view.dart - Search autocomplete
lib/widgets/search_autocomplete.dart
Platform Integrations
Conditional Dart interfaces isolate platform APIs.
- Sharing facade
lib/utils/sharing.dart - Mobile sharing
lib/utils/sharing_mobile.dart - Web sharing
lib/utils/sharing_web.dart - WhatsApp launcher
lib/utils/whatsapp_launcher.dart - Web WhatsApp launcher
lib/utils/whatsapp_launcher_web.dart - Non-web WhatsApp launcher
lib/utils/whatsapp_launcher_stub.dart - Google SSO facade
lib/helpers/google_sso.dart - Web Google SSO
lib/helpers/google_sso_web.dart - Non-web Google SSO
lib/helpers/google_sso_stub.dart
Native and Web Hosts
Platform entry surfaces wrapping the Flutter app.
- Android and iOS hosts · Launch the same Flutter application on mobile.
android/app/src/main/kotlin/com/example/shuttle_summary/MainActivity.kt - Web host
web/index.html - iOS share extension · Receives shared content outside the main app process.
ios/ShareExtension/ShareViewController.swift
Firebase Infrastructure
Provisioned hosting, rules, and extension configuration.
- Firebase configuration · Hosting and Firestore security are provisioned without a visible Dart client path.
firebase.json - Email extension environment
extensions/send-email.env
Connections 19
- Flutter entry point → Shared theme: applies
- Flutter entry point → Application shell: renders
- Application shell → Bottom navigation: uses
- Application shell → Schedule input: hosts
- Application shell → Schedule display: shows
- Application shell → Player management: hosts
- Player management → Search autocomplete: uses
- Schedule input → Parser engine: submits raw content
- Parser engine → Session model: produces
- Session model → Schedule display: drives display
- Sharing facade → Mobile sharing: selects on mobile
- Sharing facade → Web sharing: selects on web
- WhatsApp launcher → Web WhatsApp launcher: selects on web
- WhatsApp launcher → Non-web WhatsApp launcher: selects otherwise
- Google SSO facade → Web Google SSO: selects on web
- Google SSO facade → Non-web Google SSO: selects otherwise
- Android and iOS hosts → Flutter entry point: launches
- Web host → Flutter entry point: boots
- Email extension environment → Firebase configuration: provisioned alongside