{"adoption": {"forks": 150, "observed_at": "2026-08-28T04:05:03.828576+00:00", "stars": 1561}, "canonical_url": "https://ross.abutalabs.com/products/scratch", "card": {"archived": false, "artifact_type": "application", "description": "A minimalist, offline-first markdown note-taking app", "domain": ["developer-tools", "text-editors", "cross-platform"], "enriched": true, "function": ["markdown", "editor", "documentation"], "health_score": 97, "homepage": null, "language": "TypeScript", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["erictli/scratch"], "name": "erictli/scratch", "platform": ["windows", "cross-platform"], "pushed_at": "2026-07-28T01:12:57+00:00", "repo": "erictli/scratch", "stars": 1561, "tags": ["note-taking", "offline-first", "wysiwyg", "wikilinks", "mermaid", "katex", "tauri", "git-integration", "ai-editing", "macos", "linux", "desktop"], "topics": [], "urls": [], "use_cases": ["take markdown notes offline without an account", "edit markdown files with a WYSIWYG editor", "link notes together with wikilinks", "write notes with mermaid diagrams and math equations", "sync notes across devices using git", "edit notes with local AI agents like Claude Code or Ollama", "preview markdown files by drag-and-drop"], "what_it_is": "Scratch is a minimalist, offline-first markdown note-taking desktop app built with Tauri. Notes are stored as plain .md files with WYSIWYG editing, wikilinks, Mermaid diagrams, KaTeX math, and optional Git-based sync.", "when_to_avoid": ["you need cloud sync or mobile apps", "you rely on a large plugin ecosystem", "you need collaborative real-time editing"], "when_to_choose": ["you want a lightweight alternative to Obsidian or Notion", "you need offline-first notes stored as plain markdown files you own", "you want git-based version control and multi-device sync", "you prefer keyboard-driven editing with a command palette"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/scratch", "repo": "erictli/scratch", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "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:05:03.828576+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:03.828576+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:29:43.963127+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "130da1e6259cb487b9677dde6b535549b66e464228699809c2010a12ffccf361", "fetched_at": "2026-08-28T04:05:03.828576+00:00", "kind": "readme", "missing": false, "url": "https://github.com/erictli/scratch"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 94, "longevity": 15, "rhythm": 95}, "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": 214, "days_push": 37, "days_rel": 36, "gap_med": 2, "n_releases_24m": 12}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}