From 41875e70d6e087616de25942cad65e69cc146a29 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 30 Sep 2023 08:24:00 +0200 Subject: [PATCH] Extend personal finance tools (#2403) --- apps/api/src/assets/sitemap.xml | 32 +++++++++++++++++++ .../personal-finance-tools/products.ts | 18 +++++++++++ .../products/finary-page.component.ts | 31 ++++++++++++++++++ .../products/stockle-page.component.ts | 31 ++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index d0d04e72f..2a3650752 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -78,6 +78,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-exirio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-finary + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-folishare ${currentDate}T00:00:00+00:00 @@ -146,6 +150,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-snowball-analytics ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-stockle + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-stockmarketeye ${currentDate}T00:00:00+00:00 @@ -324,6 +332,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-exirio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-finary + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-folishare ${currentDate}T00:00:00+00:00 @@ -392,6 +404,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-snowball-analytics ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-stockle + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-stockmarketeye ${currentDate}T00:00:00+00:00 @@ -598,6 +614,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-exirio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-finary + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-folishare ${currentDate}T00:00:00+00:00 @@ -666,6 +686,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-snowball-analytics ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-stockle + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-stockmarketeye ${currentDate}T00:00:00+00:00 @@ -718,6 +742,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-exirio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-finary + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-folishare ${currentDate}T00:00:00+00:00 @@ -786,6 +814,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-snowball-analytics ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-stockle + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-stockmarketeye ${currentDate}T00:00:00+00:00 diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts index 8387e7891..15850f324 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts @@ -6,6 +6,7 @@ import { CopilotMoneyPageComponent } from './products/copilot-money-page.compone import { DeltaPageComponent } from './products/delta-page.component'; import { DivvyDiaryPageComponent } from './products/divvydiary-page.component'; import { ExirioPageComponent } from './products/exirio-page.component'; +import { FinaryPageComponent } from './products/finary-page.component'; import { FolisharePageComponent } from './products/folishare-page.component'; import { GetquinPageComponent } from './products/getquin-page.component'; import { GoSpatzPageComponent } from './products/gospatz-page.component'; @@ -23,6 +24,7 @@ import { SeekingAlphaPageComponent } from './products/seeking-alpha-page.compone import { SharesightPageComponent } from './products/sharesight-page.component'; import { SimplePortfolioPageComponent } from './products/simple-portfolio-page.component'; import { SnowballAnalyticsPageComponent } from './products/snowball-analytics-page.component'; +import { StocklePageComponent } from './products/stockle-page.component'; import { StockMarketEyePageComponent } from './products/stockmarketeye-page.component'; import { SumioPageComponent } from './products/sumio-page.component'; import { UtlunaPageComponent } from './products/utluna-page.component'; @@ -115,6 +117,15 @@ export const products: Product[] = [ pricingPerYear: '$100', slogan: 'All your wealth, in one place.' }, + { + component: FinaryPageComponent, + founded: 2020, + key: 'finary', + languages: ['Deutsch', 'English', 'Français'], + name: 'Finary', + origin: $localize`United States`, + slogan: 'Real-Time Portfolio Tracker & Stock Tracker' + }, { component: FolisharePageComponent, hasFreePlan: true, @@ -304,6 +315,13 @@ export const products: Product[] = [ pricingPerYear: '$80', slogan: 'Simple and powerful portfolio tracker' }, + { + component: StocklePageComponent, + key: 'stockle', + name: 'Stockle', + origin: $localize`Finland`, + slogan: 'Supercharge your investments tracking experience' + }, { component: StockMarketEyePageComponent, founded: 2008, diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts new file mode 100644 index 000000000..6b2d25827 --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +import { products } from '../products'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-finary-page', + standalone: true, + styleUrls: ['../product-page-template.scss'], + templateUrl: '../product-page-template.html' +}) +export class FinaryPageComponent { + public product1 = products.find(({ key }) => { + return key === 'ghostfolio'; + }); + + public product2 = products.find(({ key }) => { + return key === 'finary'; + }); + + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; +} diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts new file mode 100644 index 000000000..eb1b41a9c --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +import { products } from '../products'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-stockle-page', + standalone: true, + styleUrls: ['../product-page-template.scss'], + templateUrl: '../product-page-template.html' +}) +export class StocklePageComponent { + public product1 = products.find(({ key }) => { + return key === 'ghostfolio'; + }); + + public product2 = products.find(({ key }) => { + return key === 'stockle'; + }); + + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; +}