OpenRadar

Project · TypeScript · Added June 15, 2026

ghostfolio

Open source wealth management software built with Angular, NestJS, Prisma, and TypeScript — a production-grade fullstack reference architecture.

8,707 stars 1,189 forks View on GitHub

Ghostfolio

Overview

Ghostfolio is an open source wealth management application that tracks stocks, ETFs, and cryptocurrencies. It has 8,700+ GitHub stars and is releasing new versions almost daily — v3.11.0 dropped on June 14, 2026, with v3.10.0 the day before. That velocity is rare for an open source project this mature.

The project was started by Thomas Kaul in 2021 and has grown into a serious fullstack TypeScript reference architecture. The backend runs on NestJS with PostgreSQL and Prisma, the frontend is Angular with Angular Material, and the whole thing is organized as an Nx monorepo. If you’re building anything with NestJS, this repo is worth studying regardless of whether you care about finance.

The core problem Ghostfolio solves is deceptively simple: giving people a self-hosted, privacy-respecting way to track investments across multiple platforms. Most alternatives are either closed-source SaaS products that own your financial data, or spreadsheet-based workflows that don’t scale. Ghostfolio sits in between — a real application with charts, analytics, and multi-account management that runs on your own infrastructure.

Why it matters

The fullstack TypeScript ecosystem has matured significantly, but production-grade open source applications that demonstrate best practices are still scarce. You can find plenty of todo apps and starter templates, but few projects show how to actually structure a real NestJS backend with proper authentication, background jobs, caching, and database migrations at scale. Ghostfolio does all of this, with five years of production use behind it.

For developers working with NestJS specifically, this is one of the most comprehensive real-world implementations available. The Prisma schema alone is instructive — it models complex financial relationships (accounts, holdings, orders, platforms, tags) with proper foreign keys and indexing. The Nx workspace structure shows how to organize a monorepo with shared libraries, separate apps, and proper build caching. These patterns transfer directly to enterprise projects.

The project also demonstrates something important about the Angular + NestJS combination that gets overlooked in the React-dominated discourse. Angular’s opinionated structure actually works well for large applications with complex state management needs. Ghostfolio’s use of Angular Material, lazy-loaded modules, and service-based architecture is a masterclass in building maintainable Angular apps.

Key Features

NestJS Backend with Domain-Driven Design. The backend follows DDD principles with clear separation between controllers, services, and data access layers. Each domain (accounts, holdings, orders, user) has its own module with proper encapsulation. This structure scales cleanly as the application grows — adding a new financial instrument type doesn’t require touching unrelated code.

Prisma ORM with PostgreSQL. The data layer uses Prisma for type-safe database access with PostgreSQL. The schema models complex financial relationships including multi-currency support, transaction history, and portfolio snapshots. Prisma’s migration system handles schema evolution cleanly, and the generated types ensure compile-time safety across the entire stack.

Nx Monorepo Architecture. The entire project is organized as an Nx workspace with shared libraries, separate frontend and backend applications, and proper dependency management. Build caching makes development fast — only affected projects rebuild when you change code. This structure is directly applicable to any enterprise TypeScript monorepo.

Self-Hosting with Docker. Ghostfolio provides official Docker images for linux/amd64, linux/arm/v7, and linux/arm64. The docker-compose setup includes PostgreSQL, Redis, and the Ghostfolio application in a single command. This isn’t a demo deployment — it’s production-ready with proper health checks and volume mounts.

Progressive Web App (PWA). The frontend is a PWA with mobile-first design, meaning it works offline and installs like a native app on phones. Angular’s service worker integration handles caching and background sync. The responsive layout adapts cleanly from mobile to desktop without separate codebases.

Portfolio Analytics and Risk Assessment. Beyond simple tracking, Ghostfolio provides Return on Average Investment (ROAI) calculations across multiple time periods, portfolio composition analysis, and static risk assessment. The charting system uses historical data to show performance trends. These aren’t toy visualizations — they’re the kind of financial analytics you’d expect from a commercial product.

Multi-Account and Multi-Currency Support. Users can manage multiple brokerage accounts with different base currencies. The system handles currency conversion transparently when calculating portfolio totals. Transaction import/export supports CSV formats from major brokerages. This multi-tenancy pattern is relevant for any SaaS-style application.

Use Cases

Pros and Cons

Pros:

Cons:

Getting Started

# Clone the repository
git clone https://github.com/ghostfolio/ghostfolio.git
cd ghostfolio

# Quick start with Docker (recommended)
docker compose up -d

# Access the application at http://localhost:3333
# Register a new account and configure your first portfolio

# For development (requires Node.js 20+, pnpm)
pnpm install
pnpm run start:dev

# Run database migrations
pnpm run database:migration:generate
pnpm run database:migration:run

# Build for production
pnpm run build:production

Alternatives

Maybe Finance — An open source personal finance tracker built with Ruby on Rails and React. Maybe Finance focuses more on budgeting and expense tracking rather than investment portfolio management. Choose Maybe Finance if you need expense categorization and budgeting features; choose Ghostfolio if your primary need is tracking stock and crypto investments.

Portfolio Performance — A Java-based desktop application for portfolio tracking and analysis. It’s been around since 2012 and has deep support for European financial instruments. Choose Portfolio Performance if you prefer a desktop app and need advanced reporting for European tax purposes; choose Ghostfolio if you want a web-based, self-hosted solution with a modern TypeScript stack.

Ghostfolio Premium — The hosted SaaS version of Ghostfolio itself. It eliminates the self-hosting overhead and includes professional data provider integrations. Choose the Premium version if you want the Ghostfolio experience without managing infrastructure; choose self-hosted if you want full data ownership and control over your financial information.

Verdict

Ghostfolio is the best open source example of a production NestJS + Angular + Prisma application I’ve found. The codebase quality is consistently high, the development velocity is impressive, and the self-hosting story actually works. If you’re building anything with NestJS, spend an afternoon reading through the module structure, the Prisma schema, and the Nx workspace configuration. The patterns you’ll learn transfer directly to enterprise projects, even if you never track a single stock. The 8,700-star count and daily release cadence tell you this project has real momentum — it’s not going anywhere.

Related

Shared tags