diff --git a/CHANGELOG.md b/CHANGELOG.md
index df7830ce7..73aae3b1a 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
## Unreleased
+### Added
+
+- Added a blog post: _Hacktoberfest 2022_
+
### Changed
- Improved the usage of the value component in the admin control panel
diff --git a/apps/api/src/app/frontend.middleware.ts b/apps/api/src/app/frontend.middleware.ts
index ccf6ca05c..a1ab6452c 100644
--- a/apps/api/src/app/frontend.middleware.ts
+++ b/apps/api/src/app/frontend.middleware.ts
@@ -58,6 +58,11 @@ export class FrontendMiddleware implements NestMiddleware {
req.path === '/en/blog/2022/08/500-stars-on-github/'
) {
featureGraphicPath = 'assets/images/blog/500-stars-on-github.jpg';
+ } else if (
+ req.path === '/en/blog/2022/10/hacktoberfest-2022' ||
+ req.path === '/en/blog/2022/10/hacktoberfest-2022/'
+ ) {
+ featureGraphicPath = 'assets/images/blog/hacktoberfest-2022.png';
}
if (
diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts
index da506e673..856230eb6 100644
--- a/apps/client/src/app/app-routing.module.ts
+++ b/apps/client/src/app/app-routing.module.ts
@@ -95,6 +95,13 @@ const routes: Routes = [
'./pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.module'
).then((m) => m.FiveHundredStarsOnGitHubPageModule)
},
+ {
+ path: 'blog/2022/10/hacktoberfest-2022',
+ loadChildren: () =>
+ import(
+ './pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.module'
+ ).then((m) => m.Hacktoberfest2022PageModule)
+ },
{
path: 'demo',
loadChildren: () =>
diff --git a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page-routing.module.ts b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page-routing.module.ts
new file mode 100644
index 000000000..7ee6a0cff
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-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 { Hacktoberfest2022PageComponent } from './hacktoberfest-2022-page.component';
+
+const routes: Routes = [
+ {
+ canActivate: [AuthGuard],
+ component: Hacktoberfest2022PageComponent,
+ path: '',
+ title: 'Hacktoberfest 2022'
+ }
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule]
+})
+export class Hacktoberfest2022RoutingModule {}
diff --git a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.component.ts b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.component.ts
new file mode 100644
index 000000000..7417a09bf
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.component.ts
@@ -0,0 +1,9 @@
+import { Component } from '@angular/core';
+
+@Component({
+ host: { class: 'page' },
+ selector: 'gf-hacktoberfest-2022-page',
+ styleUrls: ['./hacktoberfest-2022-page.scss'],
+ templateUrl: './hacktoberfest-2022-page.html'
+})
+export class Hacktoberfest2022PageComponent {}
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
new file mode 100644
index 000000000..f2d9e90b4
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html
@@ -0,0 +1,178 @@
+
+
+
+
+
+
Hacktoberfest 2022
+
2022-10-01
+
+
+
+
+ We are very excited to join
+ Hacktoberfest for the first
+ time with Ghostfolio and meet new
+ and ambitious open-source contributors. Hacktoberfest is a
+ month-long celebration of open-source projects, their maintainers,
+ and the entire community of contributors. Each October, open source
+ maintainers from all over the world give extra attention to new
+ contributors while guiding them through their first pull requests on
+ GitHub.
+
+
+
+ About Ghostfolio
+
+ Ghostfolio is a modern web application to manage your personal
+ finance. The software presents the current assets in real time and
+ supports the decision making of future investments. Whether
+ rebalancing the asset classes (stocks, ETFs, cryptocurrencies, etc.)
+ of your portfolio or financing an apartment, Ghostfolio offers
+ solid, data-driven decision support.
+
+
+ Ghostfolio is written in
+ TypeScript and
+ organized as an Nx workspace. The
+ backend is based on NestJS using
+ PostgreSQL as a database
+ together with Prisma and
+ Redis for caching. The frontend is
+ built with Angular.
+
+
+
+ How to contribute?
+
+ Every contribution matters. This can be implementing new features,
+ fixing bugs, refactoring the code, improving the documentation,
+ adding more unit tests, or translating into another language.
+
+
+ Are you not yet familiar with our code base? That is not a problem.
+ We have applied the label hacktoberfest
to a few
+ issues
+ and
+ ideas
+ that are well suited for newcomers.
+
+
+ The official Hacktoberfest website provides some valuable
+ resources for beginners
+ to start contributing in open source.
+
+
+
+ Get support
+
+ If you have further questions or ideas, please join our growing
+ Slack community or get in
+ touch on Twitter
+ @ghostfolio_ or by
+ email via hi@ghostfol.io.
+
+
+ We look forward to hearing from you.
+ Thomas from Ghostfolio
+
+
+
+
+ -
+ Angular
+
+ -
+ Community
+
+ -
+ Cryptocurrency
+
+ -
+ ETF
+
+ -
+ Finance
+
+ -
+ Fintech
+
+ -
+ Ghostfolio
+
+ -
+ GitHub
+
+ -
+ Hacktoberfest
+
+ -
+ Investment
+
+ -
+ NestJS
+
+ -
+ Nx
+
+ -
+ October
+
+ -
+ Open Source
+
+ -
+ OSS
+
+ -
+ Personal Finance
+
+ -
+ Portfolio
+
+ -
+ Portfolio Tracker
+
+ -
+ Prisma
+
+ -
+ Software
+
+ -
+ Stock
+
+ -
+ TypeScript
+
+ -
+ Wealth
+
+ -
+ Wealth Management
+
+ -
+ Web3
+
+ -
+ Web 3.0
+
+
+
+
+
+
+
diff --git a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.module.ts b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.module.ts
new file mode 100644
index 000000000..fba8a359d
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-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 { Hacktoberfest2022RoutingModule } from './hacktoberfest-2022-page-routing.module';
+import { Hacktoberfest2022PageComponent } from './hacktoberfest-2022-page.component';
+
+@NgModule({
+ declarations: [Hacktoberfest2022PageComponent],
+ imports: [CommonModule, Hacktoberfest2022RoutingModule, RouterModule],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+})
+export class Hacktoberfest2022PageModule {}
diff --git a/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.scss b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.scss
new file mode 100644
index 000000000..5d4e87f30
--- /dev/null
+++ b/apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-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 2cdd2a604..f2d1de322 100644
--- a/apps/client/src/app/pages/blog/blog-page.html
+++ b/apps/client/src/app/pages/blog/blog-page.html
@@ -2,6 +2,30 @@
Blog
+
+
+
+
+
diff --git a/apps/client/src/assets/images/blog/hacktoberfest-2022.png b/apps/client/src/assets/images/blog/hacktoberfest-2022.png
new file mode 100644
index 000000000..0f20e0406
Binary files /dev/null and b/apps/client/src/assets/images/blog/hacktoberfest-2022.png differ
diff --git a/apps/client/src/assets/sitemap.xml b/apps/client/src/assets/sitemap.xml
index b6b8a70e9..58c9b9673 100644
--- a/apps/client/src/assets/sitemap.xml
+++ b/apps/client/src/assets/sitemap.xml
@@ -6,70 +6,74 @@
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
https://ghostfol.io
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/de/blog/2021/07/hallo-ghostfolio
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/about
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/about/changelog
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/blog
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/blog/2021/07/hello-ghostfolio
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/blog/2022/01/ghostfolio-first-months-in-open-source
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/blog/2022/07/ghostfolio-meets-internet-identity
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/blog/2022/07/how-do-i-get-my-finances-in-order
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/blog/2022/08/500-stars-on-github
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
+
+
+ https://ghostfol.io/en/blog/2022/10/hacktoberfest-2022
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/demo
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/faq
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/features
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/markets
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/pricing
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/register
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00
https://ghostfol.io/en/resources
- 2022-09-01T00:00:00+00:00
+ 2022-10-01T00:00:00+00:00