{"id":40570831,"url":"https://github.com/kongo2002/flcheck","last_synced_at":"2026-01-27T22:07:44.335Z","repository":{"id":38782676,"uuid":"499282139","full_name":"kongo2002/flcheck","owner":"kongo2002","description":"CLI tool to check, validate and analyze flutter/dart package dependencies","archived":false,"fork":false,"pushed_at":"2026-01-06T21:15:00.000Z","size":125,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-21T09:53:30.889Z","etag":null,"topics":["ci-cd","dart","dependencies","flutter"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/kongo2002.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-02T20:33:42.000Z","updated_at":"2026-01-06T21:15:04.000Z","dependencies_parsed_at":"2025-03-08T10:35:09.456Z","dependency_job_id":null,"html_url":"https://github.com/kongo2002/flcheck","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/kongo2002/flcheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongo2002%2Fflcheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongo2002%2Fflcheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongo2002%2Fflcheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongo2002%2Fflcheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kongo2002","download_url":"https://codeload.github.com/kongo2002/flcheck/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kongo2002%2Fflcheck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28823930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T18:44:20.126Z","status":"ssl_error","status_checked_at":"2026-01-27T18:44:09.161Z","response_time":168,"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":["ci-cd","dart","dependencies","flutter"],"created_at":"2026-01-21T01:35:13.743Z","updated_at":"2026-01-27T22:07:44.323Z","avatar_url":"https://github.com/kongo2002.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# flcheck\n\n*flcheck* is a CLI tool to check, validate and analyze flutter (dart) package\ndependencies.\n\n[![flcheck](https://github.com/kongo2002/flcheck/actions/workflows/build.yml/badge.svg)][actions]\n\nThe tool is meant to assist when creating flutter/dart applications that are\nbuilt by assembling multiple packages into one (or multiple) applications,\nsometimes called \"micro frontends\".\n\nWhen building larger applications it is more important to control the way\npackages are allowed to depend on each other. Otherwise you might end up with\none larger intertwined mess of dependencies that are hard to maintain in the\nlong run.\n\nThe main purpose of *flcheck* is best to be integrated into a CI/CD pipeline and\nchecking that certain dependency rules are met at all times. There is a\npre-configured Github action [flcheck][gh-action] in the marketplace that lets\nyou integrate flcheck with only a couple of lines in your github workflows.\n\n\n## CI/CD integration\n\nYou can easily integrate `flcheck` into your CI/CD pipeline.\n\n### Github workflow\n\nFor github there is even a ready-to-use action, called\n[flcheck](https://github.com/marketplace/actions/flcheck). It can be as simple\nas something like this:\n\n```yaml\n- name: Run flcheck\n  uses: kongo2002/flcheck-action@v1\n  with:\n    command: validate\n    config: flcheck.yaml\n    appDir: ./apps\n```\n\n\n## Running\n\n\n### Validate dependencies\n\n```console\n$ flcheck validate -d /some/dir/of/apps\n```\n\n\n### Print dot dependency graph\n\n```console\n$ flcheck graph -d /some/dir/of/apps \u003e dependencies.dot\n$ dot -o dependencies.png -Tpng dependencies.dot\n```\n\n\n### Check external dependency versions\n\n```console\n$ flcheck check -d /some/dir/of/apps\n```\n\n\n### Print example configuration\n\n```console\n$ flcheck example\n```\n\n\n## Installation\n\nGo to the [releases page][releases], expand the list of assets and download a\nready-to-run binary.\n\n\n## Building\n\n*flcheck* is written in rust and can be built using the usual cargo toolchain:\n\n```console\n$ cargo build --release\n```\n\n\n## Configuration\n\n*flcheck* expects a configuration (default `flcheck.yaml` in the current\ndirectory) that lists the dependency rules of all packages involved.\n\n- `package_types`: list rules for packages that describe what package is allowed\n  to depend on each other\n- `blacklist`: list of patterns (regular expressions) that match package\n  directories that should be excluded from all validations and checks\n- `validations`: configure a severity for each validation type that is\n  supported (`error`, `warn` or `none`, defaults to `error`)\n\nYou *can* run flcheck without a configuration file, however not all features\nwill be available. If you are only interested in e.g. the dependency graph or\ndetect cyclic dependencies that won't be necessary though.\n\n\n### Recommended package setup\n\nThe typical recommended setup is a hierachy like the following:\n\n- `main`: the main app that is shipped and distributed to app stores and\n  assembles the functionalities of one or multiple (sub) apps\n\n- `app`: one or multiple (sub) apps that encapsulate functionalities of usually\n  one domain per app - must not depend on each other\n\n- `shared`: few shared libraries that can be used the glue together multiple\n  apps, e.g. for routing, navigation - must import packages and other shared\n  libraries only\n\n- `package`: general purpose libraries (e.g. utilities) that do not contain\n  domain specific logic, may be included from any package type/layer\n\n\n### Example configuration\n\n```yaml\npackage_types:\n\n  main:\n    # the dir_prefix is used to associate every dart package into one\n    # of the package types listed here, is applied to the directory\n    # name of the package\n    dir_prefix: 'main'\n    # list of package types all packages of this type may import from\n    # (here: main is allowed to import all apps and everything that apps\n    # are allowed to import themselves)\n    includes:\n      - app\n\n  app:\n    dir_prefix: 'app_'\n    includes:\n      - shared\n\n  shared:\n    dir_prefix: 'shared_'\n    includes:\n      - shared\n      - package\n\n  package:\n    # you can also specify a list of directory prefixes\n    dir_prefix:\n      - 'pkg_'\n      - 'util_'\n    includes:\n      - package\n\n# List of patterns (regular expressions) that match package directories\n# that should be excluded from all validations and checks.\n# Here: exclude all auto-generated \"example\" packages from native dart\n# packages.\nblacklist:\n  - '/example'\n\n# You can configure what kind of validations are associated with what\n# level of severity: `error` for errors, `warn` for warnings or\n# `none` to be ignored.\n# If not specified, every validation defaults to `error`\nvalidations:\n  validation:dependency:cyclic: error\n  validation:dependency:unallowed: error\n  validation:dependency:unknown: error\n  validation:dev-dependency:git: error\n  validation:package:missing-workspace: error\n  validation:public:dependency:non-git: error\n```\n\n\n[actions]: https://github.com/kongo2002/flcheck/actions/\n[releases]: https://github.com/kongo2002/flcheck/releases/\n[gh-action]: https://github.com/marketplace/actions/flcheck/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkongo2002%2Fflcheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkongo2002%2Fflcheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkongo2002%2Fflcheck/lists"}