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
							committed by
							
								 GitHub
								GitHub
							
						
					
				
				 25 changed files with 744 additions and 328 deletions
			
			
		| @ -1,291 +1,29 @@ | |||
| <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>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> | |||
| <mat-tab-nav-panel #tabPanel class="flex-grow-1 overflow-auto"> | |||
|   <router-outlet></router-outlet> | |||
| </mat-tab-nav-panel> | |||
| 
 | |||
| <nav | |||
|   mat-align-tabs="center" | |||
|   mat-tab-nav-bar | |||
|   [disablePagination]="true" | |||
|   [tabPanel]="tabPanel" | |||
| > | |||
|   <ng-container *ngFor="let tab of tabs"> | |||
|     <a | |||
|       #rla="routerLinkActive" | |||
|       *ngIf="tab.showCondition !== false" | |||
|       class="no-min-width px-3" | |||
|       mat-tab-link | |||
|       routerLinkActive | |||
|       [active]="rla.isActive" | |||
|       [routerLink]="tab.path" | |||
|       [routerLinkActiveOptions]="{ exact: true }" | |||
|     > | |||
|       <ion-icon | |||
|         [name]="tab.iconName" | |||
|         [size]="deviceType === 'mobile' ? 'large': 'small'" | |||
|       /> | |||
|       <div class="d-none d-sm-block ml-2">{{ tab.label }}</div> | |||
|     </a> | |||
|   </ng-container> | |||
| </nav> | |||
|  | |||
| @ -1,13 +1,14 @@ | |||
| import { CommonModule } from '@angular/common'; | |||
| 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 { FaqPageComponent } from './faq-page.component'; | |||
| 
 | |||
| @NgModule({ | |||
|   declarations: [FaqPageComponent], | |||
|   imports: [CommonModule, FaqPageRoutingModule, MatCardModule], | |||
|   imports: [CommonModule, FaqPageRoutingModule, MatTabsModule, RouterModule], | |||
|   schemas: [CUSTOM_ELEMENTS_SCHEMA] | |||
| }) | |||
| export class FaqPageModule {} | |||
|  | |||
| @ -1,12 +1,7 @@ | |||
| :host { | |||
|   display: block; | |||
| 
 | |||
|   a { | |||
|     color: rgba(var(--palette-primary-500), 1); | |||
|     font-weight: 500; | |||
|   color: rgb(var(--dark-primary-text)); | |||
| } | |||
| 
 | |||
|     &:hover { | |||
|       color: rgba(var(--palette-primary-300), 1); | |||
|     } | |||
|   } | |||
| :host-context(.is-dark-theme) { | |||
|   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