diff --git a/CHANGELOG.md b/CHANGELOG.md index 1076323a4..186e974b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Next +### Added + +- Added a blog post: _Announcing Ghostfolio 3.0_ + ### Changed - Migrated from _Material Design_ 2 to _Material Design_ 3 diff --git a/apps/api/src/app/endpoints/sitemap/sitemap.service.ts b/apps/api/src/app/endpoints/sitemap/sitemap.service.ts index e7e05330f..cf4b5052f 100644 --- a/apps/api/src/app/endpoints/sitemap/sitemap.service.ts +++ b/apps/api/src/app/endpoints/sitemap/sitemap.service.ts @@ -120,6 +120,10 @@ export class SitemapService { { languageCode: 'en', routerLink: ['2025', '11', 'black-weeks-2025'] + }, + { + languageCode: 'en', + routerLink: ['2026', '04', 'ghostfolio-3'] } ] .map(({ languageCode, routerLink }) => { diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index c958718f6..2b8820e81 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -83,6 +83,10 @@ const locales = { '/en/blog/2025/11/black-weeks-2025': { featureGraphicPath: 'assets/images/blog/black-weeks-2025.jpg', title: `Black Weeks 2025 - ${title}` + }, + '/en/blog/2026/04/ghostfolio-3': { + featureGraphicPath: 'assets/images/blog/ghostfolio-3.jpg', + title: `Announcing Ghostfolio 3.0 - ${title}` } }; diff --git a/apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.component.ts b/apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.component.ts new file mode 100644 index 000000000..63cd09d9c --- /dev/null +++ b/apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.component.ts @@ -0,0 +1,21 @@ +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +@Component({ + host: { class: 'page' }, + imports: [MatButtonModule, RouterModule], + selector: 'gf-ghostfolio-3-page', + templateUrl: './ghostfolio-3-page.html' +}) +export class Ghostfolio3PageComponent { + public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${publicRoutes.pricing.path}`; + public routerLinkAbout = publicRoutes.about.routerLink; + public routerLinkAboutChangelog = + publicRoutes.about.subRoutes.changelog.routerLink; + public routerLinkBlog = publicRoutes.blog.routerLink; + public routerLinkFeatures = publicRoutes.features.routerLink; + public routerLinkMarkets = publicRoutes.markets.routerLink; +} diff --git a/apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.html b/apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.html new file mode 100644 index 000000000..86e25efc6 --- /dev/null +++ b/apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.html @@ -0,0 +1,281 @@ +
+
+
+
+
+

Ghostfolio 3.0

+
2026-04-22
+ Ghostfolio 3.0 Teaser +
+
+

+ Since the + last major version + of Ghostfolio, we have shipped + over 250 releases. The project now counts 275+ contributors from + around the globe and has surpassed 2’300’000 pulls on Docker Hub. + These milestones reflect steady adoption and our focus on + simplifying investment tracking while prioritizing user privacy. +

+

+ Today’s release marks the next major version in our Open Source + Software (OSS) journey. +

+
+
+

Introducing Ghostfolio 3.0

+

+ Ghostfolio 3.0 is the evolution of our + open source wealth management software, with meaningful improvements for both users and developers. We + have refreshed the user interface, expanded analytics, improved + stability, added more languages, and updated the technology stack to + support these changes. Here is a closer look at a selection of what + you can expect from this + release, alongside + many smaller additions and enhancements. +

+

Refreshed User Interface

+

+ Ghostfolio 3.0 comes with a refreshed user interface that modernizes + the visual appearance of the application. The updated design is + cleaner, with refined components and improved consistency across the + platform. +

+

Comprehensive Analytics

+

+ This release provides a broader set of tools to help you understand + your portfolio. Ghostfolio X-ray uses static analysis to highlight + potential issues and risks, with rules that can now be customized to + match your investment strategy. +

+

Extended Multilanguage Support

+

+ Largely driven by contributions from the community, Ghostfolio now + supports more languages than ever. The application is now available + in a growing number of languages, making it accessible to a broader + audience of investors around the world. +

+

Reliable Stability

+

+ A wealth management platform needs to be reliable. With Ghostfolio + 3.0, we have further strengthened the robustness of our + architecture, so you can rely on Ghostfolio across different + market conditions. +

+

Empowering Self-Hosting

+

+ This release simplifies and extends the self-hosting experience. A + major addition is that self-hosters can now fully benefit from + Ghostfolio Premium to + make use of a professional data provider. This gives you full + control over your infrastructure while still giving you access to + high-quality market data for portfolio analytics. +

+

Updated Technology Stack

+

+ Under the hood, Ghostfolio 3.0 has been upgraded to + Angular 21, + Nest.js 11, + Prisma 7, and + Nx 22. Keeping the + technology stack up to date helps us provide a solid foundation for + users and developers. +

+
+
+

Thriving Ghostfolio Community

+

+ Ghostfolio is built in public, and its community plays a central + role in shaping the open source project. Here are some highlights of + the community growth: +

+
    +
  • + Ghostfolio has accumulated 8’000+ stars on + GitHub, reflecting the growing interest and trust in the project. +
  • +
  • + The + Slack + community has grown to over 1’250 members, where + investors exchange ideas and help each other. +
  • +
  • + Over + 700 investors and personal finance enthusiasts + follow Ghostfolio on + X + (formerly Twitter) for updates and discussions. +
  • +
+

+ There is much more to come. If you are not part of the community + yet, we would love to have you on board. +

+

+ Join our Slack community: Connect with fellow + investors, share insights, and stay updated by joining our + Slack + community. +

+

+ Follow us on X: For release updates and market + insights, follow + Ghostfolio on X + to stay informed. +

+

+ Give us a Star: If Ghostfolio has been useful to + you, please consider giving us a star on + GitHub. Your support helps us continue improving Ghostfolio. +

+

+ Become a contributor: Interested in getting + involved? We welcome contributions from developers who are + passionate about open source and personal finance. + Join our developer community + and help shape the future of Ghostfolio. +

+
+
+

+ Ghostfolio 3.0 is the result of countless contributions, feedback, + and shared passion for open source and personal finance. Whether you + have been with us from the start or are just discovering the + project, thank you for being part of this community. +

+

Thomas from Ghostfolio

+
+
+
    +
  • + Angular +
  • +
  • + Announcement +
  • +
  • + Collaboration +
  • +
  • + Community +
  • +
  • + Contribution +
  • +
  • + Evolution +
  • +
  • + Fintech +
  • +
  • + Ghostfolio +
  • +
  • + Ghostfolio 3.0 +
  • +
  • + Ghostfolio Premium +
  • +
  • + Internationalization +
  • +
  • + Investment +
  • +
  • + Nest.js +
  • +
  • + Nx +
  • +
  • + Open Source +
  • +
  • + OSS +
  • +
  • + Personal Finance +
  • +
  • + Platform +
  • +
  • + Portfolio +
  • +
  • + Prisma +
  • +
  • + Privacy +
  • +
  • + Release +
  • +
  • + Self-Hosting +
  • +
  • + Software +
  • +
  • + Stack +
  • +
  • + Technology +
  • +
  • + Wealth Management +
  • +
+
+ +
+
+
+
diff --git a/apps/client/src/app/pages/blog/blog-page.html b/apps/client/src/app/pages/blog/blog-page.html index e84cb303d..d60fd1bcf 100644 --- a/apps/client/src/app/pages/blog/blog-page.html +++ b/apps/client/src/app/pages/blog/blog-page.html @@ -8,6 +8,32 @@ finance + + + + + @if (hasPermissionForSubscription) { diff --git a/apps/client/src/app/pages/blog/blog-page.routes.ts b/apps/client/src/app/pages/blog/blog-page.routes.ts index 90d27bdfb..9afb35d46 100644 --- a/apps/client/src/app/pages/blog/blog-page.routes.ts +++ b/apps/client/src/app/pages/blog/blog-page.routes.ts @@ -218,5 +218,14 @@ export const routes: Routes = [ (c) => c.BlackWeeks2025PageComponent ), title: 'Black Weeks 2025' + }, + { + canActivate: [AuthGuard], + path: '2026/04/ghostfolio-3', + loadComponent: () => + import('./2026/04/ghostfolio-3/ghostfolio-3-page.component').then( + (c) => c.Ghostfolio3PageComponent + ), + title: 'Ghostfolio 3.0' } ]; diff --git a/apps/client/src/assets/images/blog/ghostfolio-3.jpg b/apps/client/src/assets/images/blog/ghostfolio-3.jpg new file mode 100644 index 000000000..2a2c787e8 Binary files /dev/null and b/apps/client/src/assets/images/blog/ghostfolio-3.jpg differ