{"adoption": {"forks": 149, "observed_at": "2026-08-28T04:05:07.316608+00:00", "stars": 1584}, "canonical_url": "https://ross.abutalabs.com/products/swashbucklerdiary", "card": {"archived": false, "artifact_type": "application", "description": "侠客日记是一个开源、跨平台的本地日记app，使用Blazor开发，支持Android，Windows，macOS，Web，Linux。\"SwashbucklerDiary\" is an open source cross-platform local diary app using Blazor , support Android，Windows，macOS，Web，Linux.", "domain": ["developer-tools", "cross-platform", "privacy", "web-development"], "enriched": true, "function": ["gui", "markdown", "file-system", "backup", "internationalization"], "health_score": 95, "homepage": null, "language": "C#", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Yu-Core/SwashbucklerDiary"], "name": "Yu-Core/SwashbucklerDiary", "platform": ["windows", "cross-platform", "dotnet"], "pushed_at": "2026-08-15T14:15:56+00:00", "repo": "Yu-Core/SwashbucklerDiary", "stars": 1584, "tags": ["diary-app", "blazor", "blazor-hybrid", "maui", "local-first", "offline", "markdown-editor", "webdav", "privacy-mode", "android", "macos", "linux", "web-server"], "topics": ["csharp", "maui-blazor", "aspnetcore", "blazor", "blazor-hybrid", "blazor-webassembly"], "urls": [], "use_cases": ["keep a private offline diary on my phone and desktop", "write journal entries in markdown with live preview", "diary app that stores everything locally without an account", "back up my journal via webdav", "sync diary entries between devices on the same network", "journal app with tags, mood, weather, and location", "export diary entries to multiple formats", "open-source cross-platform journaling app"], "what_it_is": "SwashbucklerDiary is an open-source, cross-platform local diary app built with Blazor (Hybrid, Server, and WebAssembly) and .NET MAUI. All data is stored locally with no network required, supporting Android, Windows, macOS, Web, and Linux.", "when_to_avoid": ["you need cloud sync across different networks or multi-device cloud backup beyond webdav", "you want collaborative or shared journaling", "you need a mobile-first native UI rather than a Blazor-based interface"], "when_to_choose": ["you want a privacy-focused, local-first diary with no cloud dependency", "you need one journaling app across Android, Windows, macOS, Linux, and Web", "you want markdown support with math, charts, mind maps, and media attachments", "you prefer open-source software with self-controlled data"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/swashbucklerdiary", "repo": "Yu-Core/SwashbucklerDiary", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "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:07.316608+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:07.316608+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:55:56.355529+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8e4ac8083e47745162170fcde5bc9a5e545dc485df1642d838d9850dd6015718", "fetched_at": "2026-08-28T04:05:07.316608+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Yu-Core/SwashbucklerDiary"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 96, "rhythm": 48}, "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": 1349, "days_push": 18, "days_rel": 266, "gap_med": 36.5, "n_releases_24m": 9}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}