Feature/extend personal finance tools pages 20230922 (#2369)

* Extend pages

* Refactoring
pull/2376/head
Thomas Kaul 1 year ago committed by GitHub
parent 8f64a77a9d
commit 6744245d8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -58,6 +58,10 @@
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -142,6 +146,10 @@
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -292,6 +300,10 @@
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-capmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -376,6 +388,10 @@
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -558,6 +574,10 @@
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-campmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -642,6 +662,10 @@
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -670,6 +694,10 @@
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-altoo</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capmon</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-copilot-money</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
@ -754,6 +782,10 @@
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-snowball-analytics</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-stockmarketeye</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sumio</loc>
<lastmod>${currentDate}T00:00:00+00:00</lastmod>

@ -96,16 +96,16 @@
Open Source Software
</td>
<td class="mat-mdc-cell px-1 py-2">
<ng-container *ngIf="product1.isOpenSource === true" i18n
<ng-container *ngIf="product1.isOpenSource" i18n
>✅ Yes</ng-container
><ng-container *ngIf="product1.isOpenSource === false" i18n
><ng-container *ngIf="!product1.isOpenSource" i18n
>❌ No</ng-container
>
</td>
<td class="mat-mdc-cell px-1 py-2">
<ng-container *ngIf="product2.isOpenSource === true" i18n
<ng-container *ngIf="product2.isOpenSource" i18n
>✅ Yes</ng-container
><ng-container *ngIf="product2.isOpenSource === false" i18n
><ng-container *ngIf="!product2.isOpenSource" i18n
>❌ No
</ng-container>
</td>

@ -1,6 +1,7 @@
import { Product } from '@ghostfolio/common/interfaces';
import { AltooPageComponent } from './products/altoo-page.component';
import { CapMonPageComponent } from './products/capmon-page.component';
import { CopilotMoneyPageComponent } from './products/copilot-money-page.component';
import { DeltaPageComponent } from './products/delta-page.component';
import { DivvyDiaryPageComponent } from './products/divvydiary-page.component';
@ -22,6 +23,7 @@ import { SeekingAlphaPageComponent } from './products/seeking-alpha-page.compone
import { SharesightPageComponent } from './products/sharesight-page.component';
import { SimplePortfolioPageComponent } from './products/simple-portfolio-page.component';
import { SnowballAnalyticsPageComponent } from './products/snowball-analytics-page.component';
import { StockMarketEyePageComponent } from './products/stockmarketeye-page.component';
import { SumioPageComponent } from './products/sumio-page.component';
import { UtlunaPageComponent } from './products/utluna-page.component';
import { YeekateePageComponent } from './products/yeekatee-page.component';
@ -45,7 +47,7 @@ export const products: Product[] = [
],
name: 'Ghostfolio',
origin: $localize`Switzerland`,
pricingPerYear: '$19',
pricingPerYear: '$24',
region: $localize`Global`,
slogan: 'Open Source Wealth Management',
useAnonymously: true
@ -54,18 +56,25 @@ export const products: Product[] = [
component: AltooPageComponent,
founded: 2017,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'altoo',
name: 'Altoo Wealth Platform',
origin: $localize`Switzerland`,
slogan: 'Simplicity for Complex Wealth'
},
{
component: CapMonPageComponent,
founded: 2022,
key: 'capmon',
name: 'CapMon.org',
origin: $localize`Germany`,
note: 'Sunset in 2023',
slogan: 'Next Generation Assets Tracking'
},
{
component: CopilotMoneyPageComponent,
founded: 2019,
hasFreePlan: false,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'copilot-money',
name: 'Copilot Money',
origin: $localize`United States`,
@ -77,7 +86,6 @@ export const products: Product[] = [
founded: 2017,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'delta',
name: 'Delta Investment Tracker',
note: 'Acquired by eToro',
@ -89,7 +97,6 @@ export const products: Product[] = [
founded: 2019,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'divvydiary',
languages: ['Deutsch', 'English'],
name: 'DivvyDiary',
@ -102,7 +109,6 @@ export const products: Product[] = [
founded: 2020,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'exirio',
name: 'Exirio',
origin: $localize`United States`,
@ -113,7 +119,6 @@ export const products: Product[] = [
component: FolisharePageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'folishare',
languages: ['Deutsch', 'English'],
name: 'folishare',
@ -126,7 +131,6 @@ export const products: Product[] = [
founded: 2020,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'getquin',
languages: ['Deutsch', 'English'],
name: 'getquin',
@ -138,7 +142,6 @@ export const products: Product[] = [
component: GoSpatzPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'gospatz',
name: 'goSPATZ',
origin: $localize`Germany`,
@ -149,7 +152,6 @@ export const products: Product[] = [
founded: 2011,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'justetf',
name: 'justETF',
origin: $localize`Germany`,
@ -161,7 +163,6 @@ export const products: Product[] = [
founded: 2019,
hasFreePlan: false,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'kubera',
name: 'Kubera®',
origin: $localize`United States`,
@ -173,7 +174,6 @@ export const products: Product[] = [
founded: 2022,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'markets.sh',
languages: ['English'],
name: 'markets.sh',
@ -186,7 +186,6 @@ export const products: Product[] = [
component: MaybeFinancePageComponent,
founded: 2021,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'maybe-finance',
languages: ['English'],
name: 'Maybe Finance',
@ -200,7 +199,6 @@ export const products: Product[] = [
component: MonsePageComponent,
hasFreePlan: false,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'monse',
name: 'Monse',
pricingPerYear: '$60',
@ -211,7 +209,6 @@ export const products: Product[] = [
founded: 2020,
hasSelfHostingAbility: false,
hasFreePlan: true,
isOpenSource: false,
key: 'parqet',
name: 'Parqet',
note: 'Originally named as Tresor One',
@ -224,7 +221,6 @@ export const products: Product[] = [
component: PlannixPageComponent,
founded: 2023,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'plannix',
name: 'Plannix',
origin: $localize`Italy`,
@ -234,7 +230,6 @@ export const products: Product[] = [
component: PortfolioDividendTrackerPageComponent,
hasFreePlan: false,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'portfolio-dividend-tracker',
languages: ['English', 'Nederlands'],
name: 'Portfolio Dividend Tracker',
@ -247,7 +242,6 @@ export const products: Product[] = [
founded: 2021,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'portseido',
languages: ['Deutsch', 'English', 'Français', 'Nederlands'],
name: 'Portseido',
@ -260,7 +254,6 @@ export const products: Product[] = [
founded: 2021,
hasFreePlan: true,
hasSelfHostingAbility: true,
isOpenSource: false,
key: 'projectionlab',
name: 'ProjectionLab',
origin: $localize`United States`,
@ -272,7 +265,6 @@ export const products: Product[] = [
founded: 2004,
hasFreePlan: false,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'seeking-alpha',
name: 'Seeking Alpha',
origin: $localize`United States`,
@ -284,7 +276,6 @@ export const products: Product[] = [
founded: 2007,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'sharesight',
name: 'Sharesight',
origin: $localize`New Zealand`,
@ -296,7 +287,6 @@ export const products: Product[] = [
component: SimplePortfolioPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'simple-portfolio',
name: 'Simple Portfolio',
origin: $localize`Czech Republic`,
@ -308,18 +298,25 @@ export const products: Product[] = [
founded: 2021,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'snowball-analytics',
name: 'Snowball Analytics',
origin: 'France',
origin: $localize`France`,
pricingPerYear: '$80',
slogan: 'Simple and powerful portfolio tracker'
},
{
component: StockMarketEyePageComponent,
founded: 2008,
key: 'stockmarketeye',
name: 'StockMarketEye',
origin: $localize`France`,
note: 'Sunset in 2023',
slogan: 'A Powerful Portfolio & Investment Tracking App'
},
{
component: SumioPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'sumio',
name: 'Sumio',
origin: $localize`Czech Republic`,
@ -330,7 +327,6 @@ export const products: Product[] = [
component: UtlunaPageComponent,
hasFreePlan: true,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'utluna',
languages: ['Deutsch', 'English', 'Français'],
name: 'Utluna',
@ -343,7 +339,6 @@ export const products: Product[] = [
component: YeekateePageComponent,
founded: 2021,
hasSelfHostingAbility: false,
isOpenSource: false,
key: 'yeekatee',
name: 'yeekatee',
origin: $localize`Switzerland`,

@ -0,0 +1,31 @@
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
import { products } from '../products';
@Component({
host: { class: 'page' },
imports: [CommonModule, MatButtonModule, RouterModule],
selector: 'gf-capmon-page',
standalone: true,
styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html'
})
export class CapMonPageComponent {
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'
];
}

@ -0,0 +1,31 @@
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
import { products } from '../products';
@Component({
host: { class: 'page' },
imports: [CommonModule, MatButtonModule, RouterModule],
selector: 'gf-stockmarketeye-page',
standalone: true,
styleUrls: ['../product-page-template.scss'],
templateUrl: '../product-page-template.html'
})
export class StockMarketEyePageComponent {
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'
];
}

@ -3,7 +3,7 @@ export interface Product {
founded?: number;
hasFreePlan?: boolean;
hasSelfHostingAbility?: boolean;
isOpenSource: boolean;
isOpenSource?: boolean;
key: string;
languages?: string[];
name: string;

Loading…
Cancel
Save