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
+ Hacktoberfest 2022 with Ghostfolio Teaser +
+
+

+ 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