{"adoption": {"forks": 114, "observed_at": "2026-08-28T04:07:21.451021+00:00", "stars": 2777}, "canonical_url": "https://ross.abutalabs.com/products/rinf", "card": {"archived": false, "artifact_type": "framework", "description": "Rust for native business logic, Flutter for flexible and beautiful GUI", "domain": ["cross-platform", "mobile-development", "desktop-applications", "web-development", "developer-tools"], "enriched": true, "function": ["gui", "mobile-framework", "sdk", "serialization", "concurrency"], "health_score": 99, "homepage": null, "language": "Rust", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["cunarist/rinf"], "name": "cunarist/rinf", "platform": ["windows", "cross-platform", "rust"], "pushed_at": "2026-08-15T09:47:37+00:00", "repo": "cunarist/rinf", "stars": 2777, "tags": ["flutter", "ffi", "rust-bindings", "dart-codegen", "type-safe-messaging", "cross-platform-apps", "android", "ios", "linux", "macos", "web-server"], "topics": ["android", "cross-platform", "dart", "flutter", "ios", "linux", "macos", "production-ready", "rust", "windows", "ffi", "restful-api", "app", "gui", "web"], "urls": [], "use_cases": ["build a cross-platform app with Rust backend and Flutter UI", "write business logic in Rust for a mobile app", "use native FFI instead of webviews to connect Rust and Dart", "share Rust code across Android, iOS, and desktop apps", "stream typed messages from Rust to Flutter widgets", "avoid running a web server inside a mobile app"], "what_it_is": "Rinf is a framework that combines Rust for native business logic with Flutter for the GUI, communicating via native FFI with type-safe generated message classes. It supports all Flutter platforms including Linux, Android, Windows, macOS, iOS, and Web.", "when_to_avoid": ["your app is pure Dart/Flutter with no need for Rust", "you need a framework with active dedicated maintenance (project is seeking a new maintainer)", "you target embedded Linux as a primary platform (only experimental)", "you want a pure Rust GUI without Flutter"], "when_to_choose": ["you want Rust performance for app logic with a polished Flutter UI", "you need one codebase targeting mobile, desktop, and web", "you want type-safe Dart-Rust communication without webviews or HTTP overhead", "you prefer native FFI over embedding a web server in your app"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/rinf", "repo": "cunarist/rinf", "role": "main", "score": 96}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.451021+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:16:31.197311+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0427c5c1c6c2555c8d7b785560fcc94d5b1596075317ccf2cd8acc7cb2daf5ae", "fetched_at": "2026-08-28T04:07:21.451021+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cunarist/rinf"}, {"content_hash": "df1fdec9d4b5fb114db62abbf6169e1261f3928aeab88e88dd239091b255a464", "fetched_at": "2026-08-29T09:55:39.015765+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/rinf"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 92, "rhythm": 98}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1295, "days_push": 18, "days_rel": 18, "gap_med": 10.0, "n_releases_24m": 31}, "score": 96, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}