├── .ruby-version
├── untranslated-localization.txt
├── ios
├── untranslated-localization.txt
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── AppIcon-dev.appiconset
│ │ │ ├── 5.png
│ │ │ └── Contents.json
│ │ ├── AppIcon-prod.appiconset
│ │ │ ├── 4.png
│ │ │ └── Contents.json
│ │ ├── LaunchImage.imageset
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ │ └── LaunchBackground.imageset
│ │ │ ├── background.png
│ │ │ ├── darkbackground.png
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── Runner.entitlements
│ ├── Base.lproj
│ │ └── Main.storyboard
│ └── Info.plist
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── fastlane
│ ├── Appfile
│ ├── Pluginfile
│ ├── report.xml
│ ├── README.md
│ └── Fastfile
├── Runner.xcodeproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── Gemfile
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── RunnerTests
│ └── RunnerTests.swift
├── .gitignore
└── Podfile
├── linux
├── .gitignore
├── main.cc
├── flutter
│ ├── generated_plugin_registrant.h
│ ├── generated_plugin_registrant.cc
│ └── generated_plugins.cmake
└── my_application.h
├── README.md
├── web
├── favicon.png
├── dev
│ ├── Icon-192.png
│ ├── Icon-512.png
│ ├── favicon.png
│ └── manifest.json
├── prod
│ ├── favicon.png
│ ├── Icon-192.png
│ ├── Icon-512.png
│ └── manifest.json
├── icons
│ ├── Icon-192.png
│ └── Icon-512.png
├── splash
│ └── img
│ │ ├── dark-1x.png
│ │ ├── dark-2x.png
│ │ ├── dark-3x.png
│ │ ├── dark-4x.png
│ │ ├── light-1x.png
│ │ ├── light-2x.png
│ │ ├── light-3x.png
│ │ └── light-4x.png
├── .well-known
│ ├── apple-app-site-association
│ └── assetlinks.json
└── manifest.json
├── .fvm
└── fvm_config.json
├── assets
├── images
│ └── splash.png
└── fonts
│ ├── more-sugar-medium.ttf
│ └── more-sugar-regular.ttf
├── .vscode
├── settings.json
└── launch.json
├── macos
├── Runner
│ ├── Configs
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ ├── Warnings.xcconfig
│ │ └── AppInfo.xcconfig
│ ├── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── AppIcon-dev.appiconset
│ │ │ ├── 16-mac.png
│ │ │ ├── 32-mac.png
│ │ │ ├── 64-mac.png
│ │ │ ├── 1024-mac.png
│ │ │ ├── 128-mac.png
│ │ │ ├── 256-mac.png
│ │ │ ├── 512-mac.png
│ │ │ └── Contents.json
│ │ └── AppIcon-prod.appiconset
│ │ │ ├── 1024-mac.png
│ │ │ ├── 128-mac.png
│ │ │ ├── 16-mac.png
│ │ │ ├── 256-mac.png
│ │ │ ├── 32-mac.png
│ │ │ ├── 512-mac.png
│ │ │ ├── 64-mac.png
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── MainFlutterWindow.swift
│ ├── Release.entitlements
│ ├── DebugProfile.entitlements
│ └── Info.plist
├── .gitignore
├── Flutter
│ ├── Flutter-Debug.xcconfig
│ ├── Flutter-Release.xcconfig
│ └── GeneratedPluginRegistrant.swift
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Runner.xcodeproj
│ └── project.xcworkspace
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── RunnerTests
│ └── RunnerTests.swift
└── Podfile
├── windows
├── runner
│ ├── resources
│ │ └── app_icon.ico
│ ├── resource.h
│ ├── utils.h
│ ├── runner.exe.manifest
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── CMakeLists.txt
│ ├── utils.cpp
│ └── flutter_window.cpp
├── .gitignore
└── flutter
│ ├── generated_plugin_registrant.h
│ ├── generated_plugins.cmake
│ └── generated_plugin_registrant.cc
├── android
├── app
│ └── src
│ │ ├── dev
│ │ ├── ic_launcher-playstore.png
│ │ └── res
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ └── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── prod
│ │ ├── ic_launcher-playstore.png
│ │ └── res
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ ├── ic_launcher_round.webp
│ │ │ └── ic_launcher_foreground.webp
│ │ │ └── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ └── main
│ │ ├── res
│ │ ├── drawable-hdpi
│ │ │ ├── splash.png
│ │ │ └── android12splash.png
│ │ ├── drawable-mdpi
│ │ │ ├── splash.png
│ │ │ └── android12splash.png
│ │ ├── drawable-xhdpi
│ │ │ ├── splash.png
│ │ │ └── android12splash.png
│ │ ├── drawable
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ ├── drawable-xxhdpi
│ │ │ ├── splash.png
│ │ │ └── android12splash.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── splash.png
│ │ │ └── android12splash.png
│ │ ├── drawable-night
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ ├── drawable-night-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ ├── drawable-night-hdpi
│ │ │ └── android12splash.png
│ │ ├── drawable-night-mdpi
│ │ │ └── android12splash.png
│ │ ├── drawable-night-xhdpi
│ │ │ └── android12splash.png
│ │ ├── drawable-night-xxhdpi
│ │ │ └── android12splash.png
│ │ ├── drawable-night-xxxhdpi
│ │ │ └── android12splash.png
│ │ ├── values-v31
│ │ │ └── styles.xml
│ │ ├── values-night-v31
│ │ │ └── styles.xml
│ │ ├── values
│ │ │ └── styles.xml
│ │ └── values-night
│ │ │ └── styles.xml
│ │ └── kotlin
│ │ └── com
│ │ └── skribla
│ │ └── MainActivity.kt
├── fastlane
│ ├── Appfile
│ ├── Pluginfile
│ ├── report.xml
│ ├── README.md
│ └── Fastfile
├── Gemfile
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── gradle.properties
├── .gitignore
├── build.gradle
└── settings.gradle
├── lib
├── env
│ ├── sample_creds.json
│ └── env.dart
├── src
│ ├── core
│ │ ├── resource
│ │ │ ├── app_keys.dart
│ │ │ ├── firebase_paths.dart
│ │ │ └── app_icons.dart
│ │ ├── router
│ │ │ └── routes.dart
│ │ ├── util
│ │ │ ├── types.dart
│ │ │ ├── constants.dart
│ │ │ ├── device_info.dart
│ │ │ ├── result.dart
│ │ │ ├── generated
│ │ │ │ ├── device_info.g.dart
│ │ │ │ └── feature_flags.g.dart
│ │ │ ├── enums.dart
│ │ │ ├── converters.dart
│ │ │ └── feature_flags.dart
│ │ ├── platform
│ │ │ ├── web.dart
│ │ │ └── others.dart
│ │ ├── widgets
│ │ │ ├── gradient_text.dart
│ │ │ ├── shimmer_widget.dart
│ │ │ ├── default_app_bar.dart
│ │ │ ├── progress_bar.dart
│ │ │ └── error_widget.dart
│ │ ├── observers
│ │ │ └── provider_watch.dart
│ │ ├── screens
│ │ │ ├── unavailable_screen.dart
│ │ │ ├── update_screen.dart
│ │ │ └── suspended_screen.dart
│ │ ├── theme
│ │ │ ├── app_theme.dart
│ │ │ └── colors.dart
│ │ └── service
│ │ │ ├── logger.dart
│ │ │ ├── haptics.dart
│ │ │ └── analytics.dart
│ └── app
│ │ ├── settings
│ │ ├── data
│ │ │ └── repository
│ │ │ │ └── settings_repository.dart
│ │ └── presentation
│ │ │ ├── provider
│ │ │ ├── settings_state.dart
│ │ │ ├── loc_provider.dart
│ │ │ └── settings_provider.dart
│ │ │ └── widgets
│ │ │ └── custom_list_tile.dart
│ │ ├── home
│ │ └── presentation
│ │ │ ├── provider
│ │ │ └── home_state.dart
│ │ │ └── widgets
│ │ │ ├── start_action.dart
│ │ │ └── logo_text.dart
│ │ ├── history
│ │ ├── presentation
│ │ │ ├── provider
│ │ │ │ └── history_state.dart
│ │ │ └── widgets
│ │ │ │ ├── light_painter.dart
│ │ │ │ ├── exhibit_footer.dart
│ │ │ │ └── shared_widget.dart
│ │ └── data
│ │ │ └── models
│ │ │ ├── exhibit_model.dart
│ │ │ └── generated
│ │ │ └── exhibit_model.g.dart
│ │ ├── auth
│ │ ├── presentation
│ │ │ └── provider
│ │ │ │ └── auth_state.dart
│ │ └── data
│ │ │ └── models
│ │ │ ├── generated
│ │ │ └── user_model.g.dart
│ │ │ └── user_model.dart
│ │ ├── game
│ │ ├── presentation
│ │ │ ├── provider
│ │ │ │ ├── game_state.dart
│ │ │ │ └── timer_state.dart
│ │ │ └── widgets
│ │ │ │ ├── star_confetti.dart
│ │ │ │ ├── report_reason_sheet.dart
│ │ │ │ └── art_painter.dart
│ │ └── data
│ │ │ └── models
│ │ │ ├── report_model.dart
│ │ │ ├── line_model.dart
│ │ │ ├── generated
│ │ │ ├── report_model.g.dart
│ │ │ ├── line_model.g.dart
│ │ │ ├── word_model.g.dart
│ │ │ ├── player_model.g.dart
│ │ │ ├── message_model.g.dart
│ │ │ └── game_model.g.dart
│ │ │ ├── word_model.dart
│ │ │ ├── player_model.dart
│ │ │ └── message_model.dart
│ │ ├── leaderboard
│ │ ├── data
│ │ │ └── models
│ │ │ │ ├── leaderboard_model.dart
│ │ │ │ └── generated
│ │ │ │ └── leaderboard_model.g.dart
│ │ └── presentation
│ │ │ ├── provider
│ │ │ └── leaderboard_state.dart
│ │ │ └── widgets
│ │ │ └── leaderboard_item.dart
│ │ └── main_app.dart
├── main_dev.dart
└── main_prod.dart
├── .firebaserc
├── l10n.yaml
├── release_notes.txt
├── flutter_native_splash.yaml
├── analysis_options.yaml
├── release_notes.sh
├── web_flavor_setup.sh
├── shorebird.yaml
├── bin
└── scripts
│ └── check_duplicates.dart
├── test
└── widget_test.dart
├── .gitignore
├── .metadata
├── pubspec.yaml
└── Makefile
/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.3.4
2 |
--------------------------------------------------------------------------------
/untranslated-localization.txt:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/ios/untranslated-localization.txt:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/linux/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # skribla
2 |
3 | A new Flutter project.
4 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/favicon.png
--------------------------------------------------------------------------------
/.fvm/fvm_config.json:
--------------------------------------------------------------------------------
1 | {
2 | "flutterSdkVersion": "3.24.3",
3 | "flavors": {}
4 | }
--------------------------------------------------------------------------------
/web/dev/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/dev/Icon-192.png
--------------------------------------------------------------------------------
/web/dev/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/dev/Icon-512.png
--------------------------------------------------------------------------------
/web/dev/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/dev/favicon.png
--------------------------------------------------------------------------------
/web/prod/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/prod/favicon.png
--------------------------------------------------------------------------------
/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/web/prod/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/prod/Icon-192.png
--------------------------------------------------------------------------------
/web/prod/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/prod/Icon-512.png
--------------------------------------------------------------------------------
/assets/images/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/assets/images/splash.png
--------------------------------------------------------------------------------
/web/splash/img/dark-1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/dark-1x.png
--------------------------------------------------------------------------------
/web/splash/img/dark-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/dark-2x.png
--------------------------------------------------------------------------------
/web/splash/img/dark-3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/dark-3x.png
--------------------------------------------------------------------------------
/web/splash/img/dark-4x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/dark-4x.png
--------------------------------------------------------------------------------
/web/splash/img/light-1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/light-1x.png
--------------------------------------------------------------------------------
/web/splash/img/light-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/light-2x.png
--------------------------------------------------------------------------------
/web/splash/img/light-3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/light-3x.png
--------------------------------------------------------------------------------
/web/splash/img/light-4x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/web/splash/img/light-4x.png
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "dart.lineLength": 100,
3 | "dart.flutterSdkPath": ".fvm/flutter_sdk"
4 | }
--------------------------------------------------------------------------------
/assets/fonts/more-sugar-medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/assets/fonts/more-sugar-medium.ttf
--------------------------------------------------------------------------------
/assets/fonts/more-sugar-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/assets/fonts/more-sugar-regular.ttf
--------------------------------------------------------------------------------
/macos/Runner/Configs/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Debug.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Release.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/windows/runner/resources/app_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/windows/runner/resources/app_icon.ico
--------------------------------------------------------------------------------
/macos/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter-related
2 | **/Flutter/ephemeral/
3 | **/Pods/
4 |
5 | # Xcode-related
6 | **/dgph
7 | **/xcuserdata/
8 |
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/dev/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/lib/env/sample_creds.json:
--------------------------------------------------------------------------------
1 | {
2 | "BASE_URL": "",
3 | "LUKE_HOG_ID": "",
4 | "GID_CLIENT_ID_WEB": "",
5 | "SENTRY_DNS": ""
6 | }
--------------------------------------------------------------------------------
/android/app/src/prod/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | json_key_file("/Users/ifeanyionuoha/skribla/skribla-prod-play-store.json")
2 | package_name("com.skribla.android.prod")
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable/background.png
--------------------------------------------------------------------------------
/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "default": "skribla-prod",
4 | "skribla-dev": "skribla-dev"
5 | },
6 | "targets": {},
7 | "etags": {}
8 | }
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-night/background.png
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/5.png
--------------------------------------------------------------------------------
/ios/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | app_identifier("com.skribla.ios.prod")
2 | apple_id("onuifeanyi95@gmail.com")
3 |
4 | itc_team_id("125431871")
5 | team_id("YYA8WP4LNJ")
6 |
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/4.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-hdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-mdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-night-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-xhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-xxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/macos/Flutter/Flutter-Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/macos/Flutter/Flutter-Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-xxxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/16-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/16-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/32-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/32-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/64-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/64-mac.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-hdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-hdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-mdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-mdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-hdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-night-hdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-mdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-night-mdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-night-xhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-hdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-hdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-mdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-mdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/1024-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/128-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/128-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/256-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/256-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/512-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/512-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/1024-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/1024-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/128-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/128-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/16-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/16-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/256-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/256-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/32-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/32-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/512-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/512-mac.png
--------------------------------------------------------------------------------
/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/64-mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/macos/Runner/Assets.xcassets/AppIcon-prod.appiconset/64-mac.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xxhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xxhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher_foreground.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/android/app/src/prod/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/o-ifeanyi/skribla/HEAD/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/skribla/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.skribla.android.prod
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity()
6 |
--------------------------------------------------------------------------------
/l10n.yaml:
--------------------------------------------------------------------------------
1 | arb-dir: lib/l10n
2 | template-arb-file: app_en.arb
3 | output-localization-file: app_localizations.dart
4 | nullable-getter: false
5 | untranslated-messages-file: untranslated-localization.txt
--------------------------------------------------------------------------------
/android/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem "fastlane"
4 |
5 | plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
6 | eval_gemfile(plugins_path) if File.exist?(plugins_path)
7 |
--------------------------------------------------------------------------------
/linux/main.cc:
--------------------------------------------------------------------------------
1 | #include "my_application.h"
2 |
3 | int main(int argc, char** argv) {
4 | g_autoptr(MyApplication) app = my_application_new();
5 | return g_application_run(G_APPLICATION(app), argc, argv);
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem "fastlane"
4 | gem "cocoapods", '1.15.2'
5 |
6 | plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
7 | eval_gemfile(plugins_path) if File.exist?(plugins_path)
8 |
--------------------------------------------------------------------------------
/ios/fastlane/Pluginfile:
--------------------------------------------------------------------------------
1 | # Autogenerated by fastlane
2 | #
3 | # Ensure this file is checked in to source control!
4 |
5 | gem 'fastlane-plugin-firebase_app_distribution'
6 | gem 'fastlane-plugin-shorebird'
7 | gem 'fastlane-plugin-flutter_version'
8 |
--------------------------------------------------------------------------------
/lib/src/core/resource/app_keys.dart:
--------------------------------------------------------------------------------
1 | abstract class AppKeys {
2 | static const String theme = 'theme';
3 | static const String haptics = 'haptics';
4 | static const String version = 'version';
5 | static const String flags = 'feature_flags';
6 | }
7 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip
6 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 | android.defaults.buildfeatures.buildconfig=true
5 | android.nonTransitiveRClass=false
6 | android.nonFinalResIds=false
7 |
--------------------------------------------------------------------------------
/release_notes.txt:
--------------------------------------------------------------------------------
1 | ## What's Changed
2 | * refactor theme setup + minor fixes by o-ifeanyi
3 | * deploy new build by o-ifeanyi
4 | * add confetti for correct guess by o-ifeanyi
5 |
6 | **Full Changelog**: https://github.com/o-ifeanyi/skribla/compare/0.2.2+13...0.2.4+15
7 |
--------------------------------------------------------------------------------
/macos/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | @main
5 | class AppDelegate: FlutterAppDelegate {
6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
7 | return true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/flutter_native_splash.yaml:
--------------------------------------------------------------------------------
1 | flutter_native_splash:
2 | color: "#f9f9fc"
3 | image: assets/images/splash.png
4 | color_dark: "#19181b"
5 | android_12:
6 | color: "#f9f9fc"
7 | image: assets/images/splash.png
8 | color_dark: "#19181b"
9 | fullscreen: true
10 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:very_good_analysis/analysis_options.5.1.0.yaml
2 |
3 | analyzer:
4 | exclude:
5 | - '**.freezed.dart'
6 | - '**.g.dart'
7 |
8 | linter:
9 | rules:
10 | public_member_api_docs: false
11 | lines_longer_than_80_chars: false
12 |
--------------------------------------------------------------------------------
/android/fastlane/Pluginfile:
--------------------------------------------------------------------------------
1 | # Autogenerated by fastlane
2 | #
3 | # Ensure this file is checked in to source control!
4 |
5 | gem 'fastlane-plugin-flutter_version'
6 | gem 'fastlane-plugin-versioning_android'
7 | gem 'fastlane-plugin-shorebird'
8 | gem 'fastlane-plugin-firebase_app_distribution'
9 |
--------------------------------------------------------------------------------
/lib/src/app/settings/data/repository/settings_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:cloud_firestore/cloud_firestore.dart';
2 |
3 | final class SettingsRepository {
4 | const SettingsRepository({
5 | required this.firebaseFirestore,
6 | });
7 | final FirebaseFirestore firebaseFirestore;
8 | }
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/macos/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 |
--------------------------------------------------------------------------------
/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "5.png",
5 | "idiom" : "universal",
6 | "platform" : "ios",
7 | "size" : "1024x1024"
8 | }
9 | ],
10 | "info" : {
11 | "author" : "xcode",
12 | "version" : 1
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-prod.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "4.png",
5 | "idiom" : "universal",
6 | "platform" : "ios",
7 | "size" : "1024x1024"
8 | }
9 | ],
10 | "info" : {
11 | "author" : "xcode",
12 | "version" : 1
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/prod/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/env/env.dart:
--------------------------------------------------------------------------------
1 | class Env {
2 | static const String baseUrl = String.fromEnvironment('BASE_URL');
3 | static const String lukeHogId = String.fromEnvironment('LUKE_HOG_ID');
4 | static const String gIdClientIdWWeb = String.fromEnvironment('GID_CLIENT_ID_WEB');
5 | static const String sentryDNS = String.fromEnvironment('SENTRY_DNS');
6 | }
7 |
--------------------------------------------------------------------------------
/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/macos/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/release_notes.sh:
--------------------------------------------------------------------------------
1 | git fetch --prune --unshallow --tags
2 | from=$(git describe --tags --abbrev=0)
3 | version=$(cat pubspec.yaml | grep -o 'version:[^:]*' | cut -f2 -d":" | xargs)
4 | changelog=$(git log $from..HEAD --pretty=format:"* %s by %an")
5 | echo "## What's Changed\n$changelog\n\n**Full Changelog**: https://github.com/o-ifeanyi/skribla/compare/$from...$version" > release_notes.txt
--------------------------------------------------------------------------------
/windows/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral/
2 |
3 | # Visual Studio user-specific files.
4 | *.suo
5 | *.user
6 | *.userosscache
7 | *.sln.docstates
8 |
9 | # Visual Studio build-related files.
10 | x64/
11 | x86/
12 |
13 | # Visual Studio cache files
14 | # files ending in .cache can be ignored
15 | *.[Cc]ache
16 | # but keep track of directories ending in .cache
17 | !*.[Cc]ache/
18 |
--------------------------------------------------------------------------------
/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.
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/linux/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void fl_register_plugins(FlPluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/windows/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void RegisterPlugins(flutter::PluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/lib/src/app/home/presentation/provider/home_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'generated/home_state.freezed.dart';
4 |
5 | enum HomeStatus { idle, creatingGame, findingGame, joiningGame }
6 |
7 | @freezed
8 | class HomeState with _$HomeState {
9 | const factory HomeState({
10 | @Default(HomeStatus.idle) HomeStatus status,
11 | }) = _HomeState;
12 | }
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | rootProject.buildDir = "../build"
9 | subprojects {
10 | project.buildDir = "${rootProject.buildDir}/${project.name}"
11 | }
12 | subprojects {
13 | project.evaluationDependsOn(":app")
14 | }
15 |
16 | tasks.register("clean", Delete) {
17 | delete rootProject.buildDir
18 | }
19 |
--------------------------------------------------------------------------------
/lib/src/app/history/presentation/provider/history_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'generated/history_state.freezed.dart';
4 |
5 | enum HistoryStatus { idle, gettingHistory }
6 |
7 | @freezed
8 | class HistoryState with _$HistoryState {
9 | const factory HistoryState({
10 | @Default(HistoryStatus.idle) HistoryStatus status,
11 | @Default(false) bool sharing,
12 | }) = _HistoryState;
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 |
4 | @main
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/linux/my_application.h:
--------------------------------------------------------------------------------
1 | #ifndef FLUTTER_MY_APPLICATION_H_
2 | #define FLUTTER_MY_APPLICATION_H_
3 |
4 | #include
5 |
6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
7 | GtkApplication)
8 |
9 | /**
10 | * my_application_new:
11 | *
12 | * Creates a new Flutter-based application.
13 | *
14 | * Returns: a new #MyApplication.
15 | */
16 | MyApplication* my_application_new();
17 |
18 | #endif // FLUTTER_MY_APPLICATION_H_
19 |
--------------------------------------------------------------------------------
/macos/Runner/MainFlutterWindow.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | class MainFlutterWindow: NSWindow {
5 | override func awakeFromNib() {
6 | let flutterViewController = FlutterViewController()
7 | let windowFrame = self.frame
8 | self.contentViewController = flutterViewController
9 | self.setFrame(windowFrame, display: true)
10 |
11 | RegisterGeneratedPlugins(registry: flutterViewController)
12 |
13 | super.awakeFromNib()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/src/core/router/routes.dart:
--------------------------------------------------------------------------------
1 | abstract class Routes {
2 | static const String home = '/';
3 | static const String join = 'join/:id';
4 | static const String game = 'game/:id';
5 | static const String history = 'history';
6 | static const String leaderboard = 'leaderboard';
7 | static const String settings = 'settings';
8 | static const String update = '/update';
9 | static const String unavailable = '/unavailable';
10 | static const String suspended = '/suspended';
11 | }
12 |
--------------------------------------------------------------------------------
/web_flavor_setup.sh:
--------------------------------------------------------------------------------
1 | if [ "$#" -ne 1 ]; then
2 | echo "Expected flavor: sh $0 "
3 | exit 1
4 | fi
5 |
6 | flavor=$1
7 |
8 | cp "./web/$flavor/favicon.png" "./web/favicon.png"
9 | echo "Successfully copied favicon"
10 | cp "./web/$flavor/Icon-192.png" "./web/icons/Icon-192.png"
11 | cp "./web/$flavor/Icon-512.png" "./web/icons/Icon-512.png"
12 | echo "Successfully copied icons"
13 | cp "./web/$flavor/manifest.json" "./web/manifest.json"
14 | echo "Successfully copied manifest.json"
15 |
--------------------------------------------------------------------------------
/lib/src/app/auth/presentation/provider/auth_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 | import 'package:skribla/src/app/auth/data/models/user_model.dart';
3 |
4 | part 'generated/auth_state.freezed.dart';
5 |
6 | enum AuthStatus { idle, signingIn, deletingAccount }
7 |
8 | @freezed
9 | class AuthState with _$AuthState {
10 | const factory AuthState({
11 | @Default(AuthStatus.idle) AuthStatus status,
12 | @Default(null) UserModel? user,
13 | }) = _AuthState;
14 | }
15 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "background.png",
5 | "idiom" : "universal"
6 | },
7 | {
8 | "appearances" : [
9 | {
10 | "appearance" : "luminosity",
11 | "value" : "dark"
12 | }
13 | ],
14 | "filename" : "darkbackground.png",
15 | "idiom" : "universal"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/windows/runner/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by Runner.rc
4 | //
5 | #define IDI_APP_ICON 101
6 |
7 | // Next default values for new objects
8 | //
9 | #ifdef APSTUDIO_INVOKED
10 | #ifndef APSTUDIO_READONLY_SYMBOLS
11 | #define _APS_NEXT_RESOURCE_VALUE 102
12 | #define _APS_NEXT_COMMAND_VALUE 40001
13 | #define _APS_NEXT_CONTROL_VALUE 1001
14 | #define _APS_NEXT_SYMED_VALUE 101
15 | #endif
16 | #endif
17 |
--------------------------------------------------------------------------------
/lib/src/core/resource/firebase_paths.dart:
--------------------------------------------------------------------------------
1 | import 'package:skribla/src/core/util/enums.dart';
2 |
3 | abstract class FirebasePaths {
4 | static const String users = 'users';
5 | static const String games = 'games';
6 | static const String words = 'words';
7 | static const String reports = 'reports';
8 | static String exhibits(String id) => 'games/$id/exhibits';
9 | static String messages(String id) => 'games/$id/messages';
10 | static String leaderboard(LeaderboardType type) => 'leaderboard/${type.name}/users';
11 | }
12 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "LaunchImage@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "LaunchImage@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/src/core/util/types.dart:
--------------------------------------------------------------------------------
1 | import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
2 | import 'package:skribla/src/app/game/data/models/game_model.dart';
3 | import 'package:skribla/src/app/leaderboard/data/models/leaderboard_model.dart';
4 |
5 | typedef CachedData = ({T data, DateTime expiry});
6 | typedef HistoryController = PagingController;
7 | typedef LeaderboardController = PagingController;
8 | typedef LeaderboardPosition = ({int position, LeaderboardModel model});
9 |
--------------------------------------------------------------------------------
/lib/src/core/platform/web.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: avoid_web_libraries_in_flutter
2 |
3 | import 'dart:html' as html;
4 | import 'dart:typed_data';
5 |
6 | Future shareImage(ByteData byteData, String fileName) async {
7 | final url = html.Url.createObjectUrlFromBlob(
8 | html.Blob([byteData.buffer.asUint8List()], 'image/png'),
9 | );
10 |
11 | html.AnchorElement(href: url)
12 | ..setAttribute('download', fileName)
13 | ..click();
14 |
15 | html.Url.revokeObjectUrl(url);
16 | }
17 |
18 | String get localeName => html.window.navigator.language;
19 |
--------------------------------------------------------------------------------
/lib/src/app/settings/presentation/provider/settings_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:freezed_annotation/freezed_annotation.dart';
3 |
4 | part 'generated/settings_state.freezed.dart';
5 |
6 | enum SettingsStatus { idle }
7 |
8 | @freezed
9 | class SettingsState with _$SettingsState {
10 | const factory SettingsState({
11 | @Default(SettingsStatus.idle) SettingsStatus status,
12 | @Default(ThemeMode.system) ThemeMode theme,
13 | @Default(true) bool hapticsOn,
14 | @Default('') String version,
15 | }) = _SettingsState;
16 | }
17 |
--------------------------------------------------------------------------------
/lib/src/core/util/constants.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | abstract class Constants {
4 | static const points = 10;
5 | static const email = 'skriblaapp@gmail.com';
6 | static final colors = [...Colors.primaries];
7 | static final allColors = [...Colors.primaries, ...Colors.accents];
8 | static const privacy = 'https://skribla.com/privacy';
9 | static const terms = 'https://skribla.com/terms';
10 | static const website = 'https://skribla.com/';
11 | static const playstore = 'https://skribla.com/';
12 | static const appstore = 'https://skribla.com/';
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.applesignin
6 |
7 | Default
8 |
9 | com.apple.developer.associated-domains
10 |
11 | $(ASSOCIATED_DOMAINS)
12 |
13 | keychain-access-groups
14 |
15 | $(AppIdentifierPrefix)com.google.GIDSignIn
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/lib/src/app/game/presentation/provider/game_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:freezed_annotation/freezed_annotation.dart';
3 | import 'package:skribla/src/app/game/data/models/game_model.dart';
4 |
5 | part 'generated/game_state.freezed.dart';
6 |
7 | enum GameStatus { idle, sendingMessage }
8 |
9 | @freezed
10 | class GameState with _$GameState {
11 | const factory GameState({
12 | @Default(GameStatus.idle) GameStatus status,
13 | @Default(Colors.red) Color color,
14 | @Default(2) int stroke,
15 | @Default(null) GameModel? game,
16 | }) = _GameState;
17 | }
18 |
--------------------------------------------------------------------------------
/lib/src/app/game/data/models/report_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'generated/report_model.g.dart';
4 |
5 | @JsonSerializable()
6 | class ReportModel {
7 | const ReportModel(
8 | this.uid,
9 | this.gameId,
10 | this.reason,
11 | this.createdAt,
12 | );
13 |
14 | factory ReportModel.fromJson(Map json) => _$ReportModelFromJson(json);
15 |
16 | Map toJson() => _$ReportModelToJson(this);
17 |
18 | final String uid;
19 | final String gameId;
20 | final String reason;
21 | final DateTime createdAt;
22 | }
23 |
--------------------------------------------------------------------------------
/lib/src/app/leaderboard/data/models/leaderboard_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'generated/leaderboard_model.freezed.dart';
4 | part 'generated/leaderboard_model.g.dart';
5 |
6 | @freezed
7 | class LeaderboardModel with _$LeaderboardModel {
8 | const factory LeaderboardModel({
9 | required String uid,
10 | required DateTime updatedAt,
11 | required DateTime createdAt,
12 | @Default('') String name,
13 | @Default(0) int points,
14 | }) = _LeaderboardModel;
15 |
16 | factory LeaderboardModel.fromJson(Map json) => _$LeaderboardModelFromJson(json);
17 | }
18 |
--------------------------------------------------------------------------------
/lib/src/app/leaderboard/presentation/provider/leaderboard_state.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 | import 'package:skribla/src/app/leaderboard/data/models/leaderboard_model.dart';
3 | import 'package:skribla/src/core/util/enums.dart';
4 |
5 | part 'generated/leaderboard_state.freezed.dart';
6 |
7 | @freezed
8 | class LeaderboardState with _$LeaderboardState {
9 | const factory LeaderboardState({
10 | @Default(LeaderboardStatus.idle) LeaderboardStatus status,
11 | @Default(LeaderboardType.monthly) LeaderboardType type,
12 | @Default([]) List topThree,
13 | }) = _LeaderboardState;
14 | }
15 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
2 | GCC_WARN_UNDECLARED_SELECTOR = YES
3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
6 | CLANG_WARN_PRAGMA_PACK = YES
7 | CLANG_WARN_STRICT_PROTOTYPES = YES
8 | CLANG_WARN_COMMA = YES
9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES
10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
12 | GCC_WARN_SHADOW = YES
13 | CLANG_WARN_UNREACHABLE_CODE = YES
14 |
--------------------------------------------------------------------------------
/macos/Runner/Configs/AppInfo.xcconfig:
--------------------------------------------------------------------------------
1 | // Application-level settings for the Runner target.
2 | //
3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
4 | // future. If not, the values below would default to using the project name when this becomes a
5 | // 'flutter create' template.
6 |
7 | // The application's name. By default this is also the title of the Flutter window.
8 | PRODUCT_NAME = Skribla
9 |
10 | // The application's bundle identifier
11 | PRODUCT_BUNDLE_IDENTIFIER = com.skribla.macos.prod
12 |
13 | // The copyright displayed in application information
14 | PRODUCT_COPYRIGHT = Copyright © 2024 Skribla. All rights reserved.
15 |
--------------------------------------------------------------------------------
/lib/src/core/util/device_info.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'generated/device_info.g.dart';
4 |
5 | @JsonSerializable()
6 | class DeviceInfo {
7 | const DeviceInfo({
8 | required this.platform,
9 | this.systemName,
10 | this.appVersion,
11 | this.systemVersion,
12 | this.buildNumber,
13 | });
14 | factory DeviceInfo.fromJson(Map json) => _$DeviceInfoFromJson(json);
15 |
16 | Map toJson() => _$DeviceInfoToJson(this);
17 |
18 | final String platform;
19 | final String? systemName;
20 | final String? systemVersion;
21 | final String? appVersion;
22 | final String? buildNumber;
23 | }
24 |
--------------------------------------------------------------------------------
/lib/src/core/util/result.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 | import 'package:skribla/src/core/util/enums.dart';
3 |
4 | part 'generated/result.freezed.dart';
5 |
6 | @freezed
7 | sealed class Result with _$Result {
8 | const factory Result.success(T value) = _SuccessResult;
9 | const factory Result.error(CustomError error) = _ErrorResult;
10 | }
11 |
12 | class CustomError implements Exception {
13 | const CustomError({
14 | required this.message,
15 | this.reason = ErrorReason.unknown,
16 | });
17 | final String message;
18 | final ErrorReason reason;
19 |
20 | @override
21 | String toString() => 'Message: $message Reason: ${reason.value}';
22 | }
23 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/macos/Runner/Release.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.applesignin
6 |
7 | Default
8 |
9 | com.apple.developer.associated-domains
10 |
11 | $(ASSOCIATED_DOMAINS)
12 |
13 | com.apple.security.app-sandbox
14 |
15 | com.apple.security.network.client
16 |
17 | keychain-access-groups
18 |
19 | $(AppIdentifierPrefix)com.google.GIDSignIn
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/windows/runner/utils.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_UTILS_H_
2 | #define RUNNER_UTILS_H_
3 |
4 | #include
5 | #include
6 |
7 | // Creates a console for the process, and redirects stdout and stderr to
8 | // it for both the runner and the Flutter library.
9 | void CreateAndAttachConsole();
10 |
11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
12 | // encoded in UTF-8. Returns an empty std::string on failure.
13 | std::string Utf8FromUtf16(const wchar_t* utf16_string);
14 |
15 | // Gets the command line arguments passed in as a std::vector,
16 | // encoded in UTF-8. Returns an empty std::vector on failure.
17 | std::vector GetCommandLineArguments();
18 |
19 | #endif // RUNNER_UTILS_H_
20 |
--------------------------------------------------------------------------------
/lib/src/core/widgets/gradient_text.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class GradientText extends StatelessWidget {
4 | const GradientText(
5 | this.text, {
6 | required this.gradient,
7 | super.key,
8 | this.style,
9 | });
10 |
11 | final String text;
12 | final TextStyle? style;
13 | final Gradient gradient;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return ShaderMask(
18 | blendMode: BlendMode.srcIn,
19 | shaderCallback: (bounds) => gradient.createShader(
20 | Rect.fromLTWH(0, 0, bounds.width, bounds.height),
21 | ),
22 | child: Text(
23 | text,
24 | style: style,
25 | textAlign: TextAlign.center,
26 | ),
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/src/app/game/data/models/line_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/painting.dart';
2 | import 'package:freezed_annotation/freezed_annotation.dart';
3 | import 'package:skribla/src/core/util/converters.dart';
4 |
5 | part 'generated/line_model.g.dart';
6 |
7 | @JsonSerializable(
8 | converters: [OffsetConverter(), SizeConverter(), ColorConverter()],
9 | )
10 | class LineModel {
11 | const LineModel(
12 | this.path,
13 | this.size,
14 | this.color,
15 | this.stroke,
16 | );
17 |
18 | factory LineModel.fromJson(Map json) => _$LineModelFromJson(json);
19 |
20 | Map toJson() => _$LineModelToJson(this);
21 |
22 | final List path;
23 | final Size size;
24 | final Color color;
25 | final int stroke;
26 | }
27 |
--------------------------------------------------------------------------------
/linux/flutter/generated_plugin_registrant.cc:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #include "generated_plugin_registrant.h"
8 |
9 | #include
10 | #include
11 |
12 | void fl_register_plugins(FlPluginRegistry* registry) {
13 | g_autoptr(FlPluginRegistrar) sentry_flutter_registrar =
14 | fl_plugin_registry_get_registrar_for_plugin(registry, "SentryFlutterPlugin");
15 | sentry_flutter_plugin_register_with_registrar(sentry_flutter_registrar);
16 | g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar =
17 | fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin");
18 | url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar);
19 | }
20 |
--------------------------------------------------------------------------------
/macos/Runner/DebugProfile.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.developer.applesignin
6 |
7 | Default
8 |
9 | com.apple.developer.associated-domains
10 |
11 | $(ASSOCIATED_DOMAINS)
12 |
13 | com.apple.security.app-sandbox
14 |
15 | com.apple.security.cs.allow-jit
16 |
17 | com.apple.security.network.client
18 |
19 | com.apple.security.network.server
20 |
21 | keychain-access-groups
22 |
23 | $(AppIdentifierPrefix)com.google.GIDSignIn
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/web/.well-known/apple-app-site-association:
--------------------------------------------------------------------------------
1 | {
2 | "applinks": {
3 | "apps": [],
4 | "details": [
5 | {
6 | "appIDs": [
7 | "YYA8WP4LNJ.com.skribla.ios.prod"
8 | ],
9 | "components": [
10 | {
11 | "/": "*",
12 | "comment": "Matches all url paths."
13 | }
14 | ]
15 | },
16 | {
17 | "appIDs": [
18 | "YYA8WP4LNJ.com.skribla.ios.dev"
19 | ],
20 | "components": [
21 | {
22 | "/": "*",
23 | "comment": "Matches all url paths."
24 | }
25 | ]
26 | }
27 | ]
28 | }
29 | }
--------------------------------------------------------------------------------
/lib/src/app/game/data/models/generated/report_model.g.dart:
--------------------------------------------------------------------------------
1 | // GENERATED CODE - DO NOT MODIFY BY HAND
2 |
3 | part of '../report_model.dart';
4 |
5 | // **************************************************************************
6 | // JsonSerializableGenerator
7 | // **************************************************************************
8 |
9 | ReportModel _$ReportModelFromJson(Map json) => ReportModel(
10 | json['uid'] as String,
11 | json['game_id'] as String,
12 | json['reason'] as String,
13 | DateTime.parse(json['created_at'] as String),
14 | );
15 |
16 | Map _$ReportModelToJson(ReportModel instance) => {
17 | 'uid': instance.uid,
18 | 'game_id': instance.gameId,
19 | 'reason': instance.reason,
20 | 'created_at': instance.createdAt.toIso8601String(),
21 | };
22 |
--------------------------------------------------------------------------------
/lib/src/core/platform/others.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 | import 'dart:typed_data';
3 |
4 | import 'package:path_provider/path_provider.dart';
5 | import 'package:share_plus/share_plus.dart';
6 |
7 | Future shareImage(ByteData byteData, String fileName) async {
8 | final dir = Platform.isAndroid
9 | ? await getExternalStorageDirectory()
10 | : await getApplicationSupportDirectory();
11 |
12 | if (dir == null) return;
13 |
14 | // delete previous screenshots
15 | final files = dir.listSync();
16 | for (final file in files) {
17 | if (file.path.contains('screenshot')) {
18 | file.deleteSync();
19 | }
20 | }
21 |
22 | final file = await File('${dir.path}/$fileName').create();
23 |
24 | await file.writeAsBytes(byteData.buffer.asUint8List());
25 |
26 | await Share.shareXFiles([XFile(file.path)]);
27 | }
28 |
29 | String get localeName => Platform.localeName;
30 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/linux/flutter/generated_plugins.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Generated file, do not edit.
3 | #
4 |
5 | list(APPEND FLUTTER_PLUGIN_LIST
6 | sentry_flutter
7 | url_launcher_linux
8 | )
9 |
10 | list(APPEND FLUTTER_FFI_PLUGIN_LIST
11 | )
12 |
13 | set(PLUGIN_BUNDLED_LIBRARIES)
14 |
15 | foreach(plugin ${FLUTTER_PLUGIN_LIST})
16 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
17 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
18 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
19 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
20 | endforeach(plugin)
21 |
22 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
23 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
24 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
25 | endforeach(ffi_plugin)
26 |
--------------------------------------------------------------------------------
/web/.well-known/assetlinks.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "relation": [
4 | "delegate_permission/common.handle_all_urls"
5 | ],
6 | "target": {
7 | "namespace": "android_app",
8 | "package_name": "com.skribla.android.prod",
9 | "sha256_cert_fingerprints": [
10 | "3A:6F:B8:6D:A2:71:9D:21:29:C5:9D:D4:CC:06:3C:11:83:AD:4F:44:A8:98:F1:2E:1E:0C:F8:B3:49:34:A5:D0"
11 | ]
12 | }
13 | },
14 | {
15 | "relation": [
16 | "delegate_permission/common.handle_all_urls"
17 | ],
18 | "target": {
19 | "namespace": "android_app",
20 | "package_name": "com.skribla.android.dev",
21 | "sha256_cert_fingerprints": [
22 | "64:00:16:E5:C8:40:9C:C6:09:6C:B4:44:CF:E1:6D:E8:D8:08:C6:0C:73:73:50:4C:66:51:D2:EF:09:35:87:95"
23 | ]
24 | }
25 | }
26 | ]
--------------------------------------------------------------------------------
/lib/src/app/game/data/models/word_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 | import 'package:skribla/src/core/platform/others.dart'
3 | if (dart.library.html) 'package:skribla/src/core/platform/web.dart' as platform;
4 |
5 | part 'generated/word_model.freezed.dart';
6 | part 'generated/word_model.g.dart';
7 |
8 | @freezed
9 | class WordModel with _$WordModel {
10 | const factory WordModel({
11 | required String id,
12 | required DateTime createdAt,
13 | required String text,
14 | @Default(0) int index,
15 | @Default({}) Map loc,
16 | @Default(true) bool available,
17 | }) = _WordModel;
18 |
19 | const WordModel._();
20 |
21 | factory WordModel.fromJson(Map json) => _$WordModelFromJson(json);
22 |
23 | String get locText {
24 | final language = platform.localeName.split('_')[0];
25 | return loc[language] ?? text;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/src/app/history/data/models/exhibit_model.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 | import 'package:skribla/src/app/game/data/models/line_model.dart';
3 | import 'package:skribla/src/app/game/data/models/player_model.dart';
4 | import 'package:skribla/src/app/game/data/models/word_model.dart';
5 |
6 | part 'generated/exhibit_model.g.dart';
7 |
8 | @JsonSerializable()
9 | class ExhibitModel {
10 | const ExhibitModel({
11 | required this.id,
12 | required this.player,
13 | required this.word,
14 | required this.art,
15 | required this.createdAt,
16 | });
17 |
18 | factory ExhibitModel.fromJson(Map json) => _$ExhibitModelFromJson(json);
19 |
20 | Map toJson() => _$ExhibitModelToJson(this);
21 |
22 | final String id;
23 | final PlayerModel player;
24 | final WordModel word;
25 | final List art;
26 | final DateTime createdAt;
27 | }
28 |
--------------------------------------------------------------------------------
/lib/src/core/observers/provider_watch.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_riverpod/flutter_riverpod.dart';
2 | import 'package:skribla/src/core/service/logger.dart';
3 |
4 | const _logger = Logger('Provider Watch');
5 |
6 | class ProviderWatch extends ProviderObserver {
7 | @override
8 | void didAddProvider(
9 | ProviderBase