- Open Source Alternative to {{ product.name }}
+ Open Source Alternative to {{ personalFinanceTool.name }}
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
new file mode 100644
index 000000000..3004a3ec4
--- /dev/null
+++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -0,0 +1,68 @@
+import { DataService } from '@ghostfolio/client/services/data.service';
+import { Product } from '@ghostfolio/common/interfaces';
+import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools';
+
+import { CommonModule } from '@angular/common';
+import { Component, OnInit } from '@angular/core';
+import { MatButtonModule } from '@angular/material/button';
+import { ActivatedRoute, RouterModule } from '@angular/router';
+
+@Component({
+ host: { class: 'page' },
+ imports: [CommonModule, MatButtonModule, RouterModule],
+ selector: 'gf-product-page',
+ standalone: true,
+ styleUrls: ['./product-page.scss'],
+ templateUrl: './product-page.html'
+})
+export class GfProductPageComponent implements OnInit {
+ public key: string;
+ public price: number;
+ public product1: Product;
+ public product2: Product;
+ public routerLinkAbout = ['/' + $localize`about`];
+ public routerLinkFeatures = ['/' + $localize`features`];
+ public routerLinkResourcesPersonalFinanceTools = [
+ '/' + $localize`resources`,
+ 'personal-finance-tools'
+ ];
+
+ public constructor(
+ private dataService: DataService,
+ private route: ActivatedRoute
+ ) {}
+
+ public ngOnInit() {
+ const { subscriptions } = this.dataService.fetchInfo();
+
+ this.price = subscriptions?.default?.price;
+
+ this.product1 = {
+ founded: 2021,
+ hasFreePlan: true,
+ hasSelfHostingAbility: true,
+ isOpenSource: true,
+ key: 'ghostfolio',
+ languages: [
+ 'Deutsch',
+ 'English',
+ 'Español',
+ 'Français',
+ 'Italiano',
+ 'Nederlands',
+ 'Português',
+ 'Türkçe',
+ '简体中文'
+ ],
+ name: 'Ghostfolio',
+ origin: $localize`Switzerland`,
+ region: $localize`Global`,
+ slogan: 'Open Source Wealth Management',
+ useAnonymously: true
+ };
+
+ this.product2 = personalFinanceTools.find(({ key }) => {
+ return key === this.route.snapshot.data['key'];
+ });
+ }
+}
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
similarity index 100%
rename from apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
rename to apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.scss b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.scss
similarity index 100%
rename from apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.scss
rename to apps/client/src/app/pages/resources/personal-finance-tools/product-page.scss
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts
deleted file mode 100644
index d946883f2..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/allinvestview-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-allinvestview-systems-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class AllInvestViewPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'allinvestview';
- });
-
- 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/allvue-systems-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts
deleted file mode 100644
index 399abe975..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-allvue-systems-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class AllvueSystemsPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'allvue-systems';
- });
-
- 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/altoo-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts
deleted file mode 100644
index 1d1164e79..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-altoo-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class AltooPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'altoo';
- });
-
- 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/base-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/base-page.component.ts
deleted file mode 100644
index 840a40e3e..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/base-page.component.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import { DataService } from '@ghostfolio/client/services/data.service';
-
-import { Component, OnInit } from '@angular/core';
-
-@Component({
- selector: 'gf-base-product-page',
- template: ''
-})
-export class BaseProductPageComponent implements OnInit {
- public price: number;
-
- public constructor(private dataService: DataService) {}
-
- public ngOnInit() {
- const { subscriptions } = this.dataService.fetchInfo();
-
- this.price = subscriptions?.default?.price;
- }
-}
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts
deleted file mode 100644
index 1712f0013..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-basil-finance-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class BasilFinancePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'basil-finance';
- });
-
- 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/beanvest-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts
deleted file mode 100644
index 26b3b7fa3..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-beanvest-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class BeanvestPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'beanvest';
- });
-
- 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/capitally-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts
deleted file mode 100644
index 37501d4f0..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-capitally-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class CapitallyPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'capitally';
- });
-
- 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/capmon-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts
deleted file mode 100644
index d021e2078..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-capmon-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class CapMonPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'capmon';
- });
-
- 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/compound-planning-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts
deleted file mode 100644
index 0d455e127..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-compound-planning-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class CompoundPlanningPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'compound-planning';
- });
-
- 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/copilot-money-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts
deleted file mode 100644
index f1c05855f..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-copilot-money-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class CopilotMoneyPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'copilot-money';
- });
-
- 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/de.fi-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts
deleted file mode 100644
index b2a0d62ec..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-de-fi-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class DeFiPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'de.fi';
- });
-
- 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/delta-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts
deleted file mode 100644
index fe11152d3..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-delta-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class DeltaPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'delta';
- });
-
- 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/divvydiary-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts
deleted file mode 100644
index e128650de..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-divvy-diary-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class DivvyDiaryPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'divvydiary';
- });
-
- 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/eightfigures-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts
deleted file mode 100644
index 933e1ac4b..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-eightfigures-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class EightFiguresPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'eightfigures';
- });
-
- 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/empower-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts
deleted file mode 100644
index ea02c8b17..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-empower-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class EmpowerPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'empower';
- });
-
- 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/exirio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts
deleted file mode 100644
index 7844350df..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-exirio-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class ExirioPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'exirio';
- });
-
- 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/fina-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts
deleted file mode 100644
index 328d9896e..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/fina-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-fina-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class FinaPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'fina';
- });
-
- 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/finary-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts
deleted file mode 100644
index 4e64d8c8f..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@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 extends BaseProductPageComponent {
- 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/finwise-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts
deleted file mode 100644
index 70f46d132..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-finwise-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class FinWisePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'finwise';
- });
-
- 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/folishare-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts
deleted file mode 100644
index dfddfc2a0..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-folishare-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class FolisharePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'folishare';
- });
-
- 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/getquin-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts
deleted file mode 100644
index 86ae168b6..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-getquin-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class GetquinPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'getquin';
- });
-
- 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/gospatz-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts
deleted file mode 100644
index 8bb604b11..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-gospatz-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class GoSpatzPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'gospatz';
- });
-
- 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/intuit-mint-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts
deleted file mode 100644
index a142bec5c..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-intuit-mint-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class IntuitMintPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'intuit-mint';
- });
-
- 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/justetf-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts
deleted file mode 100644
index f87ec5f43..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-justetf-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class JustEtfPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'justetf';
- });
-
- 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/koyfin-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/koyfin-page.component.ts
deleted file mode 100644
index b88496b8e..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/koyfin-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-koyfin-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class KoyfinPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'koyfin';
- });
-
- 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/kubera-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts
deleted file mode 100644
index cb0511d4f..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-kubera-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class KuberaPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'kubera';
- });
-
- 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/magnifi-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts
deleted file mode 100644
index 4e688c11e..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-magnifi-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class MagnifiPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'magnifi';
- });
-
- 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/markets.sh-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts
deleted file mode 100644
index 94bc581e4..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-markets-sh-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class MarketsShPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'markets.sh';
- });
-
- 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/maybe-finance-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts
deleted file mode 100644
index 86738e136..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-maybe-finance-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class MaybeFinancePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'maybe-finance';
- });
-
- 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/monarch-money-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts
deleted file mode 100644
index 095584fbe..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-monarch-money-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class MonarchMoneyPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'monarch-money';
- });
-
- 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/monse-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts
deleted file mode 100644
index 588854e3d..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-monse-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class MonsePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'monse';
- });
-
- 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/navexa-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/navexa-page.component.ts
deleted file mode 100644
index 0ffb17bbe..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/navexa-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-navexa-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class NavexaPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'navexa';
- });
-
- 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/parqet-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts
deleted file mode 100644
index f6e956023..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-parqet-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class ParqetPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'parqet';
- });
-
- 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/plannix-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts
deleted file mode 100644
index 106818ea0..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-plannix-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class PlannixPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'plannix';
- });
-
- 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/portfolio-dividend-tracker-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts
deleted file mode 100644
index da41c1604..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-portfolio-dividend-tracker-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class PortfolioDividendTrackerPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'portfolio-dividend-tracker';
- });
-
- 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/portfolio-visualizer-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts
deleted file mode 100644
index 4baeb4de9..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-visualizer-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-portfolio-visualizer-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class PortfolioVisualizerPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'portfolio-visualizer';
- });
-
- 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/portseido-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts
deleted file mode 100644
index 7fb7703b2..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-portseido-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class PortseidoPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'portseido';
- });
-
- 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/projectionlab-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts
deleted file mode 100644
index 6cd22b8f4..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-projection-lab-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class ProjectionLabPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'projectionlab';
- });
-
- 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/rocket-money-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts
deleted file mode 100644
index 7dc279444..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-rocket-money-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class RocketMoneyPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'rocket-money';
- });
-
- 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/seeking-alpha-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts
deleted file mode 100644
index 825eacb34..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-seeking-alpha-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class SeekingAlphaPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'seeking-alpha';
- });
-
- 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/sharesight-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts
deleted file mode 100644
index 5b0554179..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-sharesight-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class SharesightPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'sharesight';
- });
-
- 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/simple-portfolio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts
deleted file mode 100644
index 8a1ae2790..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-simple-portfolio-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class SimplePortfolioPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'simple-portfolio';
- });
-
- 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/snowball-analytics-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts
deleted file mode 100644
index 9892af41d..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-snowball-analytics-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class SnowballAnalyticsPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'snowball-analytics';
- });
-
- 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/stock-events-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts
deleted file mode 100644
index ea8aa753b..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/stock-events-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-stock-events-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class StockEventsPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'stock-events';
- });
-
- 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
deleted file mode 100644
index e06ec527b..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@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 extends BaseProductPageComponent {
- 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'
- ];
-}
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts
deleted file mode 100644
index 1c70efc04..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-stockmarketeye-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class StockMarketEyePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'stockmarketeye';
- });
-
- 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/stonksfolio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/stonksfolio-page.component.ts
deleted file mode 100644
index f62c3f3bd..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/stonksfolio-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-stonksfolio-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class StonksfolioPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'stonksfolio';
- });
-
- 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/sumio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts
deleted file mode 100644
index acf23f772..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-sumio-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class SumioPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'sumio';
- });
-
- 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/tiller-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts
deleted file mode 100644
index 69ba2759b..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-tiller-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class TillerPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'tiller';
- });
-
- 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/utluna-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts
deleted file mode 100644
index 8ce62c741..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-utluna-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class UtlunaPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'utluna';
- });
-
- 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/vyzer-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts
deleted file mode 100644
index 37b8c4a72..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-vyzer-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class VyzerPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'vyzer';
- });
-
- 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/wallmine-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts
deleted file mode 100644
index 5c75c80fb..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/wallmine-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-wallmine-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class WallminePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'wallmine';
- });
-
- 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/wealthfolio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts
deleted file mode 100644
index d888e2f93..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthfolio-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-wealthfolio-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class WealthfolioPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'wealthfolio';
- });
-
- 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/wealthica-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts
deleted file mode 100644
index cea5ddf7a..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-wealthica-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class WealthicaPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'wealthica';
- });
-
- 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/whal-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts
deleted file mode 100644
index b336c07a0..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-whal-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class WhalPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'whal';
- });
-
- 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/yeekatee-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts
deleted file mode 100644
index bd95a70f9..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-yeekatee-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class YeekateePageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'yeekatee';
- });
-
- 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/ynab-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts
deleted file mode 100644
index 0c343b4e6..000000000
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-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';
-import { BaseProductPageComponent } from './base-page.component';
-
-@Component({
- host: { class: 'page' },
- imports: [CommonModule, MatButtonModule, RouterModule],
- selector: 'gf-ynab-page',
- standalone: true,
- styleUrls: ['../product-page-template.scss'],
- templateUrl: '../product-page-template.html'
-})
-export class YnabPageComponent extends BaseProductPageComponent {
- public product1 = products.find(({ key }) => {
- return key === 'ghostfolio';
- });
-
- public product2 = products.find(({ key }) => {
- return key === 'ynab';
- });
-
- public routerLinkAbout = ['/' + $localize`about`];
- public routerLinkFeatures = ['/' + $localize`features`];
- public routerLinkResourcesPersonalFinanceTools = [
- '/' + $localize`resources`,
- 'personal-finance-tools'
- ];
-}
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index 3b9123218..803e71757 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -5500,7 +5500,7 @@
✅ Yes
- ✅ Yes
+ ✅ Sí
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
109
@@ -7296,7 +7296,7 @@
❌ No
- ❌ No
+ ❌ No
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
111
@@ -12216,7 +12216,7 @@
Open Source Alternative to
- Open Source Alternative to
+ Alternativa de software libre a
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html
38
@@ -12224,7 +12224,7 @@
Open Source Alternative to
- Open Source Alternative to
+ Alternativa de software libre a
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts
26
@@ -12232,7 +12232,7 @@
The Open Source Alternative to
- The Open Source Alternative to
+ La alternativa de software libre a
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
8
@@ -13144,7 +13144,7 @@
open-source-alternative-to
- open-source-alternative-to
+ alternativa-de-software-libre-a
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts
23
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 0a084f24d..20c37025b 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -3,7 +3,7 @@
The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term.
- Le risque de perte en investissant peut être important. Il est déconseillé d'investir de l'argent dont vous pourriez avoir besoin à court terme.
+ Le risque de perte en investissant peut être important. Il est déconseillé d’investir de l’argent dont vous pourriez avoir besoin à court terme.
apps/client/src/app/app.component.html
182
@@ -459,7 +459,7 @@
Asset Profiles
- Profil d'Actifs
+ Profil d’Actifs
libs/ui/src/lib/assistant/assistant.html
67
@@ -627,7 +627,7 @@
Asset Class
- Classe d'Actifs
+ Classe d’Actifs
apps/client/src/app/components/admin-market-data/admin-market-data.html
60
@@ -651,7 +651,7 @@
Asset Sub Class
- Sous-classe d'Actifs
+ Sous-classe d’Actifs
apps/client/src/app/components/admin-market-data/admin-market-data.html
69
@@ -695,7 +695,7 @@
Activities Count
- Nombre d'Activités
+ Nombre d’Activités
apps/client/src/app/components/admin-market-data/admin-market-data.html
87
@@ -895,7 +895,7 @@
User Count
- Nombre d'Utilisateurs
+ Nombre d’Utilisateurs
apps/client/src/app/components/admin-overview/admin-overview.html
13
@@ -903,7 +903,7 @@
Activity Count
- Nombre d'Activités
+ Nombre d’Activités
apps/client/src/app/components/admin-overview/admin-overview.html
23
@@ -1623,7 +1623,7 @@
Upgrade Plan
- Mettre à niveau l'Abonnement
+ Mettre à niveau l’Abonnement
apps/client/src/app/components/home-summary/home-summary.component.ts
115
@@ -1651,7 +1651,7 @@
Savings Rate
- Taux d'Épargne
+ Taux d’Épargne
apps/client/src/app/components/investment-chart/investment-chart.component.ts
214
@@ -1807,7 +1807,7 @@
Emergency Fund
- Fonds d'Urgence
+ Fonds d’Urgence
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
190
@@ -1823,7 +1823,7 @@
Buying Power
- Pouvoir d'Achat
+ Pouvoir d’Achat
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
237
@@ -1831,7 +1831,7 @@
Excluded from Analysis
- Exclus de l'Analyse
+ Exclus de l’Analyse
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
249
@@ -1879,7 +1879,7 @@
Please enter the amount of your emergency fund:
- Veuillez entrer le montant de votre fonds d'urgence :
+ Veuillez entrer le montant de votre fonds d’urgence :
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
57
@@ -1947,7 +1947,7 @@
Today
- Aujourd'hui
+ Aujourd’hui
apps/client/src/app/components/toggle/toggle.component.ts
22
@@ -2031,7 +2031,7 @@
Oops! Something went wrong.
- Oups! Quelque chose s'est mal passé.
+ Oups! Quelque chose s’est mal passé.
apps/client/src/app/core/http-response.interceptor.ts
89
@@ -2043,7 +2043,7 @@
Okay
- D'accord
+ D’accord
apps/client/src/app/core/http-response.interceptor.ts
92
@@ -2143,7 +2143,7 @@
Could not redeem coupon code
- Le code promotionnel n'a pas pu être appliqué
+ Le code promotionnel n’a pas pu être appliqué
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
121
@@ -2299,7 +2299,7 @@
Date and number format
- Format de date et d'heure
+ Format de date et d’heure
apps/client/src/app/components/user-account-settings/user-account-settings.html
123
@@ -2367,7 +2367,7 @@
User ID
- ID d'utilisateur
+ ID d’utilisateur
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
45
@@ -2739,7 +2739,7 @@
Import has been completed
- L'import est terminé
+ L’import est terminé
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
128
@@ -2835,7 +2835,7 @@
By Asset Class
- Par Classe d'Actifs
+ Par Classe d’Actifs
apps/client/src/app/pages/portfolio/allocations/allocations-page.html
86
@@ -3070,8 +3070,8 @@
- Hello, has shared a Portfolio with you!
- Bonjour, a partagé un Portefeuille avec vous !
+ Hello, has shared a Portfolio with you!
+ Bonjour, a partagé un Portefeuille avec vous !
apps/client/src/app/pages/public/public-page.html
4
@@ -3187,7 +3187,7 @@
Oops, authentication has failed.
- Oups, l'identification a échoué.
+ Oups, l’identification a échoué.
apps/client/src/app/pages/webauthn/webauthn-page.html
19
@@ -3203,7 +3203,7 @@
Go back to Home Page
- Retour à la Page d'Accueil
+ Retour à la Page d’Accueil
apps/client/src/app/pages/webauthn/webauthn-page.html
31
@@ -3319,7 +3319,7 @@
Annual Interest Rate
- Taux d'Intérêt Annuel
+ Taux d’Intérêt Annuel
libs/ui/src/lib/fire-calculator/fire-calculator.component.html
21
@@ -3387,7 +3387,7 @@
Asset Class
- Classe d'Actifs
+ Classe d’Actifs
libs/ui/src/lib/i18n.ts
6
@@ -3395,7 +3395,7 @@
Asset Sub Class
- Sous-classe d'Actifs
+ Sous-classe d’Actifs
libs/ui/src/lib/i18n.ts
7
@@ -3403,7 +3403,7 @@
Emergency Fund
- Fonds d'Urgence
+ Fonds d’Urgence
libs/ui/src/lib/i18n.ts
13
@@ -3583,7 +3583,7 @@
Time to add your first activity.
- Il est temps d'ajouter votre première activité.
+ Il est temps d’ajouter votre première activité.
libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html
12
@@ -3635,7 +3635,7 @@
Valid until
- Valide jusqu'au
+ Valide jusqu’au
libs/ui/src/lib/membership-card/membership-card.component.html
23
@@ -3715,7 +3715,7 @@
Are you an ambitious investor who needs the full picture?
- Êtes-vous un investisseur ambitieux qui a besoin d'une vue complète ?
+ Êtes-vous un investisseur ambitieux qui a besoin d’une vue complète ?
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
12
@@ -3771,7 +3771,7 @@
and more Features...
- et d'autres fonctionnalités...
+ et d’autres fonctionnalités...
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
42
@@ -3795,7 +3795,7 @@
Upgrade Plan
- Mettre à niveau l'Abonnement
+ Mettre à niveau l’Abonnement
apps/client/src/app/components/header/header.component.html
182
@@ -3815,7 +3815,7 @@
For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure.
- Pour les investisseurs à l'aise avec la technologie qui préfèrent héberger Ghostfolio sur leur propre infrastructure.
+ Pour les investisseurs à l’aise avec la technologie qui préfèrent héberger Ghostfolio sur leur propre infrastructure.
apps/client/src/app/pages/pricing/pricing-page.html
36
@@ -3911,7 +3911,7 @@
For ambitious investors who need the full picture of their financial assets.
- Pour les investisseurs ambitieux qui ont besoin d'une vue complète de leurs actifs financiers.
+ Pour les investisseurs ambitieux qui ont besoin d’une vue complète de leurs actifs financiers.
apps/client/src/app/pages/pricing/pricing-page.html
180
@@ -3935,7 +3935,7 @@
It’s free.
- C'est gratuit.
+ C’est gratuit.
apps/client/src/app/pages/pricing/pricing-page.html
294
@@ -3979,7 +3979,7 @@
Savings Rate per Month
- Taux d'Épargne mensuel
+ Taux d’Épargne mensuel
libs/ui/src/lib/fire-calculator/fire-calculator.component.html
10
@@ -4051,7 +4051,7 @@
Oops! Could not get the historical exchange rate from
- Oups ! Nous n'avons pas pu obtenir le taux de change historique à partir de
+ Oups ! Nous n’avons pas pu obtenir le taux de change historique à partir de
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
292
@@ -4095,7 +4095,7 @@
Renew Plan
- Renouveler l'Abonnement
+ Renouveler l’Abonnement
apps/client/src/app/components/header/header.component.html
190
@@ -4111,7 +4111,7 @@
Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development.
- Notre offre Ghostfolio Premium cloud est la manière la plus simple de débuter. Grâce au temps qu'elle économise, ce sera la meilleure option pour la plupart des gens. Les revenus sont utilisés pour couvrir les frais d'infrastructures et financer le développement continu de Ghostfolio.
+ Notre offre Ghostfolio Premium cloud est la manière la plus simple de débuter. Grâce au temps qu’elle économise, ce sera la meilleure option pour la plupart des gens. Les revenus sont utilisés pour couvrir les frais d’infrastructures et financer le développement continu de Ghostfolio.
apps/client/src/app/pages/pricing/pricing-page.html
6
@@ -4127,7 +4127,7 @@
Delete User
- Supprimer l'Utilisateur
+ Supprimer l’Utilisateur
apps/client/src/app/components/admin-users/admin-users.html
232
@@ -4143,7 +4143,7 @@
By ETF Provider
- Par Émetteur d'ETF
+ Par Émetteur d’ETF
apps/client/src/app/pages/portfolio/allocations/allocations-page.html
314
@@ -4215,7 +4215,7 @@
Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience:
- Mettez à niveau vers Ghostfolio Premium aujourd'hui et gagnez accès à des fonctionnalités exclusives pour améliorer votre expérience d'investissement:
+ Mettez à niveau vers Ghostfolio Premium aujourd’hui et gagnez accès à des fonctionnalités exclusives pour améliorer votre expérience d’investissement:
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
15
@@ -4223,7 +4223,7 @@
Get the tools to effectively manage your finances and refine your personal investment strategy.
- Obtenez les outils pour gérer efficacement vos finances et affinez votre stratégie d'investissement personnelle.
+ Obtenez les outils pour gérer efficacement vos finances et affinez votre stratégie d’investissement personnelle.
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
45
@@ -5499,7 +5499,7 @@
✅ Yes
- ✅ Yes
+ ✅ Oui
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
109
@@ -7295,7 +7295,7 @@
❌ No
- ❌ No
+ ❌ Non
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
111
@@ -12215,7 +12215,7 @@
Open Source Alternative to
- Open Source Alternative to
+ Alternative open source à
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html
38
@@ -12223,7 +12223,7 @@
Open Source Alternative to
- Open Source Alternative to
+ Alternative open source à
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts
26
@@ -12231,7 +12231,7 @@
The Open Source Alternative to
- The Open Source Alternative to
+ L’alternative open source à
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
8
@@ -13143,7 +13143,7 @@
open-source-alternative-to
- open-source-alternative-to
+ alternative-open-source-a
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts
23
diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf
index e996ec68e..a5a4d5d3b 100644
--- a/apps/client/src/locales/messages.pt.xlf
+++ b/apps/client/src/locales/messages.pt.xlf
@@ -5499,7 +5499,7 @@
✅ Yes
- ✅ Yes
+ ✅ Sim
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
109
@@ -7295,7 +7295,7 @@
❌ No
- ❌ No
+ ❌ Não
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
111
@@ -12215,7 +12215,7 @@
Open Source Alternative to
- Open Source Alternative to
+ Alternativa de software livre ao
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html
38
@@ -12223,7 +12223,7 @@
Open Source Alternative to
- Open Source Alternative to
+ Alternativa de software livre ao
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts
26
@@ -12231,7 +12231,7 @@
The Open Source Alternative to
- The Open Source Alternative to
+ A alternativa de software livre ao
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
8
@@ -13143,7 +13143,7 @@
open-source-alternative-to
- open-source-alternative-to
+ alternativa-de-software-livre-ao
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts
23
diff --git a/libs/common/src/lib/interfaces/product.ts b/libs/common/src/lib/interfaces/product.ts
index 274ee8207..0723abf95 100644
--- a/libs/common/src/lib/interfaces/product.ts
+++ b/libs/common/src/lib/interfaces/product.ts
@@ -1,6 +1,5 @@
export interface Product {
alias?: string;
- component: any;
founded?: number;
hasFreePlan?: boolean;
hasSelfHostingAbility?: boolean;
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/libs/common/src/lib/personal-finance-tools.ts
similarity index 55%
rename from apps/client/src/app/pages/resources/personal-finance-tools/products.ts
rename to libs/common/src/lib/personal-finance-tools.ts
index 521659611..f7d10366d 100644
--- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts
+++ b/libs/common/src/lib/personal-finance-tools.ts
@@ -1,89 +1,7 @@
import { Product } from '@ghostfolio/common/interfaces';
-import { AllInvestViewPageComponent } from './products/allinvestview-page.component';
-import { AllvueSystemsPageComponent } from './products/allvue-systems-page.component';
-import { AltooPageComponent } from './products/altoo-page.component';
-import { BasilFinancePageComponent } from './products/basil-finance-page.component';
-import { BeanvestPageComponent } from './products/beanvest-page.component';
-import { CapitallyPageComponent } from './products/capitally-page.component';
-import { CapMonPageComponent } from './products/capmon-page.component';
-import { CompoundPlanningPageComponent } from './products/compound-planning-page.component';
-import { CopilotMoneyPageComponent } from './products/copilot-money-page.component';
-import { DeFiPageComponent } from './products/de.fi-page.component';
-import { DeltaPageComponent } from './products/delta-page.component';
-import { DivvyDiaryPageComponent } from './products/divvydiary-page.component';
-import { EightFiguresPageComponent } from './products/eightfigures-page.component';
-import { EmpowerPageComponent } from './products/empower-page.component';
-import { ExirioPageComponent } from './products/exirio-page.component';
-import { FinaPageComponent } from './products/fina-page.component';
-import { FinaryPageComponent } from './products/finary-page.component';
-import { FinWisePageComponent } from './products/finwise-page.component';
-import { FolisharePageComponent } from './products/folishare-page.component';
-import { GetquinPageComponent } from './products/getquin-page.component';
-import { GoSpatzPageComponent } from './products/gospatz-page.component';
-import { IntuitMintPageComponent } from './products/intuit-mint-page.component';
-import { JustEtfPageComponent } from './products/justetf-page.component';
-import { KoyfinPageComponent } from './products/koyfin-page.component';
-import { KuberaPageComponent } from './products/kubera-page.component';
-import { MagnifiPageComponent } from './products/magnifi-page.component';
-import { MarketsShPageComponent } from './products/markets.sh-page.component';
-import { MaybeFinancePageComponent } from './products/maybe-finance-page.component';
-import { MonarchMoneyPageComponent } from './products/monarch-money-page.component';
-import { MonsePageComponent } from './products/monse-page.component';
-import { NavexaPageComponent } from './products/navexa-page.component';
-import { ParqetPageComponent } from './products/parqet-page.component';
-import { PlannixPageComponent } from './products/plannix-page.component';
-import { PortfolioDividendTrackerPageComponent } from './products/portfolio-dividend-tracker-page.component';
-import { PortfolioVisualizerPageComponent } from './products/portfolio-visualizer-page.component';
-import { PortseidoPageComponent } from './products/portseido-page.component';
-import { ProjectionLabPageComponent } from './products/projectionlab-page.component';
-import { RocketMoneyPageComponent } from './products/rocket-money-page.component';
-import { SeekingAlphaPageComponent } from './products/seeking-alpha-page.component';
-import { SharesightPageComponent } from './products/sharesight-page.component';
-import { SimplePortfolioPageComponent } from './products/simple-portfolio-page.component';
-import { SnowballAnalyticsPageComponent } from './products/snowball-analytics-page.component';
-import { StockEventsPageComponent } from './products/stock-events-page.component';
-import { StocklePageComponent } from './products/stockle-page.component';
-import { StockMarketEyePageComponent } from './products/stockmarketeye-page.component';
-import { StonksfolioPageComponent } from './products/stonksfolio-page.component';
-import { SumioPageComponent } from './products/sumio-page.component';
-import { TillerPageComponent } from './products/tiller-page.component';
-import { UtlunaPageComponent } from './products/utluna-page.component';
-import { VyzerPageComponent } from './products/vyzer-page.component';
-import { WallminePageComponent } from './products/wallmine-page.component';
-import { WealthfolioPageComponent } from './products/wealthfolio-page.component';
-import { WealthicaPageComponent } from './products/wealthica-page.component';
-import { WhalPageComponent } from './products/whal-page.component';
-import { YeekateePageComponent } from './products/yeekatee-page.component';
-import { YnabPageComponent } from './products/ynab-page.component';
-
-export const products: Product[] = [
- {
- component: undefined,
- founded: 2021,
- hasFreePlan: true,
- hasSelfHostingAbility: true,
- isOpenSource: true,
- key: 'ghostfolio',
- languages: [
- 'Deutsch',
- 'English',
- 'Español',
- 'Français',
- 'Italiano',
- 'Nederlands',
- 'Português',
- 'Türkçe',
- '简体中文'
- ],
- name: 'Ghostfolio',
- origin: $localize`Switzerland`,
- region: $localize`Global`,
- slogan: 'Open Source Wealth Management',
- useAnonymously: true
- },
+export const personalFinanceTools: Product[] = [
{
- component: AllInvestViewPageComponent,
founded: 2023,
hasSelfHostingAbility: false,
key: 'allinvestview',
@@ -92,26 +10,23 @@ export const products: Product[] = [
slogan: 'All your Investments in One View'
},
{
- component: AllvueSystemsPageComponent,
founded: 2019,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'allvue-systems',
name: 'Allvue Systems',
- origin: $localize`United States`,
+ origin: `United States`,
slogan: 'Investment Software Suite'
},
{
- component: AltooPageComponent,
founded: 2017,
hasSelfHostingAbility: false,
key: 'altoo',
name: 'Altoo Wealth Platform',
- origin: $localize`Switzerland`,
+ origin: `Switzerland`,
slogan: 'Simplicity for Complex Wealth'
},
{
- component: BasilFinancePageComponent,
founded: 2022,
hasFreePlan: true,
hasSelfHostingAbility: false,
@@ -120,56 +35,50 @@ export const products: Product[] = [
slogan: 'The ultimate solution for tracking and managing your investments'
},
{
- component: BeanvestPageComponent,
founded: 2020,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'beanvest',
name: 'Beanvest',
- origin: $localize`France`,
+ origin: `France`,
pricingPerYear: '$100',
slogan: 'Stock Portfolio Tracker for Smart Investors'
},
{
- component: CapitallyPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'capitally',
name: 'Capitally',
- origin: $localize`Poland`,
+ origin: `Poland`,
pricingPerYear: '€50',
slogan: 'Optimize your investments performance'
},
{
- component: CapMonPageComponent,
founded: 2022,
key: 'capmon',
name: 'CapMon.org',
- origin: $localize`Germany`,
+ origin: `Germany`,
note: 'CapMon.org has discontinued in 2023',
slogan: 'Next Generation Assets Tracking'
},
{
- component: CompoundPlanningPageComponent,
founded: 2019,
key: 'compound-planning',
name: 'Compound Planning',
- origin: $localize`United States`,
+ origin: `United States`,
slogan: 'Modern Wealth & Investment Management'
},
{
- component: CopilotMoneyPageComponent,
founded: 2019,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'copilot-money',
name: 'Copilot Money',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$70',
slogan: 'Do money better with Copilot'
},
{
- component: DeFiPageComponent,
founded: 2020,
key: 'de.fi',
languages: ['English'],
@@ -177,215 +86,195 @@ export const products: Product[] = [
slogan: 'DeFi Portfolio Tracker'
},
{
- component: DeltaPageComponent,
founded: 2017,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'delta',
name: 'Delta Investment Tracker',
note: 'Acquired by eToro',
- origin: $localize`Belgium`,
+ origin: `Belgium`,
slogan: 'The app to track all your investments. Make smart moves only.'
},
{
- component: DivvyDiaryPageComponent,
founded: 2019,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'divvydiary',
languages: ['Deutsch', 'English'],
name: 'DivvyDiary',
- origin: $localize`Germany`,
+ origin: `Germany`,
pricingPerYear: '€65',
slogan: 'Your personal Dividend Calendar'
},
{
- component: EmpowerPageComponent,
founded: 2009,
hasSelfHostingAbility: false,
key: 'empower',
name: 'Empower',
note: 'Originally named as Personal Capital',
- origin: $localize`United States`,
+ origin: `United States`,
slogan: 'Get answers to your money questions'
},
{
alias: '8figures',
- component: EightFiguresPageComponent,
founded: 2022,
key: 'eightfigures',
name: '8FIGURES',
- origin: $localize`United States`,
+ origin: `United States`,
slogan: 'Portfolio Tracker Designed by Professional Investors'
},
{
- component: ExirioPageComponent,
founded: 2020,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'exirio',
name: 'Exirio',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$100',
slogan: 'All your wealth, in one place.'
},
{
- component: FinaPageComponent,
founded: 2023,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'fina',
languages: ['English'],
name: 'Fina',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$115',
slogan: 'Flexible Financial Management'
},
{
- component: FinaryPageComponent,
founded: 2020,
key: 'finary',
languages: ['Deutsch', 'English', 'Français'],
name: 'Finary',
- origin: $localize`United States`,
+ origin: `United States`,
slogan: 'Real-Time Portfolio Tracker & Stock Tracker'
},
{
- component: FinWisePageComponent,
founded: 2023,
hasFreePlan: true,
key: 'finwise',
name: 'FinWise',
- origin: $localize`South Africa`,
+ origin: `South Africa`,
pricingPerYear: '€69.99',
slogan: 'Personal finances, simplified'
},
{
- component: FolisharePageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'folishare',
languages: ['Deutsch', 'English'],
name: 'folishare',
- origin: $localize`Austria`,
+ origin: `Austria`,
pricingPerYear: '$65',
slogan: 'Take control over your investments'
},
{
- component: GetquinPageComponent,
founded: 2020,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'getquin',
languages: ['Deutsch', 'English'],
name: 'getquin',
- origin: $localize`Germany`,
+ origin: `Germany`,
pricingPerYear: '€48',
slogan: 'Portfolio Tracker, Analysis & Community'
},
{
- component: GoSpatzPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'gospatz',
name: 'goSPATZ',
- origin: $localize`Germany`,
+ origin: `Germany`,
slogan: 'Volle Kontrolle über deine Investitionen'
},
{
- component: IntuitMintPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'intuit-mint',
name: 'Intuit Mint',
note: 'Intuit Mint has discontinued in 2023',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$60',
slogan: 'Managing money, made simple'
},
{
- component: JustEtfPageComponent,
founded: 2011,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'justetf',
name: 'justETF',
- origin: $localize`Germany`,
+ origin: `Germany`,
pricingPerYear: '€119',
slogan: 'ETF portfolios made simple'
},
{
- component: KoyfinPageComponent,
founded: 2016,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'koyfin',
name: 'Koyfin',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$468',
slogan: 'Comprehensive financial data analysis'
},
{
- component: KuberaPageComponent,
founded: 2019,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'kubera',
name: 'Kubera®',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$150',
slogan: 'The Time Machine for your Net Worth'
},
{
- component: MagnifiPageComponent,
founded: 2018,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'magnifi',
name: 'Magnifi',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$132',
slogan: 'AI Investing Assistant'
},
{
- component: MarketsShPageComponent,
founded: 2022,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'markets.sh',
languages: ['English'],
name: 'markets.sh',
- origin: $localize`Germany`,
+ origin: `Germany`,
pricingPerYear: '€168',
- region: $localize`Global`,
+ region: `Global`,
slogan: 'Track your investments'
},
{
- component: MaybeFinancePageComponent,
founded: 2021,
hasSelfHostingAbility: false,
key: 'maybe-finance',
languages: ['English'],
name: 'Maybe Finance',
note: 'Maybe Finance has discontinued in 2023',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$145',
- region: $localize`United States`,
+ region: `United States`,
slogan: 'Your financial future, in your control'
},
{
- component: MonarchMoneyPageComponent,
founded: 2019,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'monarch-money',
name: 'Monarch Money',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$99.99',
slogan: 'The modern way to manage your money'
},
{
- component: MonsePageComponent,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'monse',
@@ -394,51 +283,46 @@ export const products: Product[] = [
slogan: 'Gain financial control and keep your data private.'
},
{
- component: NavexaPageComponent,
founded: 2017,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'navexa',
name: 'Navexa',
- origin: $localize`Australia`,
+ origin: `Australia`,
pricingPerYear: '$90',
slogan: 'The Intelligent Portfolio Tracker'
},
{
- component: ParqetPageComponent,
founded: 2020,
hasSelfHostingAbility: false,
hasFreePlan: true,
key: 'parqet',
name: 'Parqet',
note: 'Originally named as Tresor One',
- origin: $localize`Germany`,
+ origin: `Germany`,
pricingPerYear: '€88',
region: 'Austria, Germany, Switzerland',
slogan: 'Dein Vermögen immer im Blick'
},
{
- component: PlannixPageComponent,
founded: 2023,
hasSelfHostingAbility: false,
key: 'plannix',
name: 'Plannix',
- origin: $localize`Italy`,
+ origin: `Italy`,
slogan: 'Your Personal Finance Hub'
},
{
- component: PortfolioDividendTrackerPageComponent,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'portfolio-dividend-tracker',
languages: ['English', 'Nederlands'],
name: 'Portfolio Dividend Tracker',
- origin: $localize`Netherlands`,
+ origin: `Netherlands`,
pricingPerYear: '€60',
slogan: 'Manage all your portfolios'
},
{
- component: PortfolioVisualizerPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'portfolio-visualizer',
@@ -448,172 +332,155 @@ export const products: Product[] = [
slogan: 'Tools for Better Investors'
},
{
- component: PortseidoPageComponent,
founded: 2021,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'portseido',
languages: ['Deutsch', 'English', 'Français', 'Nederlands'],
name: 'Portseido',
- origin: $localize`Thailand`,
+ origin: `Thailand`,
pricingPerYear: '$96',
slogan: 'Portfolio Performance and Dividend Tracker'
},
{
- component: ProjectionLabPageComponent,
founded: 2021,
hasFreePlan: true,
hasSelfHostingAbility: true,
key: 'projectionlab',
name: 'ProjectionLab',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$108',
slogan: 'Build Financial Plans You Love.'
},
{
- component: RocketMoneyPageComponent,
founded: 2015,
hasSelfHostingAbility: false,
key: 'rocket-money',
name: 'Rocket Money',
- origin: $localize`United States`,
+ origin: `United States`,
slogan: 'Track your net worth'
},
{
- component: SeekingAlphaPageComponent,
founded: 2004,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'seeking-alpha',
name: 'Seeking Alpha',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$239',
slogan: 'Stock Market Analysis & Tools for Investors'
},
{
- component: SharesightPageComponent,
founded: 2007,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'sharesight',
name: 'Sharesight',
- origin: $localize`New Zealand`,
+ origin: `New Zealand`,
pricingPerYear: '$135',
- region: $localize`Global`,
+ region: `Global`,
slogan: 'Stock Portfolio Tracker'
},
{
- component: SimplePortfolioPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'simple-portfolio',
name: 'Simple Portfolio',
- origin: $localize`Czech Republic`,
+ origin: `Czech Republic`,
pricingPerYear: '€80',
slogan: 'Stock Portfolio Tracker'
},
{
- component: SnowballAnalyticsPageComponent,
founded: 2021,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'snowball-analytics',
name: 'Snowball Analytics',
- origin: $localize`France`,
+ origin: `France`,
pricingPerYear: '$80',
slogan: 'Simple and powerful portfolio tracker'
},
{
- component: StockEventsPageComponent,
founded: 2019,
hasSelfHostingAbility: false,
key: 'stock-events',
name: 'Stock Events',
- origin: $localize`Germany`,
+ origin: `Germany`,
slogan: 'Track all your Investments'
},
{
- component: StocklePageComponent,
key: 'stockle',
name: 'Stockle',
- origin: $localize`Finland`,
+ origin: `Finland`,
slogan: 'Supercharge your investments tracking experience'
},
{
- component: StockMarketEyePageComponent,
founded: 2008,
key: 'stockmarketeye',
name: 'StockMarketEye',
- origin: $localize`France`,
+ origin: `France`,
note: 'StockMarketEye has discontinued in 2023',
slogan: 'A Powerful Portfolio & Investment Tracking App'
},
{
- component: StonksfolioPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'stonksfolio',
languages: ['English'],
name: 'Stonksfolio',
- origin: $localize`Bulgaria`,
+ origin: `Bulgaria`,
pricingPerYear: '€49.90',
slogan: 'Visualize all of your portfolios'
},
{
- component: SumioPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'sumio',
name: 'Sumio',
- origin: $localize`Czech Republic`,
+ origin: `Czech Republic`,
pricingPerYear: '$20',
slogan: 'Sum up and build your wealth.'
},
{
- component: TillerPageComponent,
founded: 2016,
hasFreePlan: false,
key: 'tiller',
name: 'Tiller',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$79',
slogan:
'Your financial life in a spreadsheet, automatically updated each day'
},
{
- component: UtlunaPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'utluna',
languages: ['Deutsch', 'English', 'Français'],
name: 'Utluna',
- origin: $localize`Switzerland`,
+ origin: `Switzerland`,
pricingPerYear: '$300',
slogan: 'Your Portfolio. Revealed.',
useAnonymously: true
},
{
- component: VyzerPageComponent,
founded: 2020,
hasFreePlan: true,
key: 'vyzer',
name: 'Vyzer',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$348',
slogan: 'Virtual Family Office for Smart Wealth Management'
},
{
- component: WallminePageComponent,
hasSelfHostingAbility: false,
key: 'wallmine',
languages: ['English'],
name: 'wallmine',
- origin: $localize`Czech Republic`,
+ origin: `Czech Republic`,
pricingPerYear: '$600',
slogan: 'Make Smarter Investments'
},
{
- component: WealthfolioPageComponent,
hasSelfHostingAbility: true,
key: 'wealthfolio',
languages: ['English'],
@@ -621,44 +488,40 @@ export const products: Product[] = [
slogan: 'Desktop Investment Tracker'
},
{
- component: WealthicaPageComponent,
founded: 2015,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'wealthica',
languages: ['English', 'Français'],
name: 'Wealthica',
- origin: $localize`Canada`,
+ origin: `Canada`,
pricingPerYear: '$50',
slogan: 'See all your investments in one place'
},
{
- component: WhalPageComponent,
key: 'whal',
name: 'Whal',
- origin: $localize`United States`,
+ origin: `United States`,
slogan: 'Manage your investments in one place'
},
{
- component: YeekateePageComponent,
founded: 2021,
hasFreePlan: true,
hasSelfHostingAbility: false,
key: 'yeekatee',
languages: ['Deutsch', 'English', 'Español', 'Français', 'Italiano'],
name: 'yeekatee',
- origin: $localize`Switzerland`,
- region: $localize`Global`,
+ origin: `Switzerland`,
+ region: `Global`,
slogan: 'Connect. Share. Invest.'
},
{
- component: YnabPageComponent,
founded: 2004,
hasFreePlan: false,
hasSelfHostingAbility: false,
key: 'ynab',
name: 'YNAB (You Need a Budget)',
- origin: $localize`United States`,
+ origin: `United States`,
pricingPerYear: '$99',
slogan: 'Change Your Relationship With Money'
}