{"adoption": {"forks": 1114, "observed_at": "2026-08-28T04:11:09.554058+00:00", "stars": 15286}, "canonical_url": "https://ross.abutalabs.com/products/xournalpp", "card": {"archived": false, "artifact_type": "application", "description": "Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.", "domain": ["developer-tools", "education", "pdf", "cross-platform"], "enriched": true, "function": ["pdf-viewer", "gui", "image-processing", "audio-processing", "plugin-system"], "health_score": 99, "homepage": "https://xournalpp.github.io", "language": "C++", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["xournalpp/xournalpp"], "name": "xournalpp/xournalpp", "platform": ["windows", "cross-platform"], "pushed_at": "2026-08-23T04:28:34+00:00", "repo": "xournalpp/xournalpp", "stars": 15286, "tags": ["handwriting", "note-taking", "pdf-annotation", "stylus", "wacom", "gtk3", "latex", "whiteboarding", "linux", "macos", "desktop"], "topics": ["notetaking", "crossplatform", "gtk3", "c-plus-plus", "pen", "notes", "pdf-viewer", "pdf"], "urls": [], "use_cases": ["take handwritten notes with a stylus on a tablet", "annotate and highlight PDF documents", "record audio while taking lecture notes", "draw diagrams and shapes for study notes", "insert LaTeX equations into notes", "export handwritten notes to PDF or PNG", "use a drawing tablet for digital whiteboarding"], "what_it_is": "Xournal++ is a cross-platform handwriting notetaking application written in C++ with GTK3, supporting pressure-sensitive stylus input from devices like Wacom tablets. It allows annotating PDFs, drawing with various tools, LaTeX formula insertion, audio recording synced to notes, and exporting to PDF, SVG, and PNG.", "when_to_avoid": ["you need collaborative real-time editing of notes", "you want a cloud-synced note system with plain-text/markdown output", "you need a mobile or web-based note-taking app"], "when_to_choose": ["you need pressure-sensitive pen input on Linux, macOS, or Windows", "you want to annotate PDFs with handwriting and highlights", "you need LaTeX math support in handwritten notes", "you want audio recordings synced to your notes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xournalpp", "repo": "xournalpp/xournalpp", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.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:11:09.554058+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:09.554058+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:06:23.549542+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "33dc70278bb370fb62aaa1a831aae70056cbce0cc2bc6c22ea0b32a0f5ca19a8", "fetched_at": "2026-08-28T04:11:09.554058+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xournalpp/xournalpp"}, {"content_hash": "b58a4404acb95e74c4e9852feb067ce636ea2362fbb5e80a7bcc8e765b93ea27", "fetched_at": "2026-08-29T08:04:16.255529+00:00", "kind": "homepage", "missing": false, "url": "https://xournalpp.github.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 84}, "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": 4773, "days_push": 10, "days_rel": 24, "gap_med": 43, "n_releases_24m": 14}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}