diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0f356bd4..1ab9e97ea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Added
+
+- Added a blog post: _Ghostfolio reaches 1’000 Stars on GitHub_
+- Added a breadcrumb navigation to the blog post pages
+
### Changed
- Refactored the calculation of the chart
diff --git a/apps/api/src/app/frontend.middleware.ts b/apps/api/src/app/frontend.middleware.ts
index ea860b0e1..baeb5d66d 100644
--- a/apps/api/src/app/frontend.middleware.ts
+++ b/apps/api/src/app/frontend.middleware.ts
@@ -87,6 +87,13 @@ export class FrontendMiddleware implements NestMiddleware {
) {
featureGraphicPath = 'assets/images/blog/ghostfolio-x-umbrel.png';
title = `Ghostfolio meets Umbrel - ${title}`;
+ } else if (
+ request.path.startsWith(
+ '/en/blog/2023/03/ghostfolio-reaches-1000-stars-on-github'
+ )
+ ) {
+ featureGraphicPath = 'assets/images/blog/1000-stars-on-github.jpg';
+ title = `Ghostfolio reaches 1’000 Stars on GitHub - ${title}`;
}
if (
diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts
index b3623e339..dd5ba3c50 100644
--- a/apps/client/src/app/app-routing.module.ts
+++ b/apps/client/src/app/app-routing.module.ts
@@ -130,6 +130,13 @@ const routes: Routes = [
'./pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.module'
).then((m) => m.GhostfolioMeetsUmbrelPageModule)
},
+ {
+ path: 'blog/2023/03/ghostfolio-reaches-1000-stars-on-github',
+ loadChildren: () =>
+ import(
+ './pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.module'
+ ).then((m) => m.ThousandStarsOnGitHubPageModule)
+ },
{
path: 'demo',
loadChildren: () =>
diff --git a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html
index 37e79dfaa..ae03b1e72 100644
--- a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html
+++ b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html
@@ -197,6 +197,16 @@
+
+
+
+ Blog
+
+
+ Hallo Ghostfolio
+
+
+
diff --git a/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html b/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html
index 4a50e4475..891d91631 100644
--- a/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html
+++ b/apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html
@@ -177,6 +177,16 @@
+
+
+
+ Blog
+
+
+ Hello Ghostfolio
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html b/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html
index ce1976cc8..902aee546 100644
--- a/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html
+++ b/apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html
@@ -174,6 +174,16 @@
+
+
+
+ Blog
+
+
+ Ghostfolio: First months in Open Source
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html b/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html
index d60041586..54ede8fef 100644
--- a/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html
+++ b/apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html
@@ -177,6 +177,16 @@
+
+
+
+ Blog
+
+
+ Ghostfolio meets Internet Identity
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html b/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html
index 63f475380..72dec1fad 100644
--- a/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html
+++ b/apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html
@@ -203,6 +203,16 @@
+
+
+
+ Blog
+
+
+ How do I get my finances in order?
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html b/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html
index e9418c325..474ec4a04 100644
--- a/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html
+++ b/apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html
@@ -186,6 +186,16 @@
+
+
+
+ Blog
+
+
+ 500 Stars on GitHub
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html
index 5807819e5..788cc8115 100644
--- a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html
+++ b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html
@@ -172,6 +172,16 @@
+
+
+
+ Blog
+
+
+ Hacktoberfest 2022
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html
index c09981712..53726b54c 100644
--- a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html
+++ b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html
@@ -132,6 +132,16 @@
+
+
+
+ Blog
+
+
+ Black Friday 2022
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html b/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html
index 45a3c5a18..bbaa3d4c4 100644
--- a/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html
+++ b/apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html
@@ -162,6 +162,16 @@
+
+
+
+ Blog
+
+
+ The importance of tracking your personal finances
+
+
+
diff --git a/apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html b/apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html
index ea62e316e..4145657fe 100644
--- a/apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html
+++ b/apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html
@@ -172,6 +172,16 @@
+
+
+
+ Blog
+
+
+ Ghostfolio auf Sackgeld.com vorgestellt
+
+
+
diff --git a/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html b/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html
index 39c71cf53..0191d777e 100644
--- a/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html
+++ b/apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html
@@ -194,6 +194,16 @@
+
+
+
+ Blog
+
+
+ Ghostfolio meets Umbrel
+
+
+
diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page-routing.module.ts b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page-routing.module.ts
new file mode 100644
index 000000000..f5d2fca4f
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page-routing.module.ts
@@ -0,0 +1,20 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
+
+import { ThousandStarsOnGitHubPageComponent } from './1000-stars-on-github-page.component';
+
+const routes: Routes = [
+ {
+ canActivate: [AuthGuard],
+ component: ThousandStarsOnGitHubPageComponent,
+ path: '',
+ title: 'Ghostfolio reaches 1’000 Stars on GitHub'
+ }
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule]
+})
+export class ThousandStarsOnGitHubRoutingModule {}
diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts
new file mode 100644
index 000000000..331752224
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts
@@ -0,0 +1,9 @@
+import { Component } from '@angular/core';
+
+@Component({
+ host: { class: 'page' },
+ selector: 'gf-1000-stars-on-github-page',
+ styleUrls: ['./1000-stars-on-github-page.scss'],
+ templateUrl: './1000-stars-on-github-page.html'
+})
+export class ThousandStarsOnGitHubPageComponent {}
diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html
new file mode 100644
index 000000000..2738d0ec7
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html
@@ -0,0 +1,201 @@
+
+
+
+
+
+
Ghostfolio reaches 1’000 Stars on GitHub
+
2023-03-25
+
+
+
+
+ Ghostfolio , the open-source
+ personal finance management software, has hit a major milestone by
+ reaching 1’000 stars on
+ GitHub . This
+ blog post reflects on Ghostfolio’s recent achievements, highlighting
+ its open-source community collaboration, platform expansions, and
+ future developments.
+
+
+
+ Open Source community collaboration
+
+ Since its launch in 2021, the project has accumulated over 100’000
+ pulls from
+ Docker Hub
+ and received contributions from 38 developers and counting. These
+ efforts have resulted in a robust and user-friendly platform that
+ empowers busy people to take control of their personal finances. In
+ addition, Ghostfolio has attracted over 250 members from around the
+ world to its
+ Slack community, where
+ they can connect and share ideas.
+
+
+
+ The adoption of Ghostfolio highlights the power of open-source
+ software and the value of community-driven development, which has
+ definitely exceeded all our expectations.
+
+
+ Ghostfolio’s open-source code allows anyone to contribute to its
+ development, review its progress, and suggest improvements. The
+ platform’s clean and intuitive graphical interface guides users
+ through the process of
+ tracking their assets ,
+ such as stocks, ETFs, or cryptocurrencies.
+
+
+
+ Platform integrations and internationalization
+
+ Thanks to the work and dedication of the open-source community,
+ Ghostfolio has expanded onto platforms like
+ Umbrel and
+ Unraid .
+
+
+ These self-hosting platforms allow users to run applications on
+ their own hardware rather than rely on
+ SaaS offerings . As a
+ result, Ghostfolio has become accessible to an even wider range of
+ users who would like to take control of their financial management.
+
+
+ Additionally, the application has been translated into Dutch,
+ French, German, Italian and Spanish for users who prefer to use
+ Ghostfolio in their native language.
+
+
+
+ What’s next for Ghostfolio?
+
+ As the project continues to evolve, we can expect to see even more
+ exciting developments and innovations around Ghostfolio in the areas
+ of data import and portfolio analysis.
+
+
+ We are honored to be a part of this vibrant and growing community,
+ and we look forward to collaborating and learning together. If you
+ are a web developer and interested in personal finance, please join
+ our
+ Slack channel or connect
+ with @ghostfolio_ on
+ Twitter. We are happy to discuss ideas and get you involved.
+
+ Thank you for all your feedback and support.
+
+ Here’s to many more stars!
+ Thomas from Ghostfolio
+
+
+
+
+
+ Achievement
+
+
+ Asset
+
+
+ BuildInPublic
+
+
+ Community
+
+
+ Cryptocurrency
+
+
+ Development
+
+
+ ETF
+
+
+ Finance
+
+
+ Fintech
+
+
+ Ghostfolio
+
+
+ GitHub
+
+
+ i18n
+
+
+ Innovation
+
+
+ Internationalization
+
+
+ Investment
+
+
+ Milestone
+
+
+ Open Source
+
+
+ OSS
+
+
+ Personal Finance
+
+
+ Progress
+
+
+ SaaS
+
+
+ Software
+
+
+ Tool
+
+
+ Umbrel
+
+
+ Unraid
+
+
+ Wealth
+
+
+ Wealth Management
+
+
+ Web3
+
+
+
+
+
+
+ Blog
+
+
+ Ghostfolio reaches 1’000 Stars on GitHub
+
+
+
+
+
+
+
diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.module.ts b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.module.ts
new file mode 100644
index 000000000..132d35ec4
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.module.ts
@@ -0,0 +1,13 @@
+import { CommonModule } from '@angular/common';
+import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
+import { RouterModule } from '@angular/router';
+
+import { ThousandStarsOnGitHubRoutingModule } from './1000-stars-on-github-page-routing.module';
+import { ThousandStarsOnGitHubPageComponent } from './1000-stars-on-github-page.component';
+
+@NgModule({
+ declarations: [ThousandStarsOnGitHubPageComponent],
+ imports: [CommonModule, ThousandStarsOnGitHubRoutingModule, RouterModule],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+})
+export class ThousandStarsOnGitHubPageModule {}
diff --git a/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.scss b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.scss
new file mode 100644
index 000000000..5d4e87f30
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.scss
@@ -0,0 +1,3 @@
+:host {
+ display: block;
+}
diff --git a/apps/client/src/app/pages/blog/blog-page.html b/apps/client/src/app/pages/blog/blog-page.html
index 0349eb168..e0808556e 100644
--- a/apps/client/src/app/pages/blog/blog-page.html
+++ b/apps/client/src/app/pages/blog/blog-page.html
@@ -2,6 +2,32 @@
Blog
+
+
+
+
+
diff --git a/apps/client/src/assets/images/blog/1000-stars-on-github.jpg b/apps/client/src/assets/images/blog/1000-stars-on-github.jpg
new file mode 100644
index 000000000..0aa91b9a7
Binary files /dev/null and b/apps/client/src/assets/images/blog/1000-stars-on-github.jpg differ
diff --git a/apps/client/src/assets/sitemap.xml b/apps/client/src/assets/sitemap.xml
index 341181346..110254e0e 100644
--- a/apps/client/src/assets/sitemap.xml
+++ b/apps/client/src/assets/sitemap.xml
@@ -6,98 +6,102 @@
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
https://ghostfol.io
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/de/blog
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/de/blog/2021/07/hallo-ghostfolio
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/de/pricing
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/about
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/about/changelog
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2021/07/hello-ghostfolio
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2022/01/ghostfolio-first-months-in-open-source
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2022/07/ghostfolio-meets-internet-identity
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2022/07/how-do-i-get-my-finances-in-order
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2022/08/500-stars-on-github
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2022/10/hacktoberfest-2022
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2022/11/black-friday-2022
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2022/12/the-importance-of-tracking-your-personal-finances
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/blog/2023/02/ghostfolio-meets-umbrel
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
+
+
+ https://ghostfol.io/en/blog/2023/03/ghostfolio-reaches-1000-stars-on-github
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/demo
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/faq
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/features
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/markets
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/pricing
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/register
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
https://ghostfol.io/en/resources
- 2023-02-25T00:00:00+00:00
+ 2023-03-25T00:00:00+00:00
diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss
index 76038a167..df4c9f912 100644
--- a/apps/client/src/styles.scss
+++ b/apps/client/src/styles.scss
@@ -331,6 +331,17 @@ ngx-skeleton-loader {
visibility: hidden;
}
+.breadcrumb {
+ background-color: unset;
+ padding: unset;
+}
+
+.breadcrumb-item {
+ &.active {
+ color: unset;
+ }
+}
+
.cdk-overlay-container {
.cdk-overlay-pane {
max-width: 95vw !important;
diff --git a/apps/client/src/styles/bootstrap.scss b/apps/client/src/styles/bootstrap.scss
index 4c13e7978..5e49e3e99 100644
--- a/apps/client/src/styles/bootstrap.scss
+++ b/apps/client/src/styles/bootstrap.scss
@@ -25,7 +25,7 @@
// @import 'node_modules/bootstrap/scss/nav';
// @import 'node_modules/bootstrap/scss/navbar';
// @import 'node_modules/bootstrap/scss/card';
-// @import 'node_modules/bootstrap/scss/breadcrumb';
+@import 'node_modules/bootstrap/scss/breadcrumb';
// @import 'node_modules/bootstrap/scss/pagination';
@import 'node_modules/bootstrap/scss/badge';
// @import 'node_modules/bootstrap/scss/jumbotron';