{"adoption": {"forks": 711, "observed_at": "2026-08-28T04:10:23.694138+00:00", "stars": 8595}, "canonical_url": "https://ross.abutalabs.com/products/florisboard", "card": {"archived": false, "artifact_type": "application", "description": "An open-source keyboard for Android which respects your privacy. Currently in beta.", "domain": ["android-tools", "privacy", "developer-tools"], "enriched": true, "function": ["gui", "internationalization", "privacy"], "health_score": 97, "homepage": "https://florisboard.org", "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["florisboard/florisboard"], "name": "florisboard/florisboard", "platform": ["jvm"], "pushed_at": "2026-08-26T22:02:30+00:00", "repo": "florisboard/florisboard", "stars": 8595, "tags": ["keyboard", "input-method", "open-source-keyboard", "foss", "customizable", "localization", "android"], "topics": ["keyboard", "android", "kotlin", "kotlin-android", "input-method"], "urls": [], "use_cases": ["replace Gboard with a privacy-respecting keyboard", "open-source keyboard for Android without tracking", "customizable keyboard with themes and extensions", "type in multiple languages on Android", "keyboard that works offline without internet permissions", "foss alternative to proprietary Android keyboards"], "what_it_is": "FlorisBoard is a free and open-source keyboard app for Android 8.0+ built in Kotlin, focused on being modern, customizable, and privacy-respecting. It is currently in beta and distributed via F-Droid, Google Play beta testing, Obtainium, and APK releases.", "when_to_avoid": ["you need mature predictive text and cloud-based features on par with Gboard", "you require voice typing or advanced autocorrect out of the box", "you need a stable, non-beta release for production daily use"], "when_to_choose": ["you want a fully open-source Android keyboard that respects privacy", "you need extensive theming and extension customization", "you prefer F-Droid or APK distribution without Google services"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/florisboard", "repo": "florisboard/florisboard", "role": "main", "score": 85}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "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:10:23.694138+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:23.694138+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:26:08.854175+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "90657193a3f8dbfd00e94b7b134d6f42589138f0da4d46bcc17851df82ad2432", "fetched_at": "2026-08-28T04:10:23.694138+00:00", "kind": "readme", "missing": false, "url": "https://github.com/florisboard/florisboard"}, {"content_hash": "f90583df5f0e2f385a31b6a9c2ebb2c2df216db59dbc2bd91202694846060e9e", "fetched_at": "2026-08-29T08:26:24.215539+00:00", "kind": "homepage", "missing": false, "url": "https://florisboard.org"}, {"content_hash": "5924b1d782360dfcaafe83dda89b47eae4d307fda1607994572915eb13d6d16e", "fetched_at": "2026-08-29T08:26:24.224374+00:00", "kind": "site_page", "missing": false, "url": "https://florisboard.org/installation"}, {"content_hash": "62a0b7d3ed6c164e43b8946218ad3ea6a024d1ea49055f22a13456e1bdd23157", "fetched_at": "2026-08-29T08:26:24.226180+00:00", "kind": "site_page", "missing": false, "url": "https://docs.florisboard.org"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 59}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2338, "days_push": 7, "days_rel": 278, "gap_med": 25, "n_releases_24m": 10}, "score": 85, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}