Browse Source

Improve product pages (#2143)

pull/2144/head
Thomas Kaul 2 years ago
committed by GitHub
parent
commit
c25f532487
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 71
      apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html
  2. 8
      apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.scss
  3. 30
      apps/client/src/app/pages/resources/personal-finance-tools/products.ts
  4. 3
      libs/common/src/lib/interfaces/product.ts

71
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html

@ -21,9 +21,15 @@
financial future. financial future.
</p> </p>
<p> <p>
Ghostfolio is open source software (OSS) where a community of Ghostfolio is an open source software (OSS), providing a
developers, contributors, and enthusiasts collaborate to enhance its cost-effective alternative to {{ product2.name }} making it
capabilities, security, and user experience. particularly suitable for individuals on a tight budget, such as
those
<a href="../en/blog/2023/07/exploring-the-path-to-fire"
>pursuing Financial Independence, Retire Early (FIRE)</a
>. By leveraging the collective efforts of a community of developers
and personal finance enthusiasts, Ghostfolio continuously enhances
its capabilities, security, and user experience.
</p> </p>
<p> <p>
Let’s dive deeper into the detailed comparison table below to gain a Let’s dive deeper into the detailed comparison table below to gain a
@ -69,8 +75,18 @@
<td class="mat-mdc-cell px-3 py-2 text-right" i18n> <td class="mat-mdc-cell px-3 py-2 text-right" i18n>
Available in Available in
</td> </td>
<td class="mat-mdc-cell px-1 py-2">{{ product1.languages }}</td> <td class="mat-mdc-cell px-1 py-2">
<td class="mat-mdc-cell px-1 py-2">{{ product2.languages }}</td> <ng-container
*ngFor="let language of product1.languages; last as isLast"
>{{ language }}{{ isLast ? '' : ', ' }}</ng-container
>
</td>
<td class="mat-mdc-cell px-1 py-2">
<ng-container
*ngFor="let language of product2.languages; last as isLast"
>{{ language }}{{ isLast ? '' : ', ' }}</ng-container
>
</td>
</tr> </tr>
<tr class="mat-mdc-row"> <tr class="mat-mdc-row">
<td class="mat-mdc-cell px-3 py-2 text-right" i18n> <td class="mat-mdc-cell px-3 py-2 text-right" i18n>
@ -118,6 +134,25 @@
> >
</td> </td>
</tr> </tr>
<tr class="mat-mdc-row">
<td class="mat-mdc-cell px-3 py-2 text-right" i18n>
Use anonymously
</td>
<td class="mat-mdc-cell px-1 py-2">
<ng-container *ngIf="product1.useAnonymously === true" i18n
>✅ Yes</ng-container
><ng-container *ngIf="product1.useAnonymously === false" i18n
>❌ No</ng-container
>
</td>
<td class="mat-mdc-cell px-1 py-2">
<ng-container *ngIf="product2.useAnonymously === true" i18n
>✅ Yes</ng-container
><ng-container *ngIf="product2.useAnonymously === false" i18n
>❌ No</ng-container
>
</td>
</tr>
<tr class="mat-mdc-row"> <tr class="mat-mdc-row">
<td class="mat-mdc-cell px-3 py-2 text-right" i18n> <td class="mat-mdc-cell px-3 py-2 text-right" i18n>
Free Plan Free Plan
@ -157,7 +192,19 @@
</tbody> </tbody>
</table> </table>
</section> </section>
<section class="mb-4 py-3"> <section class="mb-4">
<p>
Please note that the information provided is based on our
independent research and analysis. This website is not affiliated
with {{ product2.name }} or any other product mentioned in the
comparison. As the landscape of personal finance tools evolves, it
is essential to verify any specific details or changes directly from
the respective product page. Data needs a refresh? Help us maintain
accurate data on
<a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>.
</p>
</section>
<section class="call-to-action mb-4 py-3 rounded">
<h2 class="h4 mb-0 text-center"> <h2 class="h4 mb-0 text-center">
Ready to take your <strong>investments</strong> to the Ready to take your <strong>investments</strong> to the
<strong>next level</strong>? <strong>next level</strong>?
@ -172,18 +219,6 @@
</a> </a>
</div> </div>
</section> </section>
<section class="mb-4">
<small>
Please note that the information provided is based on our
independent research and analysis. This website is not affiliated
with {{ product2.name }} or any other product mentioned in the
comparison. As the landscape of personal finance tools evolves, it
is essential to verify any specific details or changes directly from
the respective product page. Data needs a refresh? Help us maintain
accurate data on
<a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>.
</small>
</section>
<section class="mb-4"> <section class="mb-4">
<ul class="list-inline"> <ul class="list-inline">
<li class="list-inline-item"> <li class="list-inline-item">

8
apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.scss

@ -10,8 +10,16 @@
color: rgba(var(--palette-primary-300), 1); color: rgba(var(--palette-primary-300), 1);
} }
} }
.call-to-action {
background-color: rgba(var(--palette-foreground-text), 0.02);
}
} }
:host-context(.is-dark-theme) { :host-context(.is-dark-theme) {
color: rgb(var(--light-primary-text)); color: rgb(var(--light-primary-text));
.call-to-action {
background-color: rgba(var(--palette-foreground-text-dark), 0.02);
}
} }

30
apps/client/src/app/pages/resources/personal-finance-tools/products.ts

@ -33,12 +33,21 @@ export const products: Product[] = [
hasSelfHostingAbility: true, hasSelfHostingAbility: true,
isOpenSource: true, isOpenSource: true,
key: 'ghostfolio', key: 'ghostfolio',
languages: 'Dutch, English, French, German, Italian, Portuguese, Spanish', languages: [
'Dutch',
'English',
'French',
'German',
'Italian',
'Portuguese',
'Spanish'
],
name: 'Ghostfolio', name: 'Ghostfolio',
origin: 'Switzerland', origin: 'Switzerland',
pricingPerYear: '$19', pricingPerYear: '$19',
region: 'Global', region: 'Global',
slogan: 'Open Source Wealth Management' slogan: 'Open Source Wealth Management',
useAnonymously: true
}, },
{ {
component: AltooPageComponent, component: AltooPageComponent,
@ -81,7 +90,7 @@ export const products: Product[] = [
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false, isOpenSource: false,
key: 'divvydiary', key: 'divvydiary',
languages: 'English, German', languages: ['English', 'German'],
name: 'DivvyDiary', name: 'DivvyDiary',
origin: 'Germany', origin: 'Germany',
pricingPerYear: '€65', pricingPerYear: '€65',
@ -105,7 +114,7 @@ export const products: Product[] = [
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false, isOpenSource: false,
key: 'folishare', key: 'folishare',
languages: 'English, German', languages: ['English', 'German'],
name: 'folishare', name: 'folishare',
origin: 'Austria', origin: 'Austria',
pricingPerYear: '$65', pricingPerYear: '$65',
@ -118,7 +127,7 @@ export const products: Product[] = [
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false, isOpenSource: false,
key: 'getquin', key: 'getquin',
languages: 'English, German', languages: ['English', 'German'],
name: 'getquin', name: 'getquin',
origin: 'Germany', origin: 'Germany',
pricingPerYear: '€48', pricingPerYear: '€48',
@ -164,7 +173,7 @@ export const products: Product[] = [
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false, isOpenSource: false,
key: 'maybe-finance', key: 'maybe-finance',
languages: 'English', languages: ['English'],
name: 'Maybe Finance', name: 'Maybe Finance',
note: 'Sunset in 2023', note: 'Sunset in 2023',
origin: 'United States', origin: 'United States',
@ -212,7 +221,7 @@ export const products: Product[] = [
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false, isOpenSource: false,
key: 'portfolio-dividend-tracker', key: 'portfolio-dividend-tracker',
languages: 'English, Dutch', languages: ['English', 'Dutch'],
name: 'Portfolio Dividend Tracker', name: 'Portfolio Dividend Tracker',
origin: 'Netherlands', origin: 'Netherlands',
pricingPerYear: '€60', pricingPerYear: '€60',
@ -225,7 +234,7 @@ export const products: Product[] = [
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false, isOpenSource: false,
key: 'portseido', key: 'portseido',
languages: 'Dutch, English, French, German', languages: ['Dutch', 'English', 'French', 'German'],
name: 'Portseido', name: 'Portseido',
origin: 'Thailand', origin: 'Thailand',
pricingPerYear: '$96', pricingPerYear: '$96',
@ -308,11 +317,12 @@ export const products: Product[] = [
hasSelfHostingAbility: false, hasSelfHostingAbility: false,
isOpenSource: false, isOpenSource: false,
key: 'utluna', key: 'utluna',
languages: 'English, French, German', languages: ['English', 'French', 'German'],
name: 'Utluna', name: 'Utluna',
origin: 'Switzerland', origin: 'Switzerland',
pricingPerYear: '$300', pricingPerYear: '$300',
slogan: 'Your Portfolio. Revealed.' slogan: 'Your Portfolio. Revealed.',
useAnonymously: true
}, },
{ {
component: YeekateePageComponent, component: YeekateePageComponent,

3
libs/common/src/lib/interfaces/product.ts

@ -5,11 +5,12 @@ export interface Product {
hasSelfHostingAbility?: boolean; hasSelfHostingAbility?: boolean;
isOpenSource: boolean; isOpenSource: boolean;
key: string; key: string;
languages?: string; languages?: string[];
name: string; name: string;
note?: string; note?: string;
origin?: string; origin?: string;
pricingPerYear?: string; pricingPerYear?: string;
region?: string; region?: string;
slogan?: string; slogan?: string;
useAnonymously?: boolean;
} }

Loading…
Cancel
Save