{"id":18011350,"url":"https://github.com/mhmzdev/blocpod","last_synced_at":"2025-04-04T13:42:46.204Z","repository":{"id":192371752,"uuid":"686601428","full_name":"mhmzdev/blocpod","owner":"mhmzdev","description":"An experimental framework to play with","archived":false,"fork":false,"pushed_at":"2023-09-03T11:26:14.000Z","size":309,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-09T23:27:39.643Z","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/mhmzdev.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}},"created_at":"2023-09-03T10:50:46.000Z","updated_at":"2023-12-08T23:09:15.000Z","dependencies_parsed_at":"2023-09-04T13:49:34.066Z","dependency_job_id":"2ff9ef5f-76ac-4314-a7ca-0cf8e6e9d937","html_url":"https://github.com/mhmzdev/blocpod","commit_stats":null,"previous_names":["mhmzdev/blocpod"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhmzdev%2Fblocpod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhmzdev%2Fblocpod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhmzdev%2Fblocpod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhmzdev%2Fblocpod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mhmzdev","download_url":"https://codeload.github.com/mhmzdev/blocpod/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247188930,"owners_count":20898609,"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","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":"2024-10-30T03:09:43.636Z","updated_at":"2025-04-04T13:42:46.186Z","avatar_url":"https://github.com/mhmzdev.png","language":"Dart","readme":"## BlocPod\nBlocPod - I'm very poor with naming stuff, I just extracted this as a mix of `bloc` + `provider` = `blocpod`\n\nJust an experimental framework that I'm playing around. Overall its a mix of `provider` and `flutter_bloc`. Overall `provider` is being used as state for each screen (viewModel if you are a stacked person) and `flutter_bloc` is mainly used for business logic.\n\n### Project Structure\n- _template\n    - This the most important folder here, as I work with `bloc` using 4 layers:\n        - `cubit.dart`\n        - `state.dart`\n        - `repository.dart`\n        - `data_provider.dart`\n    - So, this is powered with `hygen` (npm package) that helps me in generating all the boilerplate code.\n        - screen\n        - cubits\n        - providers\n\n- configs\n    - Controls the app theming, spaces, typography etc.\n    - `extensions` might be put here as well\n- cubits\n    - Since I'm a `cubit/state` person not an `event/state` so all the cubits goes here.\n    - It will have simple and nested cubits (both)\n- models\n    - All the application global model classes will be used here.\n    - I have some local models as well e.g. `bottom_bar/item_model.dart`\n- providers\n    - `ChangeNotifier` that will be used all across the apps will be here\n    - If a `ChangeNotifier` is specifically managing state of a screen it will be put in `screen/screen_name/_state.dart`\n- router\n    - This manages the overall navigation of the app with help of `configs/extension/_string.dart` where an extension is written for `String` class and I mostly prefer named Navigation.\n- services\n    - All the services goes here e.g. Api, AppCache service etc.\n- ui\n    - animations\n    - painters\n    - screens\n        - `screen_name.dart`\n        - `_state.dart`\n        - If some widgets are required only at one screen the will be put in `screen/widgets/` folder\n    - widgets\n        - core\n        - design\n        - headless\n- uitls\n    - I'm putting some helper function here, utils functions\n        - snackbars\n        - dialogs\n        - assets etc.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhmzdev%2Fblocpod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmhmzdev%2Fblocpod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhmzdev%2Fblocpod/lists"}