mirror of https://github.com/ghostfolio/ghostfolio
Browse Source
* Divide FAQ page in three sections * General * Cloud (SaaS) * Self-Hosting * Update changelogpull/3010/head^2
Thomas Kaul
11 months ago
committed by
GitHub
25 changed files with 744 additions and 328 deletions
@ -1,291 +1,29 @@ |
|||||
<div class="container"> |
<mat-tab-nav-panel #tabPanel class="flex-grow-1 overflow-auto"> |
||||
<div class="mb-5 row"> |
<router-outlet></router-outlet> |
||||
<div class="col"> |
</mat-tab-nav-panel> |
||||
<h1 class="d-none d-sm-block h3 mb-4 text-center" i18n> |
|
||||
Frequently Asked Questions (FAQ) |
<nav |
||||
</h1> |
mat-align-tabs="center" |
||||
<p> |
mat-tab-nav-bar |
||||
Find quick answers to commonly asked questions about Ghostfolio in our |
[disablePagination]="true" |
||||
Frequently Asked Questions (FAQ) section. Discover what Ghostfolio is, |
[tabPanel]="tabPanel" |
||||
explore its features, and learn about our privacy practices. Get all the |
> |
||||
information you need in one place. |
<ng-container *ngFor="let tab of tabs"> |
||||
</p> |
<a |
||||
<mat-card appearance="outlined" class="mb-3"> |
#rla="routerLinkActive" |
||||
<mat-card-header> |
*ngIf="tab.showCondition !== false" |
||||
<mat-card-title>What is Ghostfolio?</mat-card-title> |
class="no-min-width px-3" |
||||
</mat-card-header> |
mat-tab-link |
||||
<mat-card-content> |
routerLinkActive |
||||
Ghostfolio is a lightweight, open source wealth management application |
[active]="rla.isActive" |
||||
for individuals to keep track of their net worth. The software |
[routerLink]="tab.path" |
||||
empowers you to make solid, data-driven investment decisions. |
[routerLinkActiveOptions]="{ exact: true }" |
||||
</mat-card-content> |
> |
||||
</mat-card> |
<ion-icon |
||||
<mat-card appearance="outlined" class="mb-3"> |
[name]="tab.iconName" |
||||
<mat-card-header> |
[size]="deviceType === 'mobile' ? 'large': 'small'" |
||||
<mat-card-title |
/> |
||||
>What assets can I track with Ghostfolio?</mat-card-title |
<div class="d-none d-sm-block ml-2">{{ tab.label }}</div> |
||||
> |
</a> |
||||
</mat-card-header> |
</ng-container> |
||||
<mat-card-content> |
</nav> |
||||
With Ghostfolio, you can keep track of various assets like stocks, |
|
||||
ETFs, bonds, cryptocurrencies and commodities. |
|
||||
</mat-card-content> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>What else is included in Ghostfolio?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content> |
|
||||
Please find a feature overview to manage your wealth |
|
||||
<a [routerLink]="routerLinkFeatures">here</a>. |
|
||||
</mat-card-content> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title>How do I start?</mat-card-title> |
|
||||
</mat-card-header> |
|
||||
<mat-card-content> |
|
||||
You can sign up via the “<a [routerLink]="routerLinkRegister" |
|
||||
>Get Started</a |
|
||||
>” button at the top of the page. You have multiple options to join |
|
||||
Ghostfolio: Create an account with a security token or |
|
||||
<i>Google Sign</i>. We will guide you to set up your portfolio. |
|
||||
</mat-card-content> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>Will you spam me with emails once I sign up?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content> |
|
||||
No, we do not even collect your email address, so you will not receive |
|
||||
any spam emails from us. |
|
||||
</mat-card-content> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>Can I use Ghostfolio anonymously?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content> |
|
||||
Yes, the authentication system via security token enables you to sign |
|
||||
in securely and anonymously to Ghostfolio. There is no need for an |
|
||||
e-mail address, phone number, or a username. |
|
||||
</mat-card-content> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>How can Ghostfolio be free?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content |
|
||||
>This project is driven by the efforts of contributors from around the |
|
||||
world. The |
|
||||
<a href="https://github.com/ghostfolio/ghostfolio">source code</a> is |
|
||||
fully available as open source software (OSS). Thanks to our generous |
|
||||
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> users and |
|
||||
<a href="https://www.buymeacoffee.com/ghostfolio">sponsors</a> we have |
|
||||
the ability to run a free, limited plan for novice |
|
||||
investors.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title>Is it really free?</mat-card-title></mat-card-header |
|
||||
> |
|
||||
<mat-card-content |
|
||||
>Yes, it is! Our |
|
||||
<a [routerLink]="routerLinkPricing">pricing page</a> details |
|
||||
everything you get for free.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>Do you monetize or sell my financial data?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content |
|
||||
>No, we value your privacy. We do not sell or share your financial |
|
||||
data with any third parties.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>What is your business model?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content |
|
||||
>By offering |
|
||||
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a>, a |
|
||||
subscription plan with a managed hosting service and enhanced |
|
||||
features, we fund our business while providing added value to our |
|
||||
users.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>What is Ghostfolio Premium?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content |
|
||||
><a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> is a fully |
|
||||
managed Ghostfolio cloud offering for ambitious investors. Revenue is |
|
||||
used to cover the costs of the hosting infrastructure and to fund |
|
||||
ongoing development. It is the Open Source code base with some extras |
|
||||
like the <a [routerLink]="routerLinkMarkets">markets overview</a> and |
|
||||
a professional data provider.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>Can I start with a trial version?</mat-card-title |
|
||||
></mat-card-header |
|
||||
> |
|
||||
<mat-card-content |
|
||||
>Yes, you can try |
|
||||
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> by signing |
|
||||
up for Ghostfolio and applying for a trial (see “My Ghostfolio”). It |
|
||||
is easy, free and there is no commitment. You can stop using it at any |
|
||||
time.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>How can I get a student discount for Ghostfolio |
|
||||
Premium?</mat-card-title |
|
||||
> |
|
||||
</mat-card-header> |
|
||||
<mat-card-content |
|
||||
>Request your student discount |
|
||||
<a href="mailto:hi@ghostfol.io?Subject=Student Discount">here</a> with |
|
||||
your university e-mail address.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>Does the Ghostfolio Premium subscription renew |
|
||||
automatically?</mat-card-title |
|
||||
> |
|
||||
</mat-card-header> |
|
||||
<mat-card-content |
|
||||
>No, <a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> does |
|
||||
not include auto-renewal. Upon expiration, you can choose whether to |
|
||||
start a new subscription.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title>Which devices are supported?</mat-card-title> |
|
||||
</mat-card-header> |
|
||||
<mat-card-content |
|
||||
>Ghostfolio works in every modern web browser on smartphones, tablets |
|
||||
and desktop computers. For <i>Android</i> users, there is a dedicated |
|
||||
Ghostfolio app available in the |
|
||||
<a |
|
||||
href="https://play.google.com/store/apps/details?id=ch.dotsilver.ghostfolio.twa" |
|
||||
>Google Play Store</a |
|
||||
>.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card |
|
||||
*ngIf="user?.subscription?.type === 'Premium'" |
|
||||
appearance="outlined" |
|
||||
class="mb-3" |
|
||||
> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>I cannot find my broker in the list of platforms. What can I |
|
||||
do?</mat-card-title |
|
||||
> |
|
||||
</mat-card-header> |
|
||||
<mat-card-content> |
|
||||
Please send an e-mail with the web address of your broker to |
|
||||
<a href="mailto:hi@ghostfol.io">hi@ghostfol.io</a> and we are |
|
||||
happy to add it. |
|
||||
</mat-card-content> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title |
|
||||
>Ghostfolio sounds cool, how can I get involved?</mat-card-title |
|
||||
> |
|
||||
</mat-card-header> |
|
||||
<mat-card-content |
|
||||
>Any support for Ghostfolio is welcome. Be it with a |
|
||||
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> |
|
||||
subscription to finance the hosting infrastructure, a positive rating |
|
||||
in the |
|
||||
<a |
|
||||
href="https://play.google.com/store/apps/details?id=ch.dotsilver.ghostfolio.twa" |
|
||||
>Google Play Store</a |
|
||||
>, a star on |
|
||||
<a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>, |
|
||||
feedback, bug reports, feature requests and of course contributions! |
|
||||
You can reach us via Ghostfolio |
|
||||
<a |
|
||||
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
|
||||
title="Join the Ghostfolio Slack community" |
|
||||
>Slack</a |
|
||||
> |
|
||||
community, |
|
||||
<a |
|
||||
href="https://twitter.com/ghostfolio_" |
|
||||
title="Post to Ghostfolio on X (formerly Twitter)" |
|
||||
>@ghostfolio_</a |
|
||||
><ng-container *ngIf="user?.subscription?.type === 'Premium'" |
|
||||
>, |
|
||||
<a href="mailto:hi@ghostfol.io" title="Send an e-mail" |
|
||||
>hi@ghostfol.io</a |
|
||||
></ng-container |
|
||||
> |
|
||||
or |
|
||||
<a |
|
||||
href="https://github.com/ghostfolio/ghostfolio" |
|
||||
title="Find Ghostfolio on GitHub" |
|
||||
>GitHub</a |
|
||||
>.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
<mat-card appearance="outlined" class="mb-3"> |
|
||||
<mat-card-header> |
|
||||
<mat-card-title>Got any other questions?</mat-card-title> |
|
||||
</mat-card-header> |
|
||||
<mat-card-content |
|
||||
>Please join the Ghostfolio |
|
||||
<a |
|
||||
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
|
||||
title="Join the Ghostfolio Slack community" |
|
||||
>Slack </a |
|
||||
>community, post to |
|
||||
<a |
|
||||
href="https://twitter.com/ghostfolio_" |
|
||||
title="Post to Ghostfolio on X (formerly Twitter)" |
|
||||
>@ghostfolio_</a |
|
||||
><ng-container *ngIf="user?.subscription?.type === 'Premium'" |
|
||||
>, send an e-mail to |
|
||||
<a href="mailto:hi@ghostfol.io" title="Send an e-mail" |
|
||||
>hi@ghostfol.io</a |
|
||||
></ng-container |
|
||||
> |
|
||||
or start a discussion at |
|
||||
<a |
|
||||
href="https://github.com/ghostfolio/ghostfolio" |
|
||||
title="Find Ghostfolio on GitHub" |
|
||||
>GitHub</a |
|
||||
>.</mat-card-content |
|
||||
> |
|
||||
</mat-card> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
@ -1,13 +1,14 @@ |
|||||
import { CommonModule } from '@angular/common'; |
import { CommonModule } from '@angular/common'; |
||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
||||
import { MatCardModule } from '@angular/material/card'; |
import { MatTabsModule } from '@angular/material/tabs'; |
||||
|
import { RouterModule } from '@angular/router'; |
||||
|
|
||||
import { FaqPageRoutingModule } from './faq-page-routing.module'; |
import { FaqPageRoutingModule } from './faq-page-routing.module'; |
||||
import { FaqPageComponent } from './faq-page.component'; |
import { FaqPageComponent } from './faq-page.component'; |
||||
|
|
||||
@NgModule({ |
@NgModule({ |
||||
declarations: [FaqPageComponent], |
declarations: [FaqPageComponent], |
||||
imports: [CommonModule, FaqPageRoutingModule, MatCardModule], |
imports: [CommonModule, FaqPageRoutingModule, MatTabsModule, RouterModule], |
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
||||
}) |
}) |
||||
export class FaqPageModule {} |
export class FaqPageModule {} |
||||
|
@ -1,12 +1,7 @@ |
|||||
:host { |
:host { |
||||
display: block; |
color: rgb(var(--dark-primary-text)); |
||||
|
} |
||||
a { |
|
||||
color: rgba(var(--palette-primary-500), 1); |
|
||||
font-weight: 500; |
|
||||
|
|
||||
&:hover { |
:host-context(.is-dark-theme) { |
||||
color: rgba(var(--palette-primary-300), 1); |
color: rgb(var(--light-primary-text)); |
||||
} |
|
||||
} |
|
||||
} |
} |
||||
|
@ -0,0 +1,21 @@ |
|||||
|
import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; |
||||
|
|
||||
|
import { NgModule } from '@angular/core'; |
||||
|
import { RouterModule, Routes } from '@angular/router'; |
||||
|
|
||||
|
import { FaqOverviewPageComponent } from './faq-overview-page.component'; |
||||
|
|
||||
|
const routes: Routes = [ |
||||
|
{ |
||||
|
canActivate: [AuthGuard], |
||||
|
component: FaqOverviewPageComponent, |
||||
|
path: '', |
||||
|
title: $localize`Frequently Asked Questions (FAQ)` |
||||
|
} |
||||
|
]; |
||||
|
|
||||
|
@NgModule({ |
||||
|
imports: [RouterModule.forChild(routes)], |
||||
|
exports: [RouterModule] |
||||
|
}) |
||||
|
export class FaqOverviewPageRoutingModule {} |
@ -0,0 +1,41 @@ |
|||||
|
import { UserService } from '@ghostfolio/client/services/user/user.service'; |
||||
|
import { User } from '@ghostfolio/common/interfaces'; |
||||
|
|
||||
|
import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; |
||||
|
import { Subject, takeUntil } from 'rxjs'; |
||||
|
|
||||
|
@Component({ |
||||
|
host: { class: 'page' }, |
||||
|
selector: 'gf-faq-overview-page', |
||||
|
styleUrls: ['./faq-overview-page.scss'], |
||||
|
templateUrl: './faq-overview-page.html' |
||||
|
}) |
||||
|
export class FaqOverviewPageComponent implements OnDestroy { |
||||
|
public routerLinkFeatures = ['/' + $localize`features`]; |
||||
|
public routerLinkPricing = ['/' + $localize`pricing`]; |
||||
|
public user: User; |
||||
|
|
||||
|
private unsubscribeSubject = new Subject<void>(); |
||||
|
|
||||
|
public constructor( |
||||
|
private changeDetectorRef: ChangeDetectorRef, |
||||
|
private userService: UserService |
||||
|
) {} |
||||
|
|
||||
|
public ngOnInit() { |
||||
|
this.userService.stateChanged |
||||
|
.pipe(takeUntil(this.unsubscribeSubject)) |
||||
|
.subscribe((state) => { |
||||
|
if (state?.user) { |
||||
|
this.user = state.user; |
||||
|
|
||||
|
this.changeDetectorRef.markForCheck(); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public ngOnDestroy() { |
||||
|
this.unsubscribeSubject.next(); |
||||
|
this.unsubscribeSubject.complete(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,172 @@ |
|||||
|
<div class="container"> |
||||
|
<div class="mb-5 row"> |
||||
|
<div class="col"> |
||||
|
<h1 class="d-none d-sm-block h3 mb-4 text-center" i18n> |
||||
|
Frequently Asked Questions (FAQ) |
||||
|
</h1> |
||||
|
<p> |
||||
|
Find quick answers to commonly asked questions about Ghostfolio in our |
||||
|
Frequently Asked Questions (FAQ) section. Discover what Ghostfolio is, |
||||
|
explore its features, and learn about our privacy practices. Get all the |
||||
|
information you need in one place. |
||||
|
</p> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>What is Ghostfolio?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content> |
||||
|
Ghostfolio is a lightweight, open source wealth management application |
||||
|
for individuals to keep track of their net worth. The software |
||||
|
empowers you to make solid, data-driven investment decisions. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>What assets can I track with Ghostfolio?</mat-card-title |
||||
|
> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content> |
||||
|
With Ghostfolio, you can keep track of various assets like stocks, |
||||
|
ETFs, bonds, cryptocurrencies and commodities. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>What else is included in Ghostfolio?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content> |
||||
|
Please find a feature overview to manage your wealth |
||||
|
<a [routerLink]="routerLinkFeatures">here</a>. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>Can I use Ghostfolio anonymously?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content> |
||||
|
Yes, the authentication system via security token enables you to sign |
||||
|
in securely and anonymously to Ghostfolio. There is no need for an |
||||
|
e-mail address, phone number, or a username. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>How can Ghostfolio be free?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content |
||||
|
>This project is driven by the efforts of contributors from around the |
||||
|
world. The |
||||
|
<a href="https://github.com/ghostfolio/ghostfolio">source code</a> is |
||||
|
fully available as open source software (OSS). Thanks to our generous |
||||
|
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> users and |
||||
|
<a href="https://www.buymeacoffee.com/ghostfolio">sponsors</a> we have |
||||
|
the ability to run a free, limited plan for novice |
||||
|
investors.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>Do you monetize or sell my financial data?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content |
||||
|
>No, we value your privacy. We do not sell or share your financial |
||||
|
data with any third parties.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>What is your business model?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content |
||||
|
>By offering |
||||
|
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a>, a |
||||
|
subscription plan with a managed hosting service and enhanced |
||||
|
features, we fund our business while providing added value to our |
||||
|
users.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>Ghostfolio sounds cool, how can I get involved?</mat-card-title |
||||
|
> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>Any support for Ghostfolio is welcome. Be it with a |
||||
|
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> |
||||
|
subscription to finance the hosting infrastructure, a positive rating |
||||
|
in the |
||||
|
<a |
||||
|
href="https://play.google.com/store/apps/details?id=ch.dotsilver.ghostfolio.twa" |
||||
|
>Google Play Store</a |
||||
|
>, a star on |
||||
|
<a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>, |
||||
|
feedback, bug reports, feature requests and of course contributions! |
||||
|
You can reach us via Ghostfolio |
||||
|
<a |
||||
|
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
||||
|
title="Join the Ghostfolio Slack community" |
||||
|
>Slack</a |
||||
|
> |
||||
|
community, |
||||
|
<a |
||||
|
href="https://twitter.com/ghostfolio_" |
||||
|
title="Post to Ghostfolio on X (formerly Twitter)" |
||||
|
>@ghostfolio_</a |
||||
|
><ng-container *ngIf="user?.subscription?.type === 'Premium'" |
||||
|
>, |
||||
|
<a href="mailto:hi@ghostfol.io" title="Send an e-mail" |
||||
|
>hi@ghostfol.io</a |
||||
|
></ng-container |
||||
|
> |
||||
|
or |
||||
|
<a |
||||
|
href="https://github.com/ghostfolio/ghostfolio" |
||||
|
title="Find Ghostfolio on GitHub" |
||||
|
>GitHub</a |
||||
|
>.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>Got any other questions?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>Please join the Ghostfolio |
||||
|
<a |
||||
|
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
||||
|
title="Join the Ghostfolio Slack community" |
||||
|
>Slack </a |
||||
|
>community, post to |
||||
|
<a |
||||
|
href="https://twitter.com/ghostfolio_" |
||||
|
title="Post to Ghostfolio on X (formerly Twitter)" |
||||
|
>@ghostfolio_</a |
||||
|
><ng-container *ngIf="user?.subscription?.type === 'Premium'" |
||||
|
>, send an e-mail to |
||||
|
<a href="mailto:hi@ghostfol.io" title="Send an e-mail" |
||||
|
>hi@ghostfol.io</a |
||||
|
></ng-container |
||||
|
> |
||||
|
or start a discussion at |
||||
|
<a |
||||
|
href="https://github.com/ghostfolio/ghostfolio" |
||||
|
title="Find Ghostfolio on GitHub" |
||||
|
>GitHub</a |
||||
|
>.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,13 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
||||
|
import { MatCardModule } from '@angular/material/card'; |
||||
|
|
||||
|
import { FaqOverviewPageRoutingModule } from './faq-overview-page-routing.module'; |
||||
|
import { FaqOverviewPageComponent } from './faq-overview-page.component'; |
||||
|
|
||||
|
@NgModule({ |
||||
|
declarations: [FaqOverviewPageComponent], |
||||
|
imports: [CommonModule, FaqOverviewPageRoutingModule, MatCardModule], |
||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
||||
|
}) |
||||
|
export class FaqOverviewPageModule {} |
@ -0,0 +1,12 @@ |
|||||
|
:host { |
||||
|
display: block; |
||||
|
|
||||
|
a { |
||||
|
color: rgba(var(--palette-primary-500), 1); |
||||
|
font-weight: 500; |
||||
|
|
||||
|
&:hover { |
||||
|
color: rgba(var(--palette-primary-300), 1); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,21 @@ |
|||||
|
import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; |
||||
|
|
||||
|
import { NgModule } from '@angular/core'; |
||||
|
import { RouterModule, Routes } from '@angular/router'; |
||||
|
|
||||
|
import { SaasPageComponent } from './saas-page.component'; |
||||
|
|
||||
|
const routes: Routes = [ |
||||
|
{ |
||||
|
canActivate: [AuthGuard], |
||||
|
component: SaasPageComponent, |
||||
|
path: '', |
||||
|
title: $localize`Cloud` + ' (SaaS) – ' + $localize`FAQ` |
||||
|
} |
||||
|
]; |
||||
|
|
||||
|
@NgModule({ |
||||
|
imports: [RouterModule.forChild(routes)], |
||||
|
exports: [RouterModule] |
||||
|
}) |
||||
|
export class SaasPageRoutingModule {} |
@ -0,0 +1,42 @@ |
|||||
|
import { UserService } from '@ghostfolio/client/services/user/user.service'; |
||||
|
import { User } from '@ghostfolio/common/interfaces'; |
||||
|
|
||||
|
import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; |
||||
|
import { Subject, takeUntil } from 'rxjs'; |
||||
|
|
||||
|
@Component({ |
||||
|
host: { class: 'page' }, |
||||
|
selector: 'gf-saas-page', |
||||
|
styleUrls: ['./saas-page.scss'], |
||||
|
templateUrl: './saas-page.html' |
||||
|
}) |
||||
|
export class SaasPageComponent implements OnDestroy { |
||||
|
public routerLinkMarkets = ['/' + $localize`markets`]; |
||||
|
public routerLinkPricing = ['/' + $localize`pricing`]; |
||||
|
public routerLinkRegister = ['/' + $localize`register`]; |
||||
|
public user: User; |
||||
|
|
||||
|
private unsubscribeSubject = new Subject<void>(); |
||||
|
|
||||
|
public constructor( |
||||
|
private changeDetectorRef: ChangeDetectorRef, |
||||
|
private userService: UserService |
||||
|
) {} |
||||
|
|
||||
|
public ngOnInit() { |
||||
|
this.userService.stateChanged |
||||
|
.pipe(takeUntil(this.unsubscribeSubject)) |
||||
|
.subscribe((state) => { |
||||
|
if (state?.user) { |
||||
|
this.user = state.user; |
||||
|
|
||||
|
this.changeDetectorRef.markForCheck(); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public ngOnDestroy() { |
||||
|
this.unsubscribeSubject.next(); |
||||
|
this.unsubscribeSubject.complete(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,162 @@ |
|||||
|
<div class="container"> |
||||
|
<div class="mb-5 row"> |
||||
|
<div class="col"> |
||||
|
<h1 class="d-none d-sm-block h3 mb-4 text-center" i18n> |
||||
|
Frequently Asked Questions (FAQ) |
||||
|
</h1> |
||||
|
<p> |
||||
|
Find quick answers to commonly asked questions about the fully managed |
||||
|
Ghostfolio cloud offering in our Frequently Asked Questions (FAQ) |
||||
|
section. |
||||
|
</p> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>How do I start?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content> |
||||
|
You can sign up via the “<a [routerLink]="routerLinkRegister" |
||||
|
>Get Started</a |
||||
|
>” button at the top of the page. You have multiple options to join |
||||
|
Ghostfolio: Create an account with a security token or |
||||
|
<i>Google Sign</i>. We will guide you to set up your portfolio. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>Will you spam me with emails once I sign up?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content> |
||||
|
No, we do not even collect your email address, so you will not receive |
||||
|
any spam emails from us. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>Is it really free?</mat-card-title></mat-card-header |
||||
|
> |
||||
|
<mat-card-content |
||||
|
>Yes, it is! Our |
||||
|
<a [routerLink]="routerLinkPricing">pricing page</a> details |
||||
|
everything you get for free.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>What is Ghostfolio Premium?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content |
||||
|
><a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> is a fully |
||||
|
managed Ghostfolio cloud offering for ambitious investors. Revenue is |
||||
|
used to cover the costs of the hosting infrastructure and to fund |
||||
|
ongoing development. It is the Open Source code base with some extras |
||||
|
like the <a [routerLink]="routerLinkMarkets">markets overview</a> and |
||||
|
a professional data provider.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>Can I start with a trial version?</mat-card-title |
||||
|
></mat-card-header |
||||
|
> |
||||
|
<mat-card-content |
||||
|
>Yes, you can try |
||||
|
<a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> by signing |
||||
|
up for Ghostfolio and applying for a trial (see “My Ghostfolio”). It |
||||
|
is easy, free and there is no commitment. You can stop using it at any |
||||
|
time.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>How can I get a student discount for Ghostfolio |
||||
|
Premium?</mat-card-title |
||||
|
> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>Request your student discount |
||||
|
<a href="mailto:hi@ghostfol.io?Subject=Student Discount">here</a> with |
||||
|
your university e-mail address.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>Does the Ghostfolio Premium subscription renew |
||||
|
automatically?</mat-card-title |
||||
|
> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>No, <a [routerLink]="routerLinkPricing">Ghostfolio Premium</a> does |
||||
|
not include auto-renewal. Upon expiration, you can choose whether to |
||||
|
start a new subscription.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card |
||||
|
*ngIf="user?.subscription?.type === 'Premium'" |
||||
|
appearance="outlined" |
||||
|
class="mb-3" |
||||
|
> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title |
||||
|
>I cannot find my broker in the list of platforms. What can I |
||||
|
do?</mat-card-title |
||||
|
> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content> |
||||
|
Please send an e-mail with the web address of your broker to |
||||
|
<a href="mailto:hi@ghostfol.io">hi@ghostfol.io</a> and we are |
||||
|
happy to add it. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>Which devices are supported?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>Ghostfolio works in every modern web browser on smartphones, tablets |
||||
|
and desktop computers. For <i>Android</i> users of the managed cloud |
||||
|
offering, there is a dedicated Ghostfolio app available in the |
||||
|
<a |
||||
|
href="https://play.google.com/store/apps/details?id=ch.dotsilver.ghostfolio.twa" |
||||
|
>Google Play Store</a |
||||
|
>.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>Got any other questions?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>Please join the Ghostfolio |
||||
|
<a |
||||
|
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
||||
|
title="Join the Ghostfolio Slack community" |
||||
|
>Slack </a |
||||
|
>community, post to |
||||
|
<a |
||||
|
href="https://twitter.com/ghostfolio_" |
||||
|
title="Post to Ghostfolio on X (formerly Twitter)" |
||||
|
>@ghostfolio_</a |
||||
|
><ng-container *ngIf="user?.subscription?.type === 'Premium'" |
||||
|
>, send an e-mail to |
||||
|
<a href="mailto:hi@ghostfol.io" title="Send an e-mail" |
||||
|
>hi@ghostfol.io</a |
||||
|
></ng-container |
||||
|
> |
||||
|
or start a discussion at |
||||
|
<a |
||||
|
href="https://github.com/ghostfolio/ghostfolio" |
||||
|
title="Find Ghostfolio on GitHub" |
||||
|
>GitHub</a |
||||
|
>.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,13 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
||||
|
import { MatCardModule } from '@angular/material/card'; |
||||
|
|
||||
|
import { SaasPageRoutingModule } from './saas-page-routing.module'; |
||||
|
import { SaasPageComponent } from './saas-page.component'; |
||||
|
|
||||
|
@NgModule({ |
||||
|
declarations: [SaasPageComponent], |
||||
|
imports: [CommonModule, MatCardModule, SaasPageRoutingModule], |
||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
||||
|
}) |
||||
|
export class SaasPageModule {} |
@ -0,0 +1,12 @@ |
|||||
|
:host { |
||||
|
display: block; |
||||
|
|
||||
|
a { |
||||
|
color: rgba(var(--palette-primary-500), 1); |
||||
|
font-weight: 500; |
||||
|
|
||||
|
&:hover { |
||||
|
color: rgba(var(--palette-primary-300), 1); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,21 @@ |
|||||
|
import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; |
||||
|
|
||||
|
import { NgModule } from '@angular/core'; |
||||
|
import { RouterModule, Routes } from '@angular/router'; |
||||
|
|
||||
|
import { SelfHostingPageComponent } from './self-hosting-page.component'; |
||||
|
|
||||
|
const routes: Routes = [ |
||||
|
{ |
||||
|
canActivate: [AuthGuard], |
||||
|
component: SelfHostingPageComponent, |
||||
|
path: '', |
||||
|
title: $localize`Self-Hosting` + ' – ' + $localize`FAQ` |
||||
|
} |
||||
|
]; |
||||
|
|
||||
|
@NgModule({ |
||||
|
imports: [RouterModule.forChild(routes)], |
||||
|
exports: [RouterModule] |
||||
|
}) |
||||
|
export class SelfHostingPageRoutingModule {} |
@ -0,0 +1,21 @@ |
|||||
|
import { Component, OnDestroy } from '@angular/core'; |
||||
|
import { Subject } from 'rxjs'; |
||||
|
|
||||
|
@Component({ |
||||
|
host: { class: 'page' }, |
||||
|
selector: 'gf-self-hosting-page', |
||||
|
styleUrls: ['./self-hosting-page.scss'], |
||||
|
templateUrl: './self-hosting-page.html' |
||||
|
}) |
||||
|
export class SelfHostingPageComponent implements OnDestroy { |
||||
|
private unsubscribeSubject = new Subject<void>(); |
||||
|
|
||||
|
public constructor() {} |
||||
|
|
||||
|
public ngOnInit() {} |
||||
|
|
||||
|
public ngOnDestroy() { |
||||
|
this.unsubscribeSubject.next(); |
||||
|
this.unsubscribeSubject.complete(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,56 @@ |
|||||
|
<div class="container"> |
||||
|
<div class="mb-5 row"> |
||||
|
<div class="col"> |
||||
|
<h1 class="d-none d-sm-block h3 mb-4 text-center" i18n> |
||||
|
Frequently Asked Questions (FAQ) |
||||
|
</h1> |
||||
|
<p> |
||||
|
Find quick answers to commonly asked questions about self-hosting |
||||
|
Ghostfolio in our Frequently Asked Questions (FAQ) section. |
||||
|
</p> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>How do I start?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content> |
||||
|
If you prefer to run Ghostfolio on your own infrastructure, please |
||||
|
find the source code and further instructions on |
||||
|
<a href="https://github.com/ghostfolio/ghostfolio">GitHub</a>. |
||||
|
</mat-card-content> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>Which devices are supported?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>Ghostfolio works in every modern web browser on smartphones, tablets |
||||
|
and desktop computers.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
<mat-card appearance="outlined" class="mb-3"> |
||||
|
<mat-card-header> |
||||
|
<mat-card-title>Got any other questions?</mat-card-title> |
||||
|
</mat-card-header> |
||||
|
<mat-card-content |
||||
|
>Please join the Ghostfolio |
||||
|
<a |
||||
|
href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" |
||||
|
title="Join the Ghostfolio Slack community" |
||||
|
>Slack </a |
||||
|
>community, post to |
||||
|
<a |
||||
|
href="https://twitter.com/ghostfolio_" |
||||
|
title="Post to Ghostfolio on X (formerly Twitter)" |
||||
|
>@ghostfolio_</a |
||||
|
> |
||||
|
or start a discussion at |
||||
|
<a |
||||
|
href="https://github.com/ghostfolio/ghostfolio" |
||||
|
title="Find Ghostfolio on GitHub" |
||||
|
>GitHub</a |
||||
|
>.</mat-card-content |
||||
|
> |
||||
|
</mat-card> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
@ -0,0 +1,13 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; |
||||
|
import { MatCardModule } from '@angular/material/card'; |
||||
|
|
||||
|
import { SelfHostingPageRoutingModule } from './self-hosting-page-routing.module'; |
||||
|
import { SelfHostingPageComponent } from './self-hosting-page.component'; |
||||
|
|
||||
|
@NgModule({ |
||||
|
declarations: [SelfHostingPageComponent], |
||||
|
imports: [CommonModule, MatCardModule, SelfHostingPageRoutingModule], |
||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
||||
|
}) |
||||
|
export class SelfHostingPageModule {} |
@ -0,0 +1,12 @@ |
|||||
|
:host { |
||||
|
display: block; |
||||
|
|
||||
|
a { |
||||
|
color: rgba(var(--palette-primary-500), 1); |
||||
|
font-weight: 500; |
||||
|
|
||||
|
&:hover { |
||||
|
color: rgba(var(--palette-primary-300), 1); |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue