{"id":49944510,"url":"https://github.com/bitoobit/patrickmarrymobileflutter","last_synced_at":"2026-05-17T14:06:23.180Z","repository":{"id":358002968,"uuid":"1232058971","full_name":"BitooBit/PatrickMarryMobileFlutter","owner":"BitooBit","description":"PatrickMarryMobileFlutter","archived":false,"fork":false,"pushed_at":"2026-05-15T06:41:03.000Z","size":6535,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-15T08:44:17.903Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BitooBit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-07T14:48:40.000Z","updated_at":"2026-05-15T06:41:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/BitooBit/PatrickMarryMobileFlutter","commit_stats":null,"previous_names":["bitoobit/patrickmarrymobileflutter"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/BitooBit/PatrickMarryMobileFlutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitooBit%2FPatrickMarryMobileFlutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitooBit%2FPatrickMarryMobileFlutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitooBit%2FPatrickMarryMobileFlutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitooBit%2FPatrickMarryMobileFlutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BitooBit","download_url":"https://codeload.github.com/BitooBit/PatrickMarryMobileFlutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BitooBit%2FPatrickMarryMobileFlutter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33141421,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-17T14:06:22.005Z","updated_at":"2026-05-17T14:06:23.175Z","avatar_url":"https://github.com/BitooBit.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PatrickMarryFlutter\n\nFlutter migration of the MAUI app with 1:1 logic/API/navigation parity as the\nprimary goal.\n\n## Architecture\n\nProject structure follows layered architecture:\n\n- `lib/app` - app bootstrap, router, global app widget.\n- `lib/core` - cross-cutting config, network, theme, DI helpers.\n- `lib/data` - remote data sources, DTO/models, repository implementations.\n- `lib/domain` - entities, repository contracts, use cases.\n- `lib/features` - screen-level presentation logic and UI.\n- `lib/common` - reusable UI widgets shared by multiple features.\n\n## Key Classes (Current Stage)\n\n### App/Navigation\n\n- `PatrickMarryApp` (`lib/app/app.dart`)  \n  Root app widget. Wires router, light/dark themes, and global app settings.\n- `appRouterProvider` (`lib/app/router/app_router.dart`)  \n  Route map for splash -\u003e items/main flow and version page.\n\n### Theme / Design System\n\n- `AppTheme` (`lib/core/theme/app_theme.dart`)  \n  Builds global `ThemeData` for light and dark modes; connects text theme and\n  palette extension.\n- `AppPalette` (`lib/core/theme/app_palette.dart`)  \n  Typed color tokens via `ThemeExtension` (`context.palette`).\n- `AppSpacing` (`lib/core/theme/app_spacing.dart`)  \n  Shared spacing scale (4/8/12/16/24/32/48).\n- `AppRadii` (`lib/core/theme/app_radii.dart`)  \n  Shared corner radius scale.\n- `AppTextStyles` (`lib/core/theme/app_text_styles.dart`)  \n  Centralized semantic text styles.\n\n### Shared UI Components\n\n- `AppCard` (`lib/common/widgets/app_card.dart`)  \n  Standard card container with shared radius/background defaults.\n- `AppLoader` (`lib/common/widgets/app_loader.dart`)  \n  Unified circular loader using theme palette accent.\n- `AppSkeletonBox` (`lib/common/widgets/app_skeleton_box.dart`)  \n  Reusable shimmering/pulsing placeholder block for loading states.\n\n### Feature: Splash\n\n- `SplashPage` (`lib/features/splash/presentation/pages/splash_page.dart`)  \n  Executes bootstrap logic and routes to version/items.\n\n### Feature: Items + Main\n\n- `ItemsPage` (`lib/features/items/presentation/pages/items_page.dart`)  \n  Bottom navigation container (Main/Menu/Cakes/Cart/Profile).\n- `MainController` (`lib/features/main/presentation/controllers/main_controller.dart`)  \n  Riverpod async controller for main-screen data loading and refresh.\n- `MainPage` (`lib/features/main/presentation/pages/main_page.dart`)  \n  Main tab UI with MAUI-like header logo, ticker banner popup, slider cards,\n  loading/error/empty states.\n- `MainRemoteDataSource` (`lib/data/datasources/main_remote_data_source.dart`)  \n  Main tab API calls (`slider_offers`, `get_ticker`, `basic_parameters`).\n- `MainRepository` / `MainRepositoryImpl`  \n  Domain contract + data implementation for main tab data.\n- `LoadMainDataUseCase` (`lib/domain/usecases/load_main_data_usecase.dart`)  \n  Use-case orchestrator for main tab payload.\n\n### Feature: Menu (categories tree)\n\n- `MenuPage` (`lib/features/menu/presentation/pages/menu_page.dart`)  \n  Loads root categories and reproduces nested category navigation.\n- `MenuController` (`lib/features/menu/presentation/controllers/menu_controller.dart`)  \n  Riverpod async controller for menu tree loading/refresh.\n- `MenuRemoteDataSource` (`lib/data/datasources/menu_remote_data_source.dart`)  \n  API call for `categories_with_noms`.\n- `MenuRepository` / `MenuRepositoryImpl`  \n  Domain contract + implementation mapping API models to menu entities.\n- `LoadMenuTreeUseCase` (`lib/domain/usecases/load_menu_tree_usecase.dart`)  \n  Use-case entrypoint for menu tree.\n\n## Styling Rules (Mandatory)\n\n- Do not hardcode colors/sizes/radius on pages when a shared token exists.\n- Use:\n  - colors from `AppPalette` (`context.palette.*`)\n  - spacing from `AppSpacing`\n  - radius from `AppRadii`\n  - semantic text from `Theme.of(context).textTheme`\n- For repeatable layout blocks, create/update shared widgets in `lib/common/widgets`.\n- Every new shared token/component must be documented in this README.\n\n## Clone from Git\n\nThis repository excludes build outputs, Gradle caches, CocoaPods, and generated\niOS Flutter files (`ios/Flutter/Generated.xcconfig`, `flutter_export_environment.sh`,\n`Flutter.podspec`, ephemeral). After cloning:\n\n```bash\nflutter pub get\ncd ios \u0026\u0026 pod install \u0026\u0026 cd ..\nflutter run\n```\n\nCreate `android/local.properties` with your Android SDK path if Android Studio\ndoes not generate it (that file is ignored on purpose).\n\n## Validation Commands\n\n```bash\n/Users/denistverdohleb/Development/Project/PatrickMobile/flutter_sdk/bin/flutter analyze\n/Users/denistverdohleb/Development/Project/PatrickMobile/flutter_sdk/bin/flutter test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitoobit%2Fpatrickmarrymobileflutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitoobit%2Fpatrickmarrymobileflutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitoobit%2Fpatrickmarrymobileflutter/lists"}