{"adoption": {"forks": 83, "observed_at": "2026-08-28T04:04:03.671268+00:00", "stars": 1229}, "canonical_url": "https://ross.abutalabs.com/products/bangle-io", "card": {"archived": false, "artifact_type": "application", "description": "A web only WYSIWYG note taking app that saves notes locally in markdown format. v2: https://app.bangle.io/", "domain": ["developer-tools", "text-editors", "web-development", "files"], "enriched": true, "function": ["editor", "markdown", "file-system", "ui-components", "plugin-system"], "health_score": 78, "homepage": "https://bangle.io", "language": "TypeScript", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["bangle-io/bangle-io"], "name": "bangle-io/bangle-io", "platform": ["browser", "cross-platform"], "pushed_at": "2026-08-09T20:09:32+00:00", "repo": "bangle-io/bangle-io", "stars": 1229, "tags": ["wysiwyg", "note-taking", "local-first", "markdown-notes", "pwa", "knowledge-graph", "offline-first", "react", "web"], "topics": ["markdown-notes", "local-first", "pwa", "markdown", "wysiwyg", "react", "webworkers", "notes", "note-taker", "knowledge-graph"], "urls": [], "use_cases": ["take notes in a Notion-like WYSIWYG editor while saving as markdown files", "edit locally stored markdown notes in the browser without installing a desktop app", "keep a personal knowledge base with backlinks and folders that stays under my control", "work on notes offline and install the app as a PWA", "avoid vendor lock-in by keeping notes in human-readable markdown", "manage thousands of markdown notes with fast performance"], "what_it_is": "Bangle.io is a browser-based WYSIWYG note-taking app that stores notes as plain Markdown files in a local folder of the user's choice. It is a progressive web app built with React and its sister rich-text editor library bangle.dev, requiring no install or signup and working fully offline.", "when_to_avoid": ["you need real-time collaboration or cloud sync across devices out of the box", "you require a native desktop application rather than a browser/PWA app", "you need databases, kanban boards, or other Notion-style structured content beyond notes", "you want mobile-first note capture on phones"], "when_to_choose": ["you want Notion-style rich text editing but plain local Markdown storage", "you need a fully offline, no-signup web app you can install as a PWA", "you want to back up or version-control notes with git since they are regular files", "you have an existing folder of Markdown notes you want to edit in place"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bangle-io", "repo": "bangle-io/bangle-io", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "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:04:03.671268+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:03.671268+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:15:05.977139+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8efcb63eea50a6bcd8f355150d29c75e8fbfb6b31ba1a42b51064dffce29b7fb", "fetched_at": "2026-08-28T04:04:03.671268+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bangle-io/bangle-io"}, {"content_hash": "b5eede5c9c5eb531d4cb1df9989f6081700428d63811044ec3f09c58b60673dd", "fetched_at": "2026-08-29T12:22:31.137448+00:00", "kind": "homepage", "missing": false, "url": "https://bangle.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2079, "days_push": 24, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}