{"id":30196208,"url":"https://github.com/grzott/modern-app-patterns","last_synced_at":"2026-04-10T14:39:16.889Z","repository":{"id":309406813,"uuid":"1036157789","full_name":"grzott/modern-app-patterns","owner":"grzott","description":"Practical, copy‑pasteable patterns for modern apps with live end‑to‑end examples. Covers React Native (TS), Android (Kotlin/Compose), iOS (Swift/SwiftUI), .NET (Minimal API/MAUI), and Flutter (Dart). Includes sandboxes for quick runs so you can copy, paste, and tweak fast.","archived":false,"fork":false,"pushed_at":"2025-08-11T19:25:47.000Z","size":76,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T19:27:05.471Z","etag":null,"topics":["android","aspnet-core","caching","clean-architecture","dart","dependency-injection","dotnet","flutter","ios","jetpack-compose","kotlin","mvi","mvvm","react-native","repository-pattern","software-patterns","state-management","swift","swiftui","typescript"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grzott.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2025-08-11T16:34:42.000Z","updated_at":"2025-08-11T19:25:51.000Z","dependencies_parsed_at":"2025-08-11T19:28:52.429Z","dependency_job_id":"20d17602-93fe-459f-a2f6-2d4b884bb701","html_url":"https://github.com/grzott/modern-app-patterns","commit_stats":null,"previous_names":["grzott/modern-app-patterns"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/grzott/modern-app-patterns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grzott%2Fmodern-app-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grzott%2Fmodern-app-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grzott%2Fmodern-app-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grzott%2Fmodern-app-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grzott","download_url":"https://codeload.github.com/grzott/modern-app-patterns/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grzott%2Fmodern-app-patterns/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270183606,"owners_count":24541341,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["android","aspnet-core","caching","clean-architecture","dart","dependency-injection","dotnet","flutter","ios","jetpack-compose","kotlin","mvi","mvvm","react-native","repository-pattern","software-patterns","state-management","swift","swiftui","typescript"],"created_at":"2025-08-13T05:17:03.278Z","updated_at":"2025-12-30T19:53:49.743Z","avatar_url":"https://github.com/grzott.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# modern-app-patterns\n\nPractical, copy‑pasteable patterns for modern app development. Every guide has a live, end‑to‑end example you can drop into a project (modder’s approach: copy, paste, tweak).\n\n## Features\n\n- Live, minimal examples for each pattern—ready to copy and run\n- Covers multiple platforms: React Native, Android, iOS, .NET, Flutter\n- Sandboxes for each tech to try patterns instantly\n- Consistent structure: pattern intro, focused code, live end-to-end, copy map\n- Modern best practices: typed navigation, pluggable adapters, testable flows\n\n## What’s inside\n\n- Architecture: MVVM, MVI, Clean Architecture, UDF, Coordinator\n- State: Redux Toolkit, Zustand, React Query, StateFlow/Flow, Bloc, Riverpod, ObservableObject\n- Data: Repository + DTO/Codable/Retrofit/Room/HttpClient/Dio; caching (AsyncStorage/MMKV, IMemoryCache/IDistributedCache, SharedPreferences, Hive)\n- Dependency Injection: Hilt, get_it, protocol-based DI, built-in DI\n- Navigation: React Navigation, Expo Router, Jetpack, go_router, Coordinators\n- UI: Compound components/widgets, state hoisting, SwiftUI state\n- Live examples: Copy/paste flows for each pattern\n\n## How to use\n\n1. Pick a pattern from the platform index (see below).\n2. Open the matching sandbox in `sandboxes/` or use your own app.\n3. Copy the “Live end-to-end example” into your app, following the copy map.\n4. Add any required dependencies (see pattern or sandbox README).\n5. Run and tweak for your needs.\n\n## Supported platforms \u0026 patterns\n\n| Platform          | Language(s) | Patterns \u0026 Features                                                                |\n| ----------------- | ----------- | ---------------------------------------------------------------------------------- |\n| React Native      | TypeScript  | MVVM+UDF, Redux Toolkit, Zustand, React Query, Repository+DTO, DI, Caching, Nav    |\n| Android (Compose) | Kotlin      | MVVM, MVI, Clean, Repository+Retrofit+Room, Hilt, Flow, Navigation, State Hoisting |\n| iOS (SwiftUI)     | Swift       | MVVM, Clean, Repository+Codable, DI, Coordinator, Concurrency, SwiftUI State       |\n| .NET (API/MAUI)   | C#          | MVVM, Clean, Repository+DTO+HttpClient, Caching, DI, MediatR, Minimal API, MAUI    |\n| Flutter           | Dart        | MVVM+UDF, Bloc, Riverpod, Repository+Dio+DTO, get_it, Caching, go_router, Widgets  |\n\n## Browse by platform\n\n- [React Native](react-native/README.md)\n- [Android (Kotlin)](android-kotlin/README.md)\n- [iOS (Swift)](ios-swift/README.md)\n- [.NET (C#)](dotnet/README.md)\n- [Flutter (Dart)](flutter/README.md)\n\n## Sandboxes\n\nTiny starter projects for each platform:\n\n- [React Native (Expo)](sandboxes/react-native-expo/)\n- [.NET Minimal API](sandboxes/dotnet-minimal-api/)\n- [.NET MAUI](sandboxes/dotnet-maui/)\n- [Android (Compose)](sandboxes/android-compose/)\n- [iOS (SwiftUI)](sandboxes/ios-swiftui/)\n- [Flutter](sandboxes/flutter/)\n\nSee [sandboxes/README.md](sandboxes/README.md) for setup and run instructions.\n\n## Contributing\n\nContributions are welcome! To add a new pattern, fix an example, or support a new platform:\n\n- Keep examples short, idiomatic, and ready to paste into a sandbox or real app.\n- Add a “Live end-to-end example” and a “Sandbox copy map” section to new pages.\n- Update the relevant README and sandbox if you add a new pattern or tech.\n- Open a PR with a clear description and sample usage if possible.\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrzott%2Fmodern-app-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrzott%2Fmodern-app-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrzott%2Fmodern-app-patterns/lists"}