{"adoption": {"forks": 1279, "observed_at": "2026-08-28T04:10:28.799897+00:00", "stars": 9191}, "canonical_url": "https://ross.abutalabs.com/products/ghostfolio", "card": {"archived": false, "artifact_type": "application", "description": "Open Source Wealth Management Software. Angular + NestJS + Prisma + Nx + TypeScript 🤍", "domain": ["fintech", "self-hosted", "web-development"], "enriched": true, "function": ["analytics", "data-visualization", "charts", "self-hosted"], "health_score": 100, "homepage": "https://Ghostfol.io", "language": "TypeScript", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["ghostfolio/ghostfolio"], "name": "ghostfolio/ghostfolio", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2026-08-26T10:07:27+00:00", "repo": "ghostfolio/ghostfolio", "stars": 9191, "tags": ["portfolio-tracker", "wealth-management", "stocks", "etf", "cryptocurrency", "angular", "nestjs", "prisma", "pwa", "personal-finance", "investing", "web-server", "docker", "nodejs"], "topics": ["wealth-management", "web", "software", "angular", "typescript", "prisma", "portfolio", "etf", "stock", "nestjs", "tracker", "oss", "finance", "fintech", "investing", "trading", "personal-finance", "hacktoberfest", "ghostfolio"], "urls": [], "use_cases": ["track my stock and ETF portfolio across multiple brokers", "self-hosted alternative to personal finance spreadsheets", "analyze portfolio composition and diversification", "track cryptocurrency investments alongside stocks", "calculate portfolio performance like ROAI and returns over time", "import and export investment transactions", "privacy-focused wealth management with data ownership"], "what_it_is": "Ghostfolio is an open source wealth management web application for tracking stocks, ETFs, and cryptocurrencies across multiple platforms. Built with Angular, NestJS, Prisma, and TypeScript, it offers portfolio performance analytics, charts, and risk analysis for personal use.", "when_to_avoid": ["you need professional tax reporting or broker-integrated auto-sync of transactions", "you want a mobile-native app rather than a web/PWA experience", "you need multi-user or business/accounting features rather than personal wealth management"], "when_to_choose": ["you want a self-hosted, privacy-focused portfolio tracker with full data ownership", "you invest in stocks, ETFs, or crypto across multiple platforms and want unified tracking", "you prefer open source over spreadsheets or closed SaaS finance apps"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ghostfolio", "repo": "ghostfolio/ghostfolio", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.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:10:28.799897+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:28.799897+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:23:19.683002+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2329803de0130004b134d14324b3fde0ec97b9a4f32843a570ad540788593066", "fetched_at": "2026-08-28T04:10:28.799897+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ghostfolio/ghostfolio"}, {"content_hash": "cede64ee4fb33f5d04994ec7be6ecf1f6b52d936af1a73e7a19e45dc033df73e", "fetched_at": "2026-08-29T08:23:35.420022+00:00", "kind": "homepage", "missing": false, "url": "https://Ghostfol.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1968, "days_push": 7, "days_rel": 8, "gap_med": 2, "n_releases_24m": 232}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}