├── .cursorignore
├── .env.example
├── .fvm
├── .gitignore
├── fvm_config.json
└── release
├── .fvmrc
├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── -------------------.md
│ └── -----------------.md
└── workflows
│ ├── main.yml
│ ├── permission_client.yaml
│ ├── persistent_storage.yaml
│ ├── schedule_api_client.yaml
│ ├── secure_storage.yaml
│ ├── shorebird-release.yml
│ └── storage.yaml
├── .gitignore
├── .gitmodules
├── .idea
└── runConfigurations
│ └── main_dart.xml
├── .metadata
├── .vscode
├── launch.json
└── settings.json
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── .idea
│ ├── .gitignore
│ ├── compiler.xml
│ ├── gradle.xml
│ ├── jarRepositories.xml
│ ├── kotlinc.xml
│ ├── misc.xml
│ ├── modules.xml
│ └── vcs.xml
├── app
│ ├── build.gradle
│ ├── google-services.json
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ ├── AndroidManifest.xml
│ │ └── google-services.json
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── ninja
│ │ │ │ └── mirea
│ │ │ │ └── mireaapp
│ │ │ │ ├── MainActivity.kt
│ │ │ │ └── glance
│ │ │ │ ├── ScheduleGlanceAppWidget.kt
│ │ │ │ └── ScheduleWidgetReceiver.kt
│ │ └── res
│ │ │ ├── drawable-anydpi-v24
│ │ │ └── ic_stat_ic_notification.xml
│ │ │ ├── drawable-hdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_stat_ic_notification.png
│ │ │ ├── drawable-mdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_stat_ic_notification.png
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_stat_ic_notification.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_stat_ic_notification.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable
│ │ │ ├── background.png
│ │ │ ├── ic_location.xml
│ │ │ ├── ic_more.xml
│ │ │ ├── ic_no_lessons.xml
│ │ │ ├── ic_time.xml
│ │ │ ├── ic_type.xml
│ │ │ ├── ic_week_number.xml
│ │ │ ├── label_bg.xml
│ │ │ ├── label_bg_01.xml
│ │ │ ├── label_bg_black.xml
│ │ │ ├── label_bg_title.xml
│ │ │ ├── launch_background.xml
│ │ │ ├── lesson_item_background_dark.xml
│ │ │ ├── lesson_item_background_light.xml
│ │ │ ├── lesson_type_indicator.xml
│ │ │ ├── lesson_type_pill.xml
│ │ │ ├── logo.jpg
│ │ │ ├── monochrome_icon.xml
│ │ │ ├── more_lesson_indicator.xml
│ │ │ ├── week_badge.xml
│ │ │ ├── week_number_badge.xml
│ │ │ ├── widget_background_dark.xml
│ │ │ ├── widget_background_light.xml
│ │ │ └── widget_header_background.xml
│ │ │ ├── layout
│ │ │ ├── glance_default_loading_layout.xml
│ │ │ └── placeholder.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_stat_ic_notification.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-night-v31
│ │ │ └── styles.xml
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values-v31
│ │ │ └── styles.xml
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ ├── backup_rules.xml
│ │ │ └── schedule_glance_widget_info.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── api
├── .env.example
├── .gitignore
├── .vscode
│ └── launch.json
├── Dockerfile
├── README.md
├── analysis_options.yaml
├── docker-compose.yml
├── lib
│ ├── api.dart
│ ├── client.dart
│ ├── config.dart
│ └── src
│ │ ├── client
│ │ └── api_client.dart
│ │ ├── data
│ │ ├── community
│ │ │ ├── community_data_source.dart
│ │ │ ├── community_github_data_source_with_static_data.dart
│ │ │ ├── models
│ │ │ │ ├── models.dart
│ │ │ │ ├── sponsor.dart
│ │ │ │ └── sponsor.g.dart
│ │ │ └── static_sponsors_data.dart
│ │ ├── lost_and_found
│ │ │ ├── lost_and_found_data_source.dart
│ │ │ ├── models
│ │ │ │ ├── lost_and_found_item.dart
│ │ │ │ ├── lost_and_found_item.g.dart
│ │ │ │ └── models.dart
│ │ │ └── supabase_lost_and_found_data_source.dart
│ │ ├── news
│ │ │ ├── models
│ │ │ │ ├── article.dart
│ │ │ │ ├── article.g.dart
│ │ │ │ └── models.dart
│ │ │ ├── news_data_source.dart
│ │ │ └── rtu_mirea_news_data_source
│ │ │ │ ├── models
│ │ │ │ ├── models.dart
│ │ │ │ ├── rtu_mirea_news_item.dart
│ │ │ │ └── rtu_mirea_news_item.g.dart
│ │ │ │ └── rtu_mirea_news_data_source.dart
│ │ ├── schedule
│ │ │ ├── cached_schedule_data_source.dart
│ │ │ ├── in_memory_schedule_data_source.dart
│ │ │ ├── rtu_mirea_schedule_data_source.dart
│ │ │ ├── schedule_data_source.dart
│ │ │ ├── static_holidays_data.dart
│ │ │ └── static_schedule_data.dart
│ │ └── splash_video
│ │ │ ├── splash_video_data_source.dart
│ │ │ └── supabase_splash_video_data_source.dart
│ │ ├── logger.dart
│ │ ├── middleware
│ │ ├── community_data_source_provider.dart
│ │ ├── cors.dart
│ │ ├── logger_provider.dart
│ │ ├── lost_and_found_data_source_provider.dart
│ │ ├── middleware.dart
│ │ ├── news_data_source_provider.dart
│ │ ├── redis_provider.dart
│ │ ├── schedule_data_source_provider.dart
│ │ ├── splash_video_data_source_provider.dart
│ │ ├── supabase_provider.dart
│ │ └── user_provider.dart
│ │ ├── models
│ │ ├── community
│ │ │ ├── contributors_response
│ │ │ │ ├── contributors_response.dart
│ │ │ │ └── contributors_response.g.dart
│ │ │ └── sponsors_response
│ │ │ │ ├── sponsors_response.dart
│ │ │ │ └── sponsors_response.g.dart
│ │ ├── lost_and_found
│ │ │ ├── lost_found_items_response.dart
│ │ │ └── lost_found_items_response.g.dart
│ │ ├── models.dart
│ │ ├── news
│ │ │ ├── categories_response
│ │ │ │ ├── categories_response.dart
│ │ │ │ └── categories_response.g.dart
│ │ │ ├── news_feed_response
│ │ │ │ ├── news_feed_response.dart
│ │ │ │ └── news_feed_response.g.dart
│ │ │ └── news_item_response
│ │ │ │ ├── news_item_response.dart
│ │ │ │ └── news_item_response.g.dart
│ │ ├── schedule
│ │ │ ├── schedule_response.dart
│ │ │ ├── schedule_response.g.dart
│ │ │ ├── search_classrooms_response.dart
│ │ │ ├── search_classrooms_response.g.dart
│ │ │ ├── search_groups_response.dart
│ │ │ ├── search_groups_response.g.dart
│ │ │ ├── search_teachers_response.dart
│ │ │ └── search_teachers_response.g.dart
│ │ ├── splash_video_response.dart
│ │ └── splash_video_response.g.dart
│ │ ├── redis.dart
│ │ └── supabase.dart
├── nenuphar.json
├── packages
│ ├── github
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ │ ├── github.dart
│ │ │ └── src
│ │ │ │ ├── github.dart
│ │ │ │ └── models
│ │ │ │ ├── contributor.dart
│ │ │ │ └── contributor.g.dart
│ │ ├── pubspec.lock
│ │ ├── pubspec.yaml
│ │ └── test
│ │ │ └── src
│ │ │ ├── github_test.dart
│ │ │ └── models
│ │ │ └── contributor_test.dart
│ ├── news_blocks
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── build.yaml
│ │ ├── lib
│ │ │ ├── news_blocks.dart
│ │ │ └── src
│ │ │ │ ├── article_introduction_block.dart
│ │ │ │ ├── article_introduction_block.g.dart
│ │ │ │ ├── banner_ad_block.dart
│ │ │ │ ├── banner_ad_block.g.dart
│ │ │ │ ├── block_action.dart
│ │ │ │ ├── block_action.g.dart
│ │ │ │ ├── block_action_converter.dart
│ │ │ │ ├── category.dart
│ │ │ │ ├── category.g.dart
│ │ │ │ ├── divider_horizontal_block.dart
│ │ │ │ ├── divider_horizontal_block.g.dart
│ │ │ │ ├── html_block.dart
│ │ │ │ ├── html_block.g.dart
│ │ │ │ ├── image_block.dart
│ │ │ │ ├── image_block.g.dart
│ │ │ │ ├── news_block.dart
│ │ │ │ ├── news_blocks_converter.dart
│ │ │ │ ├── newsletter_block.dart
│ │ │ │ ├── newsletter_block.g.dart
│ │ │ │ ├── post_block.dart
│ │ │ │ ├── post_grid_group_block.dart
│ │ │ │ ├── post_grid_group_block.g.dart
│ │ │ │ ├── post_grid_tile_block.dart
│ │ │ │ ├── post_grid_tile_block.g.dart
│ │ │ │ ├── post_large_block.dart
│ │ │ │ ├── post_large_block.g.dart
│ │ │ │ ├── post_medium_block.dart
│ │ │ │ ├── post_medium_block.g.dart
│ │ │ │ ├── post_small_block.dart
│ │ │ │ ├── post_small_block.g.dart
│ │ │ │ ├── section_header_block.dart
│ │ │ │ ├── section_header_block.g.dart
│ │ │ │ ├── slide_block.dart
│ │ │ │ ├── slide_block.g.dart
│ │ │ │ ├── slideshow_block.dart
│ │ │ │ ├── slideshow_block.g.dart
│ │ │ │ ├── slideshow_introduction_block.dart
│ │ │ │ ├── slideshow_introduction_block.g.dart
│ │ │ │ ├── spacer_block.dart
│ │ │ │ ├── spacer_block.g.dart
│ │ │ │ ├── text_caption_block.dart
│ │ │ │ ├── text_caption_block.g.dart
│ │ │ │ ├── text_headline_block.dart
│ │ │ │ ├── text_headline_block.g.dart
│ │ │ │ ├── text_lead_paragraph_block.dart
│ │ │ │ ├── text_lead_paragraph_block.g.dart
│ │ │ │ ├── text_paragraph_block.dart
│ │ │ │ ├── text_paragraph_block.g.dart
│ │ │ │ ├── trending_story_block.dart
│ │ │ │ ├── trending_story_block.g.dart
│ │ │ │ ├── unknown_block.dart
│ │ │ │ ├── unknown_block.g.dart
│ │ │ │ ├── video_block.dart
│ │ │ │ ├── video_block.g.dart
│ │ │ │ ├── video_introduction_block.dart
│ │ │ │ └── video_introduction_block.g.dart
│ │ ├── pubspec.yaml
│ │ ├── pubspec_overrides.yaml
│ │ └── test
│ │ │ └── src
│ │ │ ├── article_introduction_block_test.dart
│ │ │ ├── banner_ad_block_test.dart
│ │ │ ├── block_action_converter_test.dart
│ │ │ ├── block_action_test.dart
│ │ │ ├── category_test.dart
│ │ │ ├── divider_horizontal_block_test.dart
│ │ │ ├── html_block_test.dart
│ │ │ ├── image_block_test.dart
│ │ │ ├── news_block_test.dart
│ │ │ ├── news_blocks_converter_test.dart
│ │ │ ├── newsletter_block_test.dart
│ │ │ ├── post_block_test.dart
│ │ │ ├── post_grid_group_block_test.dart
│ │ │ ├── post_grid_tile_block_test.dart
│ │ │ ├── post_large_block_test.dart
│ │ │ ├── post_medium_block_test.dart
│ │ │ ├── post_small_block_test.dart
│ │ │ ├── section_header_block_test.dart
│ │ │ ├── slide_block_test.dart
│ │ │ ├── slideshow_block_test.dart
│ │ │ ├── slideshow_introduction_block_test.dart
│ │ │ ├── spacer_block_test.dart
│ │ │ ├── test_caption_block_test.dart
│ │ │ ├── text_headline_block_test.dart
│ │ │ ├── text_lead_paragraph_block_test.dart
│ │ │ ├── text_paragraph_block_test.dart
│ │ │ ├── trending_story_block_test.dart
│ │ │ ├── unknown_block_test.dart
│ │ │ ├── video_block_test.dart
│ │ │ └── video_intro_block_test.dart
│ ├── rtu_mirea_schedule_api_client
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── coverage_badge.svg
│ │ ├── lib
│ │ │ ├── rtu_mirea_schedule_api_client.dart
│ │ │ └── src
│ │ │ │ ├── campuses.dart
│ │ │ │ ├── fields_data_parsers.dart
│ │ │ │ ├── ical_custom_fields_registry.dart
│ │ │ │ ├── ical_parser.dart
│ │ │ │ ├── lessons_bells.dart
│ │ │ │ ├── models
│ │ │ │ ├── models.dart
│ │ │ │ ├── search_data.dart
│ │ │ │ ├── search_data.g.dart
│ │ │ │ ├── search_item.dart
│ │ │ │ └── search_item.g.dart
│ │ │ │ └── rtu_mirea_schedule_api_client.dart
│ │ ├── pubspec.yaml
│ │ ├── pubspec_overrides.yaml
│ │ └── test
│ │ │ └── src
│ │ │ ├── fields_data_parsers_test.dart
│ │ │ ├── ical_parser_test.dart
│ │ │ └── rtu_mirea_schedule_api_client_test.dart
│ └── schedule
│ │ ├── .gitignore
│ │ ├── analysis_options.yaml
│ │ ├── build.yaml
│ │ ├── lib
│ │ ├── schedule.dart
│ │ └── src
│ │ │ ├── dates_converter.dart
│ │ │ ├── holiday_schedule_part.dart
│ │ │ ├── holiday_schedule_part.g.dart
│ │ │ ├── lessons_schedule
│ │ │ ├── campus.dart
│ │ │ ├── campus.g.dart
│ │ │ ├── classroom.dart
│ │ │ ├── classroom.g.dart
│ │ │ ├── group.dart
│ │ │ ├── group.g.dart
│ │ │ ├── lesson_bells.dart
│ │ │ ├── lesson_bells.g.dart
│ │ │ ├── lesson_schedule_part.dart
│ │ │ ├── lesson_schedule_part.g.dart
│ │ │ ├── lesson_type.dart
│ │ │ ├── lessons_schedule.dart
│ │ │ ├── schedule_target.dart
│ │ │ ├── teacher.dart
│ │ │ └── teacher.g.dart
│ │ │ ├── schedule_part.dart
│ │ │ ├── time_of_day.dart
│ │ │ ├── unknown_schedule_part.dart
│ │ │ └── unknown_schedule_part.g.dart
│ │ └── pubspec.yaml
├── public
│ ├── index.html
│ └── openapi.json
├── pubspec.lock
├── pubspec.yaml
└── routes
│ ├── _middleware.dart
│ ├── api
│ └── v1
│ │ ├── community
│ │ ├── contributors.dart
│ │ └── sponsors.dart
│ │ ├── lost-found
│ │ ├── [id].dart
│ │ ├── index.dart
│ │ ├── search.dart
│ │ └── user
│ │ │ └── [id].dart
│ │ ├── news
│ │ ├── ads.dart
│ │ ├── categories.dart
│ │ └── index.dart
│ │ ├── schedule
│ │ ├── classroom
│ │ │ └── [classroom].dart
│ │ ├── group
│ │ │ └── [group].dart
│ │ ├── search
│ │ │ ├── classrooms.dart
│ │ │ ├── groups.dart
│ │ │ └── teachers.dart
│ │ └── teacher
│ │ │ └── [teacher].dart
│ │ └── splash-video
│ │ └── index.dart
│ └── index.dart
├── devtools_options.yaml
├── flutter_native_splash.yaml
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── HomeWidget
│ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── WidgetBackground.colorset
│ │ │ └── Contents.json
│ ├── HomeWidget.intentdefinition
│ ├── HomeWidget.swift
│ └── Info.plist
├── HomeWidgetExtension.entitlements
├── Podfile
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── Icon-App-20x20@1x.png
│ │ ├── Icon-App-20x20@2x.png
│ │ ├── Icon-App-20x20@3x.png
│ │ ├── Icon-App-29x29@1x.png
│ │ ├── Icon-App-29x29@2x.png
│ │ ├── Icon-App-29x29@3x.png
│ │ ├── Icon-App-40x40@1x.png
│ │ ├── Icon-App-40x40@2x.png
│ │ ├── Icon-App-40x40@3x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-76x76@1x.png
│ │ ├── Icon-App-76x76@2x.png
│ │ └── Icon-App-83.5x83.5@2x.png
│ ├── LaunchBackground.imageset
│ │ ├── Contents.json
│ │ └── background.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── GoogleService-Info.plist
│ ├── Info.plist
│ ├── Runner-Bridging-Header.h
│ └── Runner.entitlements
├── lib
├── ads
│ ├── ads.dart
│ ├── bloc
│ │ ├── ads_bloc.dart
│ │ ├── full_screen_ads_bloc.dart
│ │ ├── full_screen_ads_event.dart
│ │ └── full_screen_ads_state.dart
│ └── widgets
│ │ ├── measured_sticky_ad.dart
│ │ ├── sticky_ad.dart
│ │ └── widgets.dart
├── analytics
│ ├── analytics.dart
│ └── bloc
│ │ ├── analytics_bloc.dart
│ │ ├── analytics_event.dart
│ │ └── analytics_state.dart
├── app
│ ├── app.dart
│ ├── bloc
│ │ ├── app_bloc.dart
│ │ ├── app_event.dart
│ │ └── app_state.dart
│ ├── theme
│ │ └── theme_mode.dart
│ ├── view
│ │ └── app.dart
│ └── widgets
│ │ ├── firebase_interacted_message_listener.dart
│ │ ├── watch_connectivity_wrapper.dart
│ │ └── widgets.dart
├── common
│ ├── errors
│ │ ├── exceptions.dart
│ │ └── failures.dart
│ ├── hydrated_storage.dart
│ ├── utils
│ │ ├── calendar_utils.dart
│ │ ├── logger.dart
│ │ └── utils.dart
│ └── widgets
│ │ └── responsive_layout.dart
├── contributors
│ ├── bloc
│ │ ├── contributors_bloc.dart
│ │ ├── contributors_event.dart
│ │ └── contributors_state.dart
│ ├── contributors.dart
│ ├── view
│ │ ├── contributors_view.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── contributor_card.dart
│ │ ├── skeleton_contributor_card.dart
│ │ └── widgets.dart
├── data
│ ├── datasources
│ │ ├── app_settings_local.dart
│ │ ├── forum_local.dart
│ │ ├── forum_remote.dart
│ │ ├── news_remote.dart
│ │ ├── strapi_remote.dart
│ │ └── widget_data.dart
│ ├── models
│ │ ├── announce_model.dart
│ │ ├── app_settings_model.dart
│ │ ├── attendance_model.dart
│ │ ├── edu_program_model.dart
│ │ ├── employee_model.dart
│ │ ├── forum_member_model.dart
│ │ ├── lesson_model.dart
│ │ ├── news_item_model.dart
│ │ ├── schedule_settings_model.dart
│ │ ├── score_model.dart
│ │ ├── story_model.dart
│ │ ├── strapi_media_model.dart
│ │ ├── student_model.dart
│ │ ├── update_info_model
│ │ │ ├── update_info_model.dart
│ │ │ ├── update_info_model.freezed.dart
│ │ │ └── update_info_model.g.dart
│ │ └── user_model.dart
│ └── repositories
│ │ ├── app_settings_repository_impl.dart
│ │ ├── news_repository_impl.dart
│ │ └── stories_repository_impl.dart
├── discourse_post_overview
│ ├── bloc
│ │ ├── post_overview_bloc.dart
│ │ ├── post_overview_event.dart
│ │ └── post_overview_state.dart
│ ├── discourse.dart
│ ├── view
│ │ ├── post_overview_page_view.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── topic_card.dart
│ │ ├── topics_sckeleton_card.dart
│ │ └── widgets.dart
├── domain
│ ├── entities
│ │ ├── announce.dart
│ │ ├── app_settings.dart
│ │ ├── attendance.dart
│ │ ├── edu_program.dart
│ │ ├── edu_program.g.dart
│ │ ├── employee.dart
│ │ ├── forum_member.dart
│ │ ├── lesson.dart
│ │ ├── news_item.dart
│ │ ├── schedule.dart
│ │ ├── schedule_settings.dart
│ │ ├── score.dart
│ │ ├── score.g.dart
│ │ ├── story.dart
│ │ ├── strapi_media.dart
│ │ ├── student.dart
│ │ ├── student.g.dart
│ │ ├── update_info.dart
│ │ ├── user.dart
│ │ └── user.g.dart
│ ├── repositories
│ │ ├── app_settings_repository.dart
│ │ ├── forum_repository.dart
│ │ ├── news_repository.dart
│ │ ├── schedule_repository.dart
│ │ ├── stories_repository.dart
│ │ └── user_repository.dart
│ └── usecases
│ │ ├── delete_schedule.dart
│ │ ├── get_announces.dart
│ │ ├── get_app_settings.dart
│ │ ├── get_attendance.dart
│ │ ├── get_auth_token.dart
│ │ ├── get_downloaded_schedules.dart
│ │ ├── get_employees.dart
│ │ ├── get_groups.dart
│ │ ├── get_news.dart
│ │ ├── get_news_tags.dart
│ │ ├── get_patrons.dart
│ │ ├── get_schedule.dart
│ │ ├── get_schedule_settings.dart
│ │ ├── get_scores.dart
│ │ ├── get_stories.dart
│ │ ├── get_user_data.dart
│ │ ├── log_in.dart
│ │ ├── log_out.dart
│ │ ├── set_app_settings.dart
│ │ ├── set_schedule_settings.dart
│ │ └── usecase.dart
├── env
│ └── env.dart
├── firebase_options.dart
├── gen
│ └── assets.gen.dart
├── home
│ ├── cubit
│ │ ├── home_cubit.dart
│ │ └── home_state.dart
│ ├── home.dart
│ └── view
│ │ ├── home_page.dart
│ │ └── view.dart
├── login
│ ├── bloc
│ │ ├── login_bloc.dart
│ │ ├── login_event.dart
│ │ ├── login_state.dart
│ │ ├── login_with_email_link_bloc.dart
│ │ ├── login_with_email_link_event.dart
│ │ └── login_with_email_link_state.dart
│ ├── login.dart
│ ├── view
│ │ ├── login_modal.dart
│ │ ├── login_with_email_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── login_form.dart
│ │ ├── login_with_email_form.dart
│ │ └── widgets.dart
├── lost_and_found
│ ├── bloc
│ │ ├── bloc.dart
│ │ ├── lost_and_found_bloc.dart
│ │ ├── lost_and_found_event.dart
│ │ └── lost_and_found_state.dart
│ ├── lost_and_found.dart
│ ├── models
│ │ ├── form_inputs.dart
│ │ └── lost_found_filter.dart
│ ├── view
│ │ ├── create_lost_found_page.dart
│ │ ├── lost_found_details_page.dart
│ │ ├── lost_found_page.dart
│ │ ├── my_lost_found_items_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── empty_state_widget.dart
│ │ ├── error_state_widget.dart
│ │ ├── image_gallery.dart
│ │ ├── loading_state_widget.dart
│ │ ├── lost_found_item_card.dart
│ │ └── widgets.dart
├── main
│ ├── bootstrap
│ │ ├── app_bloc_observer.dart
│ │ └── bootstrap.dart
│ ├── main_development.dart
│ └── main_production.dart
├── map
│ ├── bloc
│ │ ├── map_bloc.dart
│ │ ├── map_event.dart
│ │ └── map_state.dart
│ ├── map.dart
│ ├── models
│ │ ├── campus_model.dart
│ │ ├── floor_model.dart
│ │ ├── models.dart
│ │ └── room_model.dart
│ ├── services
│ │ ├── objects_service.dart
│ │ ├── services.dart
│ │ └── svg_room_parser.dart
│ ├── view
│ │ ├── map_page_view.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── campus_selector.dart
│ │ ├── map_canvas.dart
│ │ ├── map_navigation_button.dart
│ │ ├── svg_interactive_view.dart
│ │ └── widgets.dart
├── navigation
│ ├── navigation.dart
│ ├── routes
│ │ └── routes.dart
│ ├── view
│ │ ├── scaffold_navigation_shell.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── bottom_nav_bar.dart
│ │ ├── sidebar.dart
│ │ └── widgets.dart
├── neon
│ ├── apps.dart
│ ├── bloc
│ │ ├── neon_bloc.dart
│ │ ├── neon_event.dart
│ │ └── neon_state.dart
│ ├── branding.dart
│ ├── neon.dart
│ ├── neon_dependencies.dart
│ ├── neon_initializer.dart
│ └── widgets
│ │ ├── neon_app.dart
│ │ └── widgets.dart
├── nfc_pass
│ ├── bloc
│ │ └── nfc_pass_cubit.dart
│ ├── view
│ │ ├── nfc_pass_page_view.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── nfc_card_info.dart
│ │ ├── nfc_card_settings_dialog.dart
│ │ ├── nfc_media_preview.dart
│ │ ├── nfc_media_selector.dart
│ │ ├── nfc_pass_card.dart
│ │ ├── six_digit_code_input.dart
│ │ └── widgets.dart
├── onboarding
│ ├── onboarding.dart
│ ├── view
│ │ ├── onboarding_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── bottom_loader.dart
│ │ ├── next_button.dart
│ │ ├── page_view_indicator.dart
│ │ └── widgets.dart
├── presentation
│ ├── bloc
│ │ ├── announces_bloc
│ │ │ ├── announces_bloc.dart
│ │ │ ├── announces_event.dart
│ │ │ └── announces_state.dart
│ │ ├── attendance_bloc
│ │ │ ├── attendance_bloc.dart
│ │ │ ├── attendance_event.dart
│ │ │ └── attendance_state.dart
│ │ ├── employee_bloc
│ │ │ ├── employee_bloc.dart
│ │ │ ├── employee_event.dart
│ │ │ └── employee_state.dart
│ │ ├── news_bloc
│ │ │ ├── news_bloc.dart
│ │ │ ├── news_event.dart
│ │ │ └── news_state.dart
│ │ ├── notification_preferences
│ │ │ ├── notification_preferences_bloc.dart
│ │ │ ├── notification_preferences_event.dart
│ │ │ └── notification_preferences_state.dart
│ │ ├── scores_bloc
│ │ │ ├── scores_bloc.dart
│ │ │ ├── scores_bloc.g.dart
│ │ │ ├── scores_event.dart
│ │ │ └── scores_state.dart
│ │ └── user_bloc
│ │ │ ├── user_bloc.dart
│ │ │ ├── user_bloc.g.dart
│ │ │ ├── user_event.dart
│ │ │ └── user_state.dart
│ ├── constants.dart
│ └── pages
│ │ ├── news
│ │ ├── news_details_page.dart
│ │ ├── news_page.dart
│ │ └── widgets
│ │ │ ├── news_card.dart
│ │ │ ├── news_card_date.dart
│ │ │ ├── news_tags.dart
│ │ │ └── tag_badge.dart
│ │ └── profile
│ │ ├── about_app_page.dart
│ │ ├── notifications_settings_page.dart
│ │ ├── profile_announces_page.dart
│ │ ├── profile_settings_page.dart
│ │ └── widgets
│ │ ├── attendance_card.dart
│ │ ├── bottom_error_info.dart
│ │ └── member_info.dart
├── profile
│ ├── profile.dart
│ ├── view
│ │ ├── profile_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── export_schedule_modal_content.dart
│ │ ├── feedback_modal.dart
│ │ ├── list_tile_theme_item.dart
│ │ ├── profile_button.dart
│ │ ├── schedule_management_section.dart
│ │ ├── schedule_section_wrapper.dart
│ │ ├── settings_item.dart
│ │ ├── settings_section.dart
│ │ └── widgets.dart
├── rating_system_calculator
│ ├── bloc
│ │ ├── rating_system_bloc.dart
│ │ ├── rating_system_bloc.g.dart
│ │ ├── rating_system_event.dart
│ │ └── rating_system_state.dart
│ ├── models
│ │ ├── models.dart
│ │ ├── subject.dart
│ │ └── subject.g.dart
│ ├── rating_system_calculator.dart
│ ├── view
│ │ ├── about_rating_system_page.dart
│ │ ├── rating_system_calculator_page.dart
│ │ ├── subject_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── scores_table.dart
│ │ ├── short_description_card.dart
│ │ ├── subject_card.dart
│ │ └── widgets.dart
├── schedule
│ ├── bloc
│ │ ├── calculate_schedule_diff.dart
│ │ ├── schedule_bloc.dart
│ │ ├── schedule_bloc.freezed.dart
│ │ ├── schedule_bloc.g.dart
│ │ ├── schedule_event.dart
│ │ └── schedule_state.dart
│ ├── models
│ │ ├── custom_schedule.dart
│ │ ├── custom_schedule.freezed.dart
│ │ ├── custom_schedule.g.dart
│ │ ├── lesson_comment.dart
│ │ ├── lesson_comment.g.dart
│ │ ├── models.dart
│ │ ├── schedule_comment.dart
│ │ ├── schedule_comment.g.dart
│ │ ├── selected_classroom_schedule.dart
│ │ ├── selected_classroom_schedule.g.dart
│ │ ├── selected_custom_schedule.dart
│ │ ├── selected_group_schedule.dart
│ │ ├── selected_group_schedule.g.dart
│ │ ├── selected_schedule.dart
│ │ ├── selected_teacher_schedule.dart
│ │ └── selected_teacher_schedule.g.dart
│ ├── schedule.dart
│ ├── utils
│ │ └── schedule_widget_updater.dart
│ ├── view
│ │ ├── custom_lesson_editor_page.dart
│ │ ├── custom_schedules_page.dart
│ │ ├── schedule_details_page.dart
│ │ ├── schedule_page.dart
│ │ ├── syncfusion_calendar_screen.dart
│ │ ├── syncfusion_calendar_view.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── add_group_button.dart
│ │ ├── break_widgets.dart
│ │ ├── calendar
│ │ ├── calendar.dart
│ │ ├── calendar_header.dart
│ │ ├── format_toggle.dart
│ │ ├── lock_scroll_physics.dart
│ │ └── table_calendar.dart
│ │ ├── calendar_stories_app_bar.dart
│ │ ├── calendar_stories_wrapper.dart
│ │ ├── comparison_lesson_card.dart
│ │ ├── comparison_lessons_table.dart
│ │ ├── comparison_manager.dart
│ │ ├── comparison_mode_button.dart
│ │ ├── comparison_sticky_header.dart
│ │ ├── custom_schedule_selector.dart
│ │ ├── date_range_picker.dart
│ │ ├── datetime_field.dart
│ │ ├── desktop_account_panel.dart
│ │ ├── desktop_app_bar.dart
│ │ ├── desktop_calendar_panel.dart
│ │ ├── desktop_no_schedule_view.dart
│ │ ├── desktop_schedule_content.dart
│ │ ├── desktop_schedule_sidebar.dart
│ │ ├── empty_lesson_card.dart
│ │ ├── events_page_view.dart
│ │ ├── holiday_page.dart
│ │ ├── lesson_card.dart
│ │ ├── lesson_time_display.dart
│ │ ├── lesson_type_selector.dart
│ │ ├── loading_error_message.dart
│ │ ├── map_view.dart
│ │ ├── mobile_map_view.dart
│ │ ├── no_selected_schedule_message.dart
│ │ ├── schedule_analytics.dart
│ │ ├── schedule_diff_dialog.dart
│ │ ├── schedule_drawer_button.dart
│ │ ├── schedule_item_button.dart
│ │ ├── schedules_list.dart
│ │ ├── settings_button.dart
│ │ ├── sticky_header.dart
│ │ ├── view_toggle_button.dart
│ │ ├── web_map_view.dart
│ │ └── widgets.dart
├── schedule_management
│ ├── bloc
│ │ ├── schedule_exporter_cubit.dart
│ │ └── schedule_exporter_state.dart
│ ├── schedule_management.dart
│ ├── view
│ │ ├── schedule_management_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── add_schedule_json_bottom_sheet_content.dart
│ │ ├── comment_section.dart
│ │ ├── schedule_body.dart
│ │ ├── schedule_card.dart
│ │ ├── schedule_section.dart
│ │ ├── set_comment_bottom_sheet_content.dart
│ │ └── widgets.dart
├── search
│ ├── bloc
│ │ ├── search_bloc.dart
│ │ ├── search_bloc.g.dart
│ │ ├── search_event.dart
│ │ └── search_state.dart
│ ├── search.dart
│ ├── view
│ │ ├── search_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── clear_search_history_button.dart
│ │ ├── mode_select_button.dart
│ │ ├── search_headline_text.dart
│ │ ├── search_history_item.dart
│ │ ├── search_mode_select.dart
│ │ ├── search_result_item.dart
│ │ ├── search_text_field.dart
│ │ └── widgets.dart
├── services
│ ├── config
│ │ └── services_config.dart
│ ├── models
│ │ └── service_model.dart
│ ├── services.dart
│ ├── utils
│ │ └── service_utils.dart
│ ├── view
│ │ ├── services_page.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── community_card.dart
│ │ ├── horizontal_service_card.dart
│ │ ├── section_header.dart
│ │ ├── service_card.dart
│ │ ├── service_icon.dart
│ │ ├── service_tile.dart
│ │ ├── vertical_banner.dart
│ │ ├── wide_service_card.dart
│ │ └── widgets.dart
├── splash_video
│ ├── api_client_adapter.dart
│ ├── bloc
│ │ ├── splash_video_bloc.dart
│ │ ├── splash_video_event.dart
│ │ └── splash_video_state.dart
│ ├── splash_video.dart
│ └── view
│ │ └── splash_video_page.dart
├── sponsors
│ ├── bloc
│ │ ├── sponsors_bloc.dart
│ │ ├── sponsors_event.dart
│ │ └── sponsors_state.dart
│ ├── sponsors.dart
│ ├── view
│ │ ├── sponsors_view.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── skeleton_sponsor_card.dart
│ │ ├── sponsor_card.dart
│ │ └── widgets.dart
├── stories
│ ├── bloc
│ │ ├── stories_bloc.dart
│ │ ├── stories_event.dart
│ │ └── stories_state.dart
│ ├── stories.dart
│ ├── view
│ │ ├── stories_page_view.dart
│ │ ├── stories_view.dart
│ │ └── view.dart
│ └── widgets
│ │ ├── stories_list.dart
│ │ ├── story_item.dart
│ │ └── widgets.dart
└── top_discussions
│ ├── bloc
│ ├── discourse_bloc.dart
│ ├── discourse_event.dart
│ └── discourse_state.dart
│ ├── discourse.dart
│ ├── view
│ ├── top_topics_view.dart
│ └── view.dart
│ └── widgets
│ ├── top_discussion_card.dart
│ ├── topic_card.dart
│ ├── topics_sckeleton_card.dart
│ └── widgets.dart
├── linux
├── .gitignore
├── CMakeLists.txt
├── flutter
│ ├── CMakeLists.txt
│ ├── ephemeral
│ │ └── .plugin_symlinks
│ │ │ ├── connectivity_plus
│ │ │ ├── device_info_plus
│ │ │ ├── dynamic_color
│ │ │ ├── emoji_picker_flutter
│ │ │ ├── file_selector_linux
│ │ │ ├── flutter_keyboard_visibility_linux
│ │ │ ├── flutter_secure_storage_linux
│ │ │ ├── flutter_web_auth_2
│ │ │ ├── flutter_zxing
│ │ │ ├── image_picker_linux
│ │ │ ├── package_info_plus
│ │ │ ├── path_provider_linux
│ │ │ ├── screen_retriever
│ │ │ ├── sentry_flutter
│ │ │ ├── share_plus
│ │ │ ├── shared_preferences_linux
│ │ │ ├── url_launcher_linux
│ │ │ ├── wakelock_plus
│ │ │ ├── window_manager
│ │ │ └── window_to_front
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
├── main.cc
├── my_application.cc
└── my_application.h
├── macos
├── .gitignore
├── Flutter
│ ├── Flutter-Debug.xcconfig
│ ├── Flutter-Release.xcconfig
│ ├── GeneratedPluginRegistrant.swift
│ └── ephemeral
│ │ ├── Flutter-Generated.xcconfig
│ │ └── flutter_export_environment.sh
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── app_icon_1024.png
│ │ │ ├── app_icon_128.png
│ │ │ ├── app_icon_16.png
│ │ │ ├── app_icon_256.png
│ │ │ ├── app_icon_32.png
│ │ │ ├── app_icon_512.png
│ │ │ └── app_icon_64.png
│ ├── Base.lproj
│ │ └── MainMenu.xib
│ ├── Configs
│ │ ├── AppInfo.xcconfig
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── Warnings.xcconfig
│ ├── DebugProfile.entitlements
│ ├── Info.plist
│ ├── MainFlutterWindow.swift
│ └── Release.entitlements
└── RunnerTests
│ └── RunnerTests.swift
├── melos.yaml
├── packages
├── academic_calendar
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── academic_calendar.dart
│ │ └── src
│ │ │ └── academic_calendar.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── academic_calendar_test.dart
├── ads_ui
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── assets
│ │ └── icons
│ │ │ ├── arrow_left_disable.svg
│ │ │ ├── arrow_left_enable.svg
│ │ │ ├── arrow_right_disable.svg
│ │ │ ├── arrow_right_enable.svg
│ │ │ └── play_icon.svg
│ ├── lib
│ │ ├── ads_ui.dart
│ │ └── src
│ │ │ ├── banner_ad.dart
│ │ │ └── widgets
│ │ │ ├── ads_retry_policy.dart
│ │ │ ├── banner_ad_container.dart
│ │ │ ├── banner_ad_content.dart
│ │ │ ├── google_ad_sizes.dart
│ │ │ └── widgets.dart
│ ├── pubspec.yaml
│ └── pubspec_overrides.yaml
├── analytics_repository
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── analytics_repository.dart
│ │ └── src
│ │ │ ├── analytics_repository.dart
│ │ │ └── models
│ │ │ ├── analytics_event.dart
│ │ │ ├── models.dart
│ │ │ └── ntg_event.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── analytics_repository_test.dart
│ │ └── models
│ │ └── analytics_event_test.dart
├── app_ui
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── assets
│ │ ├── fonts
│ │ │ ├── Inter
│ │ │ │ ├── Inter-Black.ttf
│ │ │ │ ├── Inter-Bold.ttf
│ │ │ │ ├── Inter-ExtraBold.ttf
│ │ │ │ ├── Inter-ExtraLight.ttf
│ │ │ │ ├── Inter-Light.ttf
│ │ │ │ ├── Inter-Medium.ttf
│ │ │ │ ├── Inter-Regular.ttf
│ │ │ │ ├── Inter-SemiBold.ttf
│ │ │ │ ├── Inter-Thin.ttf
│ │ │ │ └── OFL.txt
│ │ │ └── Montserrat
│ │ │ │ ├── Montserrat-Black.ttf
│ │ │ │ ├── Montserrat-BlackItalic.ttf
│ │ │ │ ├── Montserrat-Bold.ttf
│ │ │ │ ├── Montserrat-BoldItalic.ttf
│ │ │ │ ├── Montserrat-ExtraBold.ttf
│ │ │ │ ├── Montserrat-ExtraBoldItalic.ttf
│ │ │ │ ├── Montserrat-ExtraLight.ttf
│ │ │ │ ├── Montserrat-ExtraLightItalic.ttf
│ │ │ │ ├── Montserrat-Italic.ttf
│ │ │ │ ├── Montserrat-Light.ttf
│ │ │ │ ├── Montserrat-LightItalic.ttf
│ │ │ │ ├── Montserrat-Medium.ttf
│ │ │ │ ├── Montserrat-MediumItalic.ttf
│ │ │ │ ├── Montserrat-Regular.ttf
│ │ │ │ ├── Montserrat-SemiBold.ttf
│ │ │ │ ├── Montserrat-SemiBoldItalic.ttf
│ │ │ │ ├── Montserrat-Thin.ttf
│ │ │ │ ├── Montserrat-ThinItalic.ttf
│ │ │ │ └── OFL.txt
│ │ ├── icon.png
│ │ ├── icon_background.png
│ │ ├── icon_foreground.png
│ │ ├── icons
│ │ │ ├── add-square.svg
│ │ │ ├── add_group.svg
│ │ │ ├── calendar-03.svg
│ │ │ ├── calendar.svg
│ │ │ ├── filter.svg
│ │ │ ├── gerb.ico
│ │ │ ├── hugeicons
│ │ │ │ ├── add-circle.svg
│ │ │ │ ├── add-square.svg
│ │ │ │ ├── alert-02.svg
│ │ │ │ ├── api.svg
│ │ │ │ ├── bug-01.svg
│ │ │ │ ├── building-06.svg
│ │ │ │ ├── calendar-03.svg
│ │ │ │ ├── calendar-check-out-01.svg
│ │ │ │ ├── cancel-square.svg
│ │ │ │ ├── copy-link.png
│ │ │ │ ├── course.png
│ │ │ │ ├── dashboard-square-01.svg
│ │ │ │ ├── delete-02.svg
│ │ │ │ ├── delete-04.svg
│ │ │ │ ├── favourite.svg
│ │ │ │ ├── filter-horizontal.svg
│ │ │ │ ├── github.svg
│ │ │ │ ├── help-square.svg
│ │ │ │ ├── list-view.svg
│ │ │ │ ├── menu-02.svg
│ │ │ │ ├── more-horizontal-square-02.svg
│ │ │ │ ├── news.svg
│ │ │ │ ├── note-01.svg
│ │ │ │ ├── note-add.svg
│ │ │ │ ├── note-edit.svg
│ │ │ │ ├── notification-02.svg
│ │ │ │ ├── qr-code.svg
│ │ │ │ ├── remove-circle.svg
│ │ │ │ ├── remove-square.svg
│ │ │ │ ├── school.svg
│ │ │ │ ├── search-02.svg
│ │ │ │ ├── search-add.svg
│ │ │ │ ├── search-square.svg
│ │ │ │ ├── search.svg
│ │ │ │ ├── setting-01.svg
│ │ │ │ ├── setting-05.svg
│ │ │ │ ├── share-01.svg
│ │ │ │ ├── square-arrow-left-01-round.svg
│ │ │ │ ├── square-arrow-right-01-round.svg
│ │ │ │ ├── student-card.svg
│ │ │ │ ├── tag-01.svg
│ │ │ │ ├── teaching.svg
│ │ │ │ ├── telegram.svg
│ │ │ │ ├── university.svg
│ │ │ │ ├── user-account.svg
│ │ │ │ ├── user-group.svg
│ │ │ │ └── user-square.svg
│ │ │ ├── image_placeholder.svg
│ │ │ ├── left_arrow.svg
│ │ │ ├── lessons.svg
│ │ │ ├── menu.svg
│ │ │ ├── networking.svg
│ │ │ ├── oval.svg
│ │ │ ├── search.svg
│ │ │ ├── setting-02.svg
│ │ │ ├── social-sharing.svg
│ │ │ └── tag.svg
│ │ ├── images
│ │ │ ├── Saly-1.png
│ │ │ ├── Saly-18.png
│ │ │ ├── Saly-2.png
│ │ │ ├── Saly-25.png
│ │ │ ├── Saly-3.png
│ │ │ ├── Saly-39.png
│ │ │ ├── Saly-4.png
│ │ │ ├── Saly-5.png
│ │ │ └── logo.png
│ │ └── maps
│ │ │ ├── mp-1
│ │ │ ├── -1.svg
│ │ │ ├── 1.svg
│ │ │ ├── 2.svg
│ │ │ ├── 3.svg
│ │ │ ├── 4.svg
│ │ │ └── 5.svg
│ │ │ ├── objects.json
│ │ │ ├── s-20
│ │ │ ├── floor_1.svg
│ │ │ ├── floor_2.svg
│ │ │ ├── floor_3.svg
│ │ │ └── floor_4.svg
│ │ │ └── v-78
│ │ │ ├── floor_0.svg
│ │ │ ├── floor_1.svg
│ │ │ ├── floor_2.svg
│ │ │ ├── floor_3.svg
│ │ │ └── floor_4.svg
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── app_ui.dart
│ │ └── src
│ │ │ ├── app_ui.dart
│ │ │ ├── colors
│ │ │ └── colors.dart
│ │ │ ├── generated
│ │ │ ├── assets.gen.dart
│ │ │ ├── fonts.gen.dart
│ │ │ └── generated.dart
│ │ │ ├── spacing
│ │ │ └── app_spacing.dart
│ │ │ ├── theme
│ │ │ └── theme.dart
│ │ │ ├── typography
│ │ │ └── typography.dart
│ │ │ └── widgets
│ │ │ ├── badged_container.dart
│ │ │ ├── bottom_modal_sheet.dart
│ │ │ ├── buttons
│ │ │ ├── app_settings_button.dart
│ │ │ ├── colorful_button.dart
│ │ │ ├── icon_button.dart
│ │ │ ├── primary_button.dart
│ │ │ ├── primary_tab_button.dart
│ │ │ ├── profile_button.dart
│ │ │ ├── select_date_button.dart
│ │ │ ├── select_range_date_button.dart
│ │ │ └── text_outlined_button.dart
│ │ │ ├── category_tab_bar.dart
│ │ │ ├── container_label.dart
│ │ │ ├── copy_text_block.dart
│ │ │ ├── custom_chip.dart
│ │ │ ├── failure_screen.dart
│ │ │ ├── forms
│ │ │ ├── labelled_input.dart
│ │ │ ├── multi_select_chip.dart
│ │ │ └── text_input.dart
│ │ │ ├── image_placeholder.dart
│ │ │ ├── images_horizontal_slider.dart
│ │ │ ├── images_view_gallery.dart
│ │ │ ├── keyboard_positioned.dart
│ │ │ ├── scaffold_messenger_helper.dart
│ │ │ ├── skeleton.dart
│ │ │ └── widgets.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── app_ui_test.dart
├── auth_client
│ ├── auth_client
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ │ ├── auth_client.dart
│ │ │ └── src
│ │ │ │ ├── auth_client.dart
│ │ │ │ └── models
│ │ │ │ ├── authentication_user.dart
│ │ │ │ └── models.dart
│ │ ├── pubspec.yaml
│ │ └── test
│ │ │ └── src
│ │ │ ├── authentication_client_test.dart
│ │ │ └── models
│ │ │ └── authentication_user_test.dart
│ ├── supabase_authentication_client
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ │ ├── src
│ │ │ │ └── supabase_authentication_client.dart
│ │ │ └── supabase_authentication_client.dart
│ │ └── pubspec.yaml
│ └── token_storage
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ ├── src
│ │ │ └── token_storage.dart
│ │ └── token_storage.dart
│ │ ├── pubspec.yaml
│ │ └── test
│ │ └── src
│ │ └── token_storage_test.dart
├── community_repository
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── community_repository.dart
│ │ └── src
│ │ │ └── community_repository.dart
│ └── pubspec.yaml
├── deep_link_client
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── deep_link_client.dart
│ │ └── src
│ │ │ ├── deep_link_client.dart
│ │ │ └── deep_link_service.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── deep_link_service_test.dart
├── discourse_api_client
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── discourse_api_client.dart
│ │ └── src
│ │ │ ├── discourse_api_client.dart
│ │ │ └── models
│ │ │ ├── models.dart
│ │ │ ├── post.dart
│ │ │ ├── post.g.dart
│ │ │ ├── top.dart
│ │ │ ├── top.g.dart
│ │ │ ├── topic.dart
│ │ │ ├── topic.g.dart
│ │ │ ├── topic_list.dart
│ │ │ ├── topic_list.g.dart
│ │ │ ├── user.dart
│ │ │ └── user.g.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── discourse_api_client_test.dart
├── discourse_repository
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── discourse_repository.dart
│ │ └── src
│ │ │ └── discourse_repository.dart
│ ├── pubspec.yaml
│ └── pubspec_overrides.yaml
├── lost_and_found_repository
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── lost_and_found_repository.dart
│ │ └── src
│ │ │ └── lost_and_found_repository.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── lost_and_found_repository_test.dart
│ │ └── src
│ │ ├── lost_and_found_repository_test.dart
│ │ └── lost_found_failure_test.dart
├── mini_app
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── mini_app.dart
│ │ └── src
│ │ │ ├── event_bus_service.dart
│ │ │ ├── mini_app.dart
│ │ │ ├── mini_app_registry.dart
│ │ │ ├── remote_config_client.dart
│ │ │ ├── remote_config_service.dart
│ │ │ └── remote_registry.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── mini_app_test.dart
├── news_repository
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── news_repository.dart
│ │ └── src
│ │ │ └── news_repository.dart
│ └── pubspec.yaml
├── nfc_pass_client
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── example
│ │ ├── .github
│ │ │ ├── ISSUE_TEMPLATE
│ │ │ │ ├── config.yml
│ │ │ │ ├── bug_report.md
│ │ │ │ └── feature_request.md
│ │ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ │ ├── cspell.json
│ │ │ ├── dependabot.yaml
│ │ │ └── workflows
│ │ │ │ └── example.yaml
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── bin
│ │ │ └── example.dart
│ │ ├── coverage_badge.svg
│ │ ├── dart_test.yaml
│ │ ├── lib
│ │ │ ├── example.dart
│ │ │ └── src
│ │ │ │ ├── command_runner.dart
│ │ │ │ ├── commands
│ │ │ │ ├── commands.dart
│ │ │ │ └── sample_command.dart
│ │ │ │ └── version.dart
│ │ └── pubspec.yaml
│ ├── lib
│ │ ├── nfc_pass_client.dart
│ │ └── src
│ │ │ ├── nfc_pass_client.dart
│ │ │ └── protos
│ │ │ ├── human_pass.pb.dart
│ │ │ ├── human_pass.pbenum.dart
│ │ │ ├── human_pass.pbgrpc.dart
│ │ │ ├── human_pass.pbjson.dart
│ │ │ └── human_pass.proto
│ └── pubspec.yaml
├── nfc_pass_repository
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── nfc_pass_repository.dart
│ │ └── src
│ │ │ └── nfc_pass_repository.dart
│ ├── pubspec.yaml
│ └── pubspec_overrides.yaml
├── notifications_client
│ ├── firebase_notifications_client
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ │ ├── firebase_notifications_client.dart
│ │ │ └── src
│ │ │ │ └── firebase_notifications_client.dart
│ │ ├── pubspec.yaml
│ │ └── test
│ │ │ └── src
│ │ │ └── firebase_notifications_client_test.dart
│ └── notifications_client
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ ├── notifications_client.dart
│ │ └── src
│ │ │ └── notifications_client.dart
│ │ ├── pubspec.yaml
│ │ └── test
│ │ └── src
│ │ └── notifications_client_test.dart
├── notifications_repository
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── notifications_repository.dart
│ │ └── src
│ │ │ ├── notifications_repository.dart
│ │ │ └── notifications_storage.dart
│ ├── pubspec.yaml
│ ├── pubspec_overrides.yaml
│ └── test
│ │ └── src
│ │ ├── notifications_repository_test.dart
│ │ └── notifications_storage_test.dart
├── package_info_client
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── package_info_client.dart
│ │ └── src
│ │ │ └── package_info_client.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── package_info_client_test.dart
├── permission_client
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── permission_client.dart
│ │ └── src
│ │ │ └── permission_client.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── permission_client_test.dart
├── schedule_exporter_repository
│ ├── .github
│ │ ├── ISSUE_TEMPLATE
│ │ │ ├── bug_report.md
│ │ │ ├── build.md
│ │ │ ├── chore.md
│ │ │ ├── ci.md
│ │ │ ├── config.yml
│ │ │ ├── documentation.md
│ │ │ ├── feature_request.md
│ │ │ ├── performance.md
│ │ │ ├── refactor.md
│ │ │ ├── revert.md
│ │ │ ├── style.md
│ │ │ └── test.md
│ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ ├── cspell.json
│ │ ├── dependabot.yaml
│ │ └── workflows
│ │ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── schedule_exporter_repository.dart
│ │ └── src
│ │ │ └── schedule_exporter_repository.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── schedule_exporter_repository_test.dart
├── schedule_repository
│ ├── .gitignore
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── schedule_repository.dart
│ │ └── src
│ │ │ └── schedule_repository.dart
│ └── pubspec.yaml
├── share_launcher
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── lib
│ │ ├── share_launcher.dart
│ │ └── src
│ │ │ └── share_launcher.dart
│ ├── pubspec.yaml
│ └── test
│ │ └── src
│ │ └── share_launcher_test.dart
├── splash_video_repository
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── splash_video_repository.dart
│ │ └── src
│ │ │ ├── api_splash_video_repository.dart
│ │ │ ├── models
│ │ │ ├── models.dart
│ │ │ ├── splash_video.dart
│ │ │ ├── splash_video_storage.dart
│ │ │ └── video_status.dart
│ │ │ ├── shared_preferences_splash_video_storage.dart
│ │ │ ├── splash_video_repository.dart
│ │ │ └── splash_video_storage.dart
│ └── pubspec.yaml
├── storage
│ ├── persistent_storage
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ │ ├── persistent_storage.dart
│ │ │ └── src
│ │ │ │ └── persistent_storage.dart
│ │ ├── pubspec.yaml
│ │ └── test
│ │ │ └── persistent_storage_test.dart
│ ├── secure_storage
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ │ ├── secure_storage.dart
│ │ │ └── src
│ │ │ │ └── secure_storage.dart
│ │ ├── pubspec.yaml
│ │ └── test
│ │ │ └── secure_storage_test.dart
│ └── storage
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── lib
│ │ └── storage.dart
│ │ ├── pubspec.yaml
│ │ └── test
│ │ └── storage_test.dart
├── user_repository
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── lib
│ │ ├── src
│ │ │ ├── models
│ │ │ │ ├── models.dart
│ │ │ │ └── user.dart
│ │ │ ├── user_repository.dart
│ │ │ └── user_storage.dart
│ │ └── user_repository.dart
│ ├── pubspec.yaml
│ ├── pubspec_overrides.yaml
│ └── test
│ │ └── src
│ │ ├── models
│ │ └── user_test.dart
│ │ ├── user_repository_test.dart
│ │ └── user_storage_test.dart
└── web_oauth_interceptor_client
│ ├── .github
│ ├── ISSUE_TEMPLATE
│ │ ├── bug_report.md
│ │ ├── build.md
│ │ ├── chore.md
│ │ ├── ci.md
│ │ ├── config.yml
│ │ ├── documentation.md
│ │ ├── feature_request.md
│ │ ├── performance.md
│ │ ├── refactor.md
│ │ ├── revert.md
│ │ ├── style.md
│ │ └── test.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── cspell.json
│ ├── dependabot.yaml
│ └── workflows
│ │ └── main.yaml
│ ├── .gitignore
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── coverage_badge.svg
│ ├── example
│ ├── .gitignore
│ ├── .metadata
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ │ ├── .gitignore
│ │ ├── app
│ │ │ ├── build.gradle
│ │ │ └── src
│ │ │ │ ├── debug
│ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── main
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── kotlin
│ │ │ │ │ └── com
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── example
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── res
│ │ │ │ │ ├── drawable-v21
│ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── drawable
│ │ │ │ │ └── launch_background.xml
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── values-night
│ │ │ │ │ └── styles.xml
│ │ │ │ │ └── values
│ │ │ │ │ └── styles.xml
│ │ │ │ └── profile
│ │ │ │ └── AndroidManifest.xml
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ ├── gradle
│ │ │ └── wrapper
│ │ │ │ └── gradle-wrapper.properties
│ │ └── settings.gradle
│ ├── ios
│ │ ├── .gitignore
│ │ ├── Flutter
│ │ │ ├── AppFrameworkInfo.plist
│ │ │ ├── Debug.xcconfig
│ │ │ └── Release.xcconfig
│ │ ├── Runner.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ └── xcshareddata
│ │ │ │ └── xcschemes
│ │ │ │ └── Runner.xcscheme
│ │ ├── Runner.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ ├── Runner
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ │ └── LaunchImage.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── LaunchImage.png
│ │ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ │ └── README.md
│ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ ├── Info.plist
│ │ │ └── Runner-Bridging-Header.h
│ │ └── RunnerTests
│ │ │ └── RunnerTests.swift
│ ├── lib
│ │ └── main.dart
│ ├── linux
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── flutter
│ │ │ ├── CMakeLists.txt
│ │ │ ├── generated_plugin_registrant.cc
│ │ │ ├── generated_plugin_registrant.h
│ │ │ └── generated_plugins.cmake
│ │ ├── main.cc
│ │ ├── my_application.cc
│ │ └── my_application.h
│ ├── macos
│ │ ├── .gitignore
│ │ ├── Flutter
│ │ │ ├── Flutter-Debug.xcconfig
│ │ │ ├── Flutter-Release.xcconfig
│ │ │ └── GeneratedPluginRegistrant.swift
│ │ ├── Runner.xcodeproj
│ │ │ ├── project.pbxproj
│ │ │ ├── project.xcworkspace
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── xcshareddata
│ │ │ │ └── xcschemes
│ │ │ │ └── Runner.xcscheme
│ │ ├── Runner.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ ├── Runner
│ │ │ ├── AppDelegate.swift
│ │ │ ├── Assets.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── app_icon_1024.png
│ │ │ │ │ ├── app_icon_128.png
│ │ │ │ │ ├── app_icon_16.png
│ │ │ │ │ ├── app_icon_256.png
│ │ │ │ │ ├── app_icon_32.png
│ │ │ │ │ ├── app_icon_512.png
│ │ │ │ │ └── app_icon_64.png
│ │ │ ├── Base.lproj
│ │ │ │ └── MainMenu.xib
│ │ │ ├── Configs
│ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ ├── Debug.xcconfig
│ │ │ │ ├── Release.xcconfig
│ │ │ │ └── Warnings.xcconfig
│ │ │ ├── DebugProfile.entitlements
│ │ │ ├── Info.plist
│ │ │ ├── MainFlutterWindow.swift
│ │ │ └── Release.entitlements
│ │ └── RunnerTests
│ │ │ └── RunnerTests.swift
│ ├── pubspec.yaml
│ ├── test
│ │ └── widget_test.dart
│ ├── web
│ │ ├── favicon.png
│ │ ├── icons
│ │ │ ├── Icon-192.png
│ │ │ ├── Icon-512.png
│ │ │ ├── Icon-maskable-192.png
│ │ │ └── Icon-maskable-512.png
│ │ ├── index.html
│ │ └── manifest.json
│ └── windows
│ │ ├── .gitignore
│ │ ├── CMakeLists.txt
│ │ ├── flutter
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ │ └── runner
│ │ ├── CMakeLists.txt
│ │ ├── Runner.rc
│ │ ├── flutter_window.cpp
│ │ ├── flutter_window.h
│ │ ├── main.cpp
│ │ ├── resource.h
│ │ ├── resources
│ │ └── app_icon.ico
│ │ ├── runner.exe.manifest
│ │ ├── utils.cpp
│ │ ├── utils.h
│ │ ├── win32_window.cpp
│ │ └── win32_window.h
│ ├── lib
│ ├── src
│ │ ├── web_automation_framework.dart
│ │ └── web_oauth_interceptor_client.dart
│ └── web_oauth_interceptor_client.dart
│ └── pubspec.yaml
├── pubspec.lock
├── pubspec.yaml
├── pubspec_overrides.yaml
├── renovate.json
├── shorebird.yaml
├── test
├── mirea_test.dart
├── utils
│ └── calendar_test.dart
└── widget_test.dart
├── wear
├── .github
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── cspell.json
│ ├── dependabot.yaml
│ └── workflows
│ │ └── main.yaml
├── .gitignore
├── .metadata
├── .vscode
│ ├── extensions.json
│ └── launch.json
├── README.md
├── analysis_options.yaml
├── android
│ ├── .gitignore
│ ├── app
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── development
│ │ │ ├── ic_launcher-playstore.png
│ │ │ └── res
│ │ │ │ ├── drawable
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ └── values
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── ic_launcher-playstore.png
│ │ │ ├── kotlin
│ │ │ │ ├── com
│ │ │ │ │ └── example
│ │ │ │ │ │ └── verygoodcore
│ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ └── ninja
│ │ │ │ │ └── mirea
│ │ │ │ │ └── mireaapp
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-v21
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable
│ │ │ │ ├── ic_launch_image.xml
│ │ │ │ ├── ic_launcher_foreground.xml
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ └── styles.xml
│ │ │ ├── profile
│ │ │ └── AndroidManifest.xml
│ │ │ └── staging
│ │ │ ├── ic_launcher-playstore.png
│ │ │ └── res
│ │ │ ├── drawable
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ │ └── values
│ │ │ └── ic_launcher_background.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle
├── coverage_badge.svg
├── l10n.yaml
├── lib
│ ├── ambient_mode
│ │ ├── ambient_mode.dart
│ │ └── view
│ │ │ ├── ambient_mode_builder.dart
│ │ │ └── ambient_mode_listener.dart
│ ├── app
│ │ ├── app.dart
│ │ └── view
│ │ │ └── app.dart
│ ├── bootstrap.dart
│ ├── counter
│ │ ├── counter.dart
│ │ ├── cubit
│ │ │ └── counter_cubit.dart
│ │ └── view
│ │ │ └── counter_page.dart
│ ├── l10n
│ │ ├── arb
│ │ │ ├── app_en.arb
│ │ │ └── app_es.arb
│ │ └── l10n.dart
│ ├── main_development.dart
│ ├── main_production.dart
│ ├── main_staging.dart
│ └── nfc_pass
│ │ ├── cubit
│ │ └── counter_cubit.dart
│ │ ├── nfc_pass.dart
│ │ └── view
│ │ └── nfc_pass.dart
├── pubspec.yaml
└── test
│ ├── ambient_mode
│ └── view
│ │ ├── ambient_mode_builder_test.dart
│ │ └── ambient_mode_listener_test.dart
│ ├── app
│ └── view
│ │ └── app_test.dart
│ ├── counter
│ ├── cubit
│ │ └── counter_cubit_test.dart
│ └── view
│ │ └── counter_page_test.dart
│ └── helpers
│ ├── helpers.dart
│ ├── pump_app.dart
│ └── simulate_platform_call.dart
├── web
├── favicon.png
├── icons
│ ├── Icon-192.png
│ └── Icon-512.png
├── index.html
└── manifest.json
└── windows
├── .gitignore
├── CMakeLists.txt
├── flutter
├── CMakeLists.txt
├── generated_plugin_registrant.cc
├── generated_plugin_registrant.h
└── generated_plugins.cmake
└── runner
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── resources
└── app_icon.ico
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
/.env.example:
--------------------------------------------------------------------------------
1 | MAPKIT_API_KEY=key
2 | STORYLY_ID=storylyId
3 | SENTRY_DSN=https://sentry.io/...
4 |
--------------------------------------------------------------------------------
/.fvm/.gitignore:
--------------------------------------------------------------------------------
1 | /flutter_sdk
--------------------------------------------------------------------------------
/.fvm/fvm_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "flutterSdkVersion": "3.27.4"
3 | }
--------------------------------------------------------------------------------
/.fvm/release:
--------------------------------------------------------------------------------
1 | 3.27.4
--------------------------------------------------------------------------------
/.fvmrc:
--------------------------------------------------------------------------------
1 | {
2 | "flutter": "3.27.4"
3 | }
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "packages/neon"]
2 | path = packages/neon
3 | url = https://github.com/0niel/neon.git
4 | branch = main
5 |
--------------------------------------------------------------------------------
/.idea/runConfigurations/main_dart.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
15 | **/.idea/*
16 |
--------------------------------------------------------------------------------
/android/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/android/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/.idea/kotlinc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | -dontwarn org.xmlpull.v1.**
2 | -dontwarn org.kxml2.io.**
3 | -dontwarn android.content.res.**
4 | -dontwarn org.slf4j.impl.StaticLoggerBinder
5 |
6 | -keep class org.xmlpull.** { *; }
7 | -keepclassmembers class org.xmlpull.** { *; }
8 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/ninja/mirea/mireaapp/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package ninja.mirea.mireaapp
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/ninja/mirea/mireaapp/glance/ScheduleWidgetReceiver.kt:
--------------------------------------------------------------------------------
1 | package ninja.mirea.mireaapp.glance
2 |
3 | import HomeWidgetGlanceWidgetReceiver
4 |
5 | class ScheduleWidgetReceiver : HomeWidgetGlanceWidgetReceiver() {
6 | override val glanceAppWidget = ScheduleGlanceAppWidget()
7 | }
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_stat_ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-hdpi/ic_stat_ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_stat_ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-mdpi/ic_stat_ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_stat_ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xhdpi/ic_stat_ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_stat_ic_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xxhdpi/ic_stat_ic_notification.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/label_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/label_bg_01.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/label_bg_black.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/label_bg_title.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/lesson_item_background_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/lesson_type_indicator.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/lesson_type_pill.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/drawable/logo.jpg
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/more_lesson_indicator.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/week_badge.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/week_number_badge.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/widget_background_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/widget_header_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx12800M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 | kotlin.jvm.target.validation.mode=IGNORE
5 | android.defaults.buildfeatures.buildconfig=true
6 | android.nonTransitiveRClass=false
7 | android.nonFinalResIds=false
8 | android.overridePathCheck=true
9 | org.gradle.parallel=true
10 | org.gradle.daemon=true
11 | org.gradle.configureondemand=true
12 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
3 | distributionPath=wrapper/dists
4 | zipStorePath=wrapper/dists
5 | zipStoreBase=GRADLE_USER_HOME
6 |
--------------------------------------------------------------------------------
/api/.env.example:
--------------------------------------------------------------------------------
1 | EMAIL=contact@mirea.ninja
2 | API_HOST=app-api.mirea.ninja
3 | REDIS_PORT=6379
4 | REDIS_HOST=redis
--------------------------------------------------------------------------------
/api/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 |
--------------------------------------------------------------------------------
/api/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/api/README.md
--------------------------------------------------------------------------------
/api/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.5.1.0.yaml
2 | analyzer:
3 | exclude:
4 | - build/**
5 | linter:
6 | rules:
7 | file_names: false
8 | lines_longer_than_80_chars: false
9 |
--------------------------------------------------------------------------------
/api/lib/src/data/community/models/models.dart:
--------------------------------------------------------------------------------
1 | export 'package:github/src/models/contributor.dart' show Contributor;
2 |
3 | export 'sponsor.dart';
4 |
--------------------------------------------------------------------------------
/api/lib/src/data/community/static_sponsors_data.dart:
--------------------------------------------------------------------------------
1 | part of 'community_github_data_source_with_static_data.dart';
2 |
3 | /// Static list of [Sponsor]s.
4 | const List sponsors = [];
5 |
--------------------------------------------------------------------------------
/api/lib/src/data/lost_and_found/models/models.dart:
--------------------------------------------------------------------------------
1 | export 'lost_and_found_item.dart';
2 |
--------------------------------------------------------------------------------
/api/lib/src/data/news/models/models.dart:
--------------------------------------------------------------------------------
1 | export 'article.dart' show Article;
2 |
--------------------------------------------------------------------------------
/api/lib/src/data/news/rtu_mirea_news_data_source/models/models.dart:
--------------------------------------------------------------------------------
1 | export 'rtu_mirea_news_item.dart' show RtuMireaNewsItem;
2 |
--------------------------------------------------------------------------------
/api/packages/github/README.md:
--------------------------------------------------------------------------------
1 | # notifications_client
2 |
3 | [![style: very good analysis][very_good_analysis_badge]][very_good_analysis_link]
4 | [![License: MIT][license_badge]][license_link]
5 |
6 | A Generic Notifications Client Interface.
7 |
--------------------------------------------------------------------------------
/api/packages/github/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.yaml
--------------------------------------------------------------------------------
/api/packages/github/lib/github.dart:
--------------------------------------------------------------------------------
1 | export 'src/github.dart';
2 | export 'src/models/contributor.dart';
3 |
--------------------------------------------------------------------------------
/api/packages/news_blocks/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://www.dartlang.org/guides/libraries/private-files
2 |
3 | # Files and directories created by pub
4 | .dart_tool/
5 | .packages
6 | build/
7 | pubspec.lock
--------------------------------------------------------------------------------
/api/packages/news_blocks/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.6.0.0.yaml
2 | analyzer:
3 | exclude:
4 | - lib/**/*.g.dart
5 |
--------------------------------------------------------------------------------
/api/packages/news_blocks/pubspec_overrides.yaml:
--------------------------------------------------------------------------------
1 | # melos_managed_dependency_overrides: frontend_server_client
2 | dependency_overrides:
3 | frontend_server_client: ^4.0.0
4 |
--------------------------------------------------------------------------------
/api/packages/news_blocks/test/src/newsletter_block_test.dart:
--------------------------------------------------------------------------------
1 | import 'package:news_blocks/news_blocks.dart';
2 | import 'package:test/test.dart';
3 |
4 | void main() {
5 | group('NewsletterBlock', () {
6 | test('can be (de)serialized', () {
7 | const block = NewsletterBlock();
8 |
9 | expect(NewsletterBlock.fromJson(block.toJson()), equals(block));
10 | });
11 | });
12 | }
13 |
--------------------------------------------------------------------------------
/api/packages/rtu_mirea_schedule_api_client/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://www.dartlang.org/guides/libraries/private-files
2 |
3 | # Files and directories created by pub
4 | .dart_tool/
5 | .packages
6 | build/
7 | pubspec.lock
--------------------------------------------------------------------------------
/api/packages/rtu_mirea_schedule_api_client/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.5.1.0.yaml
2 |
--------------------------------------------------------------------------------
/api/packages/rtu_mirea_schedule_api_client/lib/src/models/models.dart:
--------------------------------------------------------------------------------
1 | export 'search_data.dart' show SearchData;
2 | export 'search_item.dart' show SearchItem;
3 |
--------------------------------------------------------------------------------
/api/packages/rtu_mirea_schedule_api_client/pubspec_overrides.yaml:
--------------------------------------------------------------------------------
1 | # melos_managed_dependency_overrides: schedule
2 | dependency_overrides:
3 | schedule:
4 | path: ..\\schedule
5 |
--------------------------------------------------------------------------------
/api/packages/schedule/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://www.dartlang.org/guides/libraries/private-files
2 |
3 | # Files and directories created by pub
4 | .dart_tool/
5 | .packages
6 | build/
7 | pubspec.lock
--------------------------------------------------------------------------------
/api/packages/schedule/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.5.1.0.yaml
2 |
--------------------------------------------------------------------------------
/api/packages/schedule/lib/src/lessons_schedule/lessons_schedule.dart:
--------------------------------------------------------------------------------
1 | export 'campus.dart' show Campus;
2 | export 'classroom.dart' show Classroom;
3 | export 'group.dart' show Group;
4 | export 'lesson_bells.dart' show LessonBells;
5 | export 'lesson_schedule_part.dart' show LessonSchedulePart;
6 | export 'lesson_type.dart' show LessonType;
7 | export 'schedule_target.dart' show ScheduleTarget;
8 | export 'teacher.dart' show Teacher;
9 |
--------------------------------------------------------------------------------
/api/packages/schedule/lib/src/lessons_schedule/schedule_target.dart:
--------------------------------------------------------------------------------
1 | enum ScheduleTarget {
2 | group,
3 | teacher,
4 | classroom,
5 | }
6 |
--------------------------------------------------------------------------------
/api/routes/index.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:dart_frog/dart_frog.dart';
4 |
5 | Response onRequest(RequestContext context) {
6 | return Response(statusCode: HttpStatus.noContent);
7 | }
8 |
--------------------------------------------------------------------------------
/devtools_options.yaml:
--------------------------------------------------------------------------------
1 | extensions:
2 | - provider: true
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/HomeWidget/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ios/HomeWidget/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/HomeWidget/Assets.xcassets/WidgetBackground.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ios/HomeWidgetExtension.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.application-groups
6 |
7 | group.mirea.ninja.mireaapp
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0niel/university-app/447e77aa98ae4be85fcd75dad61775c9bdb92950/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.application-groups
6 |
7 | group.mirea.ninja.mireaapp
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/lib/ads/ads.dart:
--------------------------------------------------------------------------------
1 | export 'bloc/full_screen_ads_bloc.dart';
2 | export 'widgets/widgets.dart';
3 | export 'bloc/ads_bloc.dart';
4 |
--------------------------------------------------------------------------------
/lib/ads/widgets/widgets.dart:
--------------------------------------------------------------------------------
1 | export 'sticky_ad.dart';
2 | export 'measured_sticky_ad.dart';
3 |
--------------------------------------------------------------------------------
/lib/analytics/analytics.dart:
--------------------------------------------------------------------------------
1 | export 'bloc/analytics_bloc.dart';
2 |
3 | export 'package:analytics_repository/analytics_repository.dart' show ViewNews, ViewStory;
4 |
--------------------------------------------------------------------------------
/lib/analytics/bloc/analytics_event.dart:
--------------------------------------------------------------------------------
1 | part of 'analytics_bloc.dart';
2 |
3 | abstract class AnalyticsEvent extends Equatable {
4 | const AnalyticsEvent();
5 | }
6 |
7 | class TrackAnalyticsEvent extends AnalyticsEvent {
8 | const TrackAnalyticsEvent(this.event);
9 |
10 | final analytics.AnalyticsEvent event;
11 |
12 | @override
13 | List