$ account ghostfolio
Ghostfolio is an open-source wealth management application that enables individuals to track and analyze their personal investment portfolios. It supports multiple asset classes (stocks, ETFs, cryptocurrencies, bonds, real estate) and integrates with numerous financial data providers (Yahoo Finance, CoinGecko, Alpha Vantage, etc.) to automatically fetch market prices, historical data, and asset profiles. The system provides comprehensive portfolio performance calculations (ROAI, TWR, MWR), benchmark comparisons, dividend tracking, and a rule-based X-ray analysis for risk assessment (currency/asset class/regional cluster risk, emergency fund coverage, fee ratios). It also includes a FIRE calculator, watchlist, and import/export functionality for activities. The architecture follows a full-stack monorepo pattern using Nx, with an Angular 22 frontend (standalone components, Material Design, Chart.js) and a NestJS 11 backend (Prisma ORM with PostgreSQL, Redis caching, Bull queues for background data gathering). Authentication supports JWT, OAuth (Google, OIDC), API keys, and WebAuthn passkeys. The system is self-hostable via Docker Compose and includes a premium subscription tier managed through Stripe. The codebase is modular with shared libraries (`libs/common` for DTOs, interfaces, utilities; `libs/ui` for reusable Angular components) and a clear separation of concerns across API modules, services, and queue processors. Key highlights include a pluggable data provider abstraction, an abstract portfolio calculator with caching and retry logic, a comprehensive permission and scope system for fine-grained access control, and a rich UI component library with Storybook documentation. The project is actively maintained with frequent releases, extensive Prisma migrations, and a large test suite for portfolio calculations and import validation. While the codebase shows some technical drift (proliferation of environment variables, deprecated endpoints, and multiple data provider integrations), the overall engineering quality is strong, with well-structured modules and reusable patterns that could be extracted for other financial applications.