{"adoption": {"forks": 136, "observed_at": "2026-08-28T04:06:11.367979+00:00", "stars": 2078}, "canonical_url": "https://ross.abutalabs.com/products/statemachine", "card": {"archived": false, "artifact_type": "library", "description": "A Kotlin and Swift DSL for finite state machine", "domain": ["developer-tools", "mobile-development"], "enriched": true, "function": ["state-management", "developer-tools"], "health_score": 20, "homepage": null, "language": "Swift", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["Tinder/StateMachine"], "name": "Tinder/StateMachine", "platform": ["jvm"], "pushed_at": "2024-07-22T04:05:41+00:00", "repo": "Tinder/StateMachine", "stars": 2078, "tags": ["finite-state-machine", "dsl", "kotlin-multiplatform", "state-transitions", "algorithms", "swift", "ios", "android"], "topics": [], "urls": [], "use_cases": ["model app UI states with a finite state machine", "define state transitions in Kotlin with a DSL", "implement state machines in Swift for iOS apps", "manage side effects on state transitions", "replace ad-hoc boolean state flags with a formal state machine"], "what_it_is": "A Kotlin and Swift DSL library for defining finite state machines with typed states, events, and side effects. It lets developers declaratively specify state transitions and handle transition events, and is used internally by Tinder's Scarlet library.", "when_to_avoid": ["you need hierarchical or concurrent statecharts (this supports only flat FSMs)", "you're working outside Kotlin or Swift", "you need a maintained multi-platform state machine with active development"], "when_to_choose": ["you need a lightweight, typed finite state machine in Kotlin or Swift", "you want declarative transition definitions with side-effect handling", "you're already using Tinder's Scarlet and need its state machine dependency"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/statemachine", "repo": "Tinder/StateMachine", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "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:06:11.367979+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:11.367979+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:56:06.050707+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cc0f14e251690358e7e16a83a204134a542b564f529e1c5b2959d660ace2ff17", "fetched_at": "2026-08-28T04:06:11.367979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Tinder/StateMachine"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3015, "days_push": 772, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}