diff --git a/.env.dev b/.env.dev index c4c8a0d35..d0c9a1576 100644 --- a/.env.dev +++ b/.env.dev @@ -22,4 +22,3 @@ JWT_SECRET_KEY= # For more info, see: https://nx.dev/concepts/inferred-tasks NX_ADD_PLUGINS=false -NX_NATIVE_COMMAND_RUNNER=false diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml index 18240ebc4..7a8f72ac4 100644 --- a/.github/workflows/build-code.yml +++ b/.github/workflows/build-code.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: node_version: - - 20 + - 22 steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 47943977f..6b4601733 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -19,7 +19,7 @@ jobs: id: meta uses: docker/metadata-action@v4 with: - images: ghostfolio/ghostfolio + images: ${{ vars.DOCKER_REPOSITORY || 'ghostfolio/ghostfolio' }} tags: | type=semver,pattern={{major}} type=semver,pattern={{version}} diff --git a/.gitignore b/.gitignore index d7e5e5eb1..e753d3bf7 100644 --- a/.gitignore +++ b/.gitignore @@ -25,8 +25,10 @@ npm-debug.log # misc /.angular/cache +.cursor/rules/nx-rules.mdc .env .env.prod +.github/instructions/nx.instructions.md .nx/cache .nx/workspace-data /.sass-cache diff --git a/.nvmrc b/.nvmrc index 9a2a0e219..53d1c14db 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v20 +v22 diff --git a/CHANGELOG.md b/CHANGELOG.md index f509061ee..9c8f3c05a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,29 +5,347 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 2.178.0 - 2025-07-05 + +### Changed + +- Increased the width of the markets overview +- Increased the width of the watchlist +- Deprecated the `ITEM` activity type in favor of `BUY` +- Renamed `Access` to `accessesGet` in the `User` database schema +- Improved the language localization for Dutch (`nl`) +- Improved the language localization for Italian (`it`) +- Upgraded `prisma` from version `6.10.1` to `6.11.1` + +### Fixed + +- Set the name column to sticky in the table of the benchmark component + +## 2.177.0 - 2025-07-03 + +### Added + +- Extended the _Fear & Greed Index_ (market mood) in the markets overview by cryptocurrencies (experimental) + +### Changed + +- Refactored the about pages to standalone +- Made the `getByKey()` function generic in the property service +- Renamed `AuthDevice` to `authDevices` in the `User` database schema +- Improved the language localization for Catalan (`ca`) +- Improved the language localization for German (`de`) +- Improved the language localization for Portuguese (`pt`) +- Upgraded `@internationalized/number` from version `3.6.0` to `3.6.3` +- Upgraded `ngx-skeleton-loader` from version `11.0.0` to `11.2.1` +- Upgraded `yahoo-finance2` from version `3.3.5` to `3.4.1` + +## 2.176.0 - 2025-06-30 + +### Added + +- Added support for generating a new _Security Token_ via the user’s account access panel + +### Changed + +- Moved the main content of the holding detail dialog to a new overview tab +- Introduced fuzzy search for the holdings of the assistant +- Introduced fuzzy search for the quick links of the assistant +- Improved the search results of the assistant to only display categories with content +- Enhanced the sitemap to dynamically compose public routes +- Renamed `Account` to `account` in the `Order` database schema +- Improved the language localization for German (`de`) +- Upgraded `prettier` from version `3.5.3` to `3.6.2` + +## 2.175.0 - 2025-06-28 + +### Added + +- Set up the language localization for the static portfolio analysis rule: _Asset Class Cluster Risks_ (Equity) +- Set up the language localization for the static portfolio analysis rule: _Asset Class Cluster Risks_ (Fixed Income) +- Set up the language localization for the static portfolio analysis rule: _Currency Cluster Risks_ (Investment) +- Set up the language localization for the static portfolio analysis rule: _Currency Cluster Risks_ (Investment: Base Currency) + +### Changed + +- Extended the selector handling of the scraper configuration for more use cases +- Extended the _AI_ service by an access to _OpenRouter_ (experimental) +- Changed `node main` to `exec node main` in the `entrypoint.sh` file to improve the container signal handling +- Renamed `Account` to `account` in the `AccountBalance` database schema +- Improved the language localization for Catalan (`ca`) +- Improved the language localization for Dutch (`nl`) +- Improved the language localization for Español (`es`) +- Improved the language localization for German (`de`) +- Improved the language localization for Turkish (`tr`) + +### Fixed + +- Fixed an issue with the locale in the scraper configuration + +## 2.174.0 - 2025-06-24 + +### Added + +- Set up the language localization for the static portfolio analysis rule: _Account Cluster Risks_ (Current Investment) +- Extended the data providers management of the admin control panel by the online status + +### Changed + +- Migrated the `@ghostfolio/ui/value` component to control flow +- Renamed `Platform` to `platform` in the `Account` database schema +- Refactored the health check endpoint for data enhancers +- Refactored the health check endpoint for data providers +- Improved the language localization for French (`fr`) +- Improved the language localization for German (`de`) +- Refreshed the cryptocurrencies list + +## 2.173.0 - 2025-06-21 + +### Added + +- Set up `open-color` for CSS variable usage + +### Changed + +- Simplified the data providers management of the admin control panel +- Migrated the `@ghostfolio/ui/assistant` component to control flow +- Migrated the `@ghostfolio/ui/value` component to control flow +- Renamed `GranteeUser` to `granteeUser` in the `Access` database schema +- Improved the language localization for French (`fr`) +- Improved the language localization for German (`de`) +- Upgraded `class-validator` from version `0.14.1` to `0.14.2` +- Upgraded `prisma` from version `6.9.0` to `6.10.1` + +### Fixed + +- Fixed an issue in the `HtmlTemplateMiddleware` related to incorrect variable resolution +- Eliminated the _Unsupported route path_ warning of the `LegacyRouteConverter` on startup + +## 2.172.0 - 2025-06-19 + +### Added + +- Set up the language localization for the static portfolio analysis rule: _Account Cluster Risks_ (Single Account) +- Included the admin control panel in the quick links of the assistant + +### Changed + +- Adapted the options of the date range selector in the assistant dynamically based on the user’s first activity +- Switched the data provider service to `OnModuleInit`, ensuring (currency) quotes are fetched only once +- Migrated the `@ghostfolio/ui/assistant` component to control flow +- Migrated the `@ghostfolio/ui/value` component to control flow +- Improved the language localization for Chinese (`zh`) +- Improved the language localization for Español (`es`) +- Improved the language localization for German (`de`) +- Improved the language localization for Portuguese (`pt`) + +## 2.171.0 - 2025-06-15 + +### Added + +- Added the current holdings as default options of the symbol search in the create or update activity dialog + +### Changed + +- Improved the style of the assistant +- Reused the value component in the data providers management of the admin control panel +- Set the market state of exchange rate symbols to `open` in the _Financial Modeling Prep_ service +- Restructured the content of the pricing page +- Migrated the `@ghostfolio/ui/assistant` component to control flow +- Migrated the `@ghostfolio/ui/value` component to control flow +- Migrated the `HtmlTemplateMiddleware` to use `@Injectable()` +- Renamed `User` to `user` in the database schema +- Improved the language localization for Catalan (`ca`) +- Improved the language localization for Español (`es`) +- Improved the language localization for French (`fr`) +- Improved the language localization for German (`de`) +- Improved the language localization for Italian (`it`) +- Improved the language localization for Polish (`pl`) +- Improved the language localization for Portuguese (`pt`) +- Improved the language localization for Turkish (`tr`) +- Upgraded the _Stripe_ dependencies + +### Fixed + +- Fixed a date offset issue with account balances +- Fixed missing `/.well-known/assetlinks.json` for TWA + +## 2.170.0 - 2025-06-11 + +### Added + +- Included quick links in the search results of the assistant +- Added a skeleton loader to the changelog page +- Extended the content of the _Self-Hosting_ section by information about additional data providers on the Frequently Asked Questions (FAQ) page + +### Changed + +- Renamed `ApiKey` to `apiKeys` in the `User` database schema +- Improved the language localization for French (`fr`) +- Improved the language localization for Portuguese (`pt`) +- Upgraded `@keyv/redis` from version `4.3.4` to `4.4.0` +- Upgraded `prisma` from version `6.8.2` to `6.9.0` +- Upgraded `zone.js` from version `0.15.0` to `0.15.1` + +### Fixed + +- Restricted the date range change permission in the _Zen Mode_ + +## 2.169.0 - 2025-06-08 + +### Changed + +- Renamed the asset profile icon component to entity logo component and moved to `@ghostfolio/ui` +- Renamed `Account` to `accounts` in the `User` database schema +- Improved the cache verification in the health check endpoint (experimental) +- Improved the language localization for Catalan (`ca`) +- Improved the language localization for French (`fr`) +- Improved the language localization for Polish (`pl`) + +### Fixed + +- Handled an exception in the get keys function of the _Redis_ cache service +- Fixed missing `/.well-known/assetlinks.json` for TWA + +## 2.168.0 - 2025-06-07 + +### Added + +- Added a background gradient to the sidebar navigation + +### Changed + +- Migrated the `i18n` service to use `@Injectable()` +- Improved the language localization for German (`de`) +- Upgraded `nestjs` from version `11.1.0` to `11.1.3` + +## 2.167.0 - 2025-06-07 + +### Added + +- Added support for column sorting to the markets overview +- Added support for column sorting to the watchlist +- Set up the language localization for the static portfolio analysis rule: _Emergency Fund_ (Setup) +- Set up the language localization for the static portfolio analysis rule: _Fees_ (Fee Ratio) + +### Changed + +- Extended the symbol search component by default options +- Renamed `Tag` to `tags` in the `User` database schema +- Improved the language localization for German (`de`) +- Improved the language localization for Spanish (`es`) +- Improved the language localization for Turkish (`tr`) +- Upgraded `ng-extract-i18n-merge` from version `2.15.0` to `2.15.1` +- Upgraded `Nx` from version `20.8.1` to `21.1.2` + +### Fixed + +- Fixed an issue where the import button was not correctly enabled in the import activities dialog +- Fixed an issue with empty account balances in the import activities dialog +- Fixed an issue in the annualized performance calculation + +## 2.166.0 - 2025-06-05 + +### Added + +- Added support to create custom tags in the create or update activity dialog (experimental) + +### Changed + +- Improved the style of the card components +- Improved the style of the system message +- Improved the language localization for German (`de`) +- Improved the language localization for Spanish (`es`) +- Improved the language localization for Turkish (`tr`) +- Improved the language localization for Ukrainian (`uk`) +- Upgraded the _Stripe_ dependencies +- Upgraded `ngx-stripe` from version `19.0.0` to `19.7.0` + +### Fixed + +- Respected the filter by holding when deleting activities on the portfolio activities page +- Respected the filter by holding when exporting activities on the portfolio activities page +- Fixed an exception with currencies in the historical market data editor of the admin control panel + +## 2.165.0 - 2025-05-31 + +### Added + +- Extended the content of the _General_ section by the performance calculation method on the Frequently Asked Questions (FAQ) page + +### Changed + +- Improved the _Live Demo_ setup by syncing activities based on tags +- Renamed `orders` to `activities` in the `Tag` database schema +- Modularized the cron service +- Refreshed the cryptocurrencies list +- Improved the language localization for Catalan (`ca`) +- Improved the language localization for Dutch (`nl`) +- Improved the language localization for Polish (`pl`) +- Improved the language localization for Spanish (`es`) +- Upgraded `big.js` from version `6.2.2` to `7.0.1` +- Upgraded `ng-extract-i18n-merge` from version `2.14.3` to `2.15.0` + +### Fixed + +- Changed the investment value to take the currency effects into account in the holding detail dialog + +## 2.164.0 - 2025-05-28 + +### Changed + +- Improved the language localization for Dutch (`nl`) +- Improved the language localization for French (`fr`) +- Improved the language localization for Polish (`pl`) +- Improved the language localization for Spanish (`es`) +- Upgraded `Node.js` from version `20` to `22` (`Dockerfile`) +- Upgraded `yahoo-finance2` from version `3.3.4` to `3.3.5` + +## 2.163.0 - 2025-05-26 + +### Changed + +- Improved the language localization for Italian (`it`) +- Improved the language localization for Turkish (`tr`) +- Upgraded `yahoo-finance2` from version `3.3.3` to `3.3.4` + +## 2.162.1 - 2025-05-24 ### Added +- Added a hint about delayed market data to the markets overview - Added the asset profile count per data provider to the endpoint `GET api/v1/admin` ### Changed +- Increased the robustness of the search in the _Yahoo Finance_ service by catching schema validation errors +- Improved the symbol lookup results by removing the currency from the name of cryptocurrencies (experimental) - Harmonized the data providers management style of the admin control panel +- Extended the data providers management of the admin control panel by the asset profile count - Restricted the permissions of the demo user - Renamed `Order` to `activities` in the `User` database schema +- Removed the deprecated endpoint `GET api/v1/admin/market-data/:dataSource/:symbol` +- Removed the deprecated endpoint `POST api/v1/admin/market-data/:dataSource/:symbol` +- Removed the deprecated endpoint `PUT api/v1/admin/market-data/:dataSource/:symbol/:dateString` - Improved the language localization for Catalan (`ca`) - Improved the language localization for Chinese (`zh`) - Improved the language localization for Dutch (`nl`) +- Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) - Improved the language localization for Italian (`it`) +- Improved the language localization for Polish (`pl`) +- Improved the language localization for Portuguese (`pt`) +- Improved the language localization for Spanish (`es`) - Upgraded `countup.js` from version `2.8.0` to `2.8.2` - Upgraded `nestjs` from version `10.4.15` to `11.0.12` -- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.1` +- Upgraded `prisma` from version `6.7.0` to `6.8.2` +- Upgraded `twitter-api-v2` from version `1.14.2` to `1.23.0` +- Upgraded `yahoo-finance2` from version `2.11.3` to `3.3.3` ### Fixed +- Displayed the button to fetch the current market price only if the activity is not in a custom currency - Fixed an issue in the watchlist endpoint (`POST`) related to the `HasPermissionGuard` +- Improved the text alignment of the allocations by ETF holding on the allocations page (experimental) ## 2.161.0 - 2025-05-06 @@ -73,7 +391,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Improved the language localization for Français (`fr`) +- Improved the language localization for French (`fr`) - Upgraded `bootstrap` from version `4.6.0` to `4.6.2` ### Fixed @@ -114,7 +432,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the error message of the currency code validation - Tightened the currency code validation by requiring uppercase letters - Respected the watcher count for the delete asset profiles checkbox in the historical market data table of the admin control panel -- Improved the language localization for Français (`fr`) +- Improved the language localization for French (`fr`) - Upgraded `ngx-skeleton-loader` from version `10.0.0` to `11.0.0` - Upgraded `Nx` from version `20.8.0` to `20.8.1` @@ -214,7 +532,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the check for duplicates in the preview step of the activities import (allow different comments) -- Improved the language localization for Français (`fr`) +- Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) - Improved the language localization for Polish (`pl`) - Upgraded `ng-extract-i18n-merge` from version `2.14.1` to `2.14.3` @@ -3669,7 +3987,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Added the language localization for Français (`fr`) +- Added the language localization for French (`fr`) - Extended the landing page by a global heat map of subscribers - Added support for the thousand separator in the global heat map component @@ -3698,7 +4016,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added support for the dividend timeline grouped by year - Added support for the investment timeline grouped by year -- Set up the language localization for Français (`fr`) +- Set up the language localization for French (`fr`) ### Changed @@ -3807,7 +4125,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the value redaction interceptor (including `comment`) -- Improved the language localization for Español (`es`) +- Improved the language localization for Spanish (`es`) - Upgraded `cheerio` from version `1.0.0-rc.6` to `1.0.0-rc.12` - Upgraded `prisma` from version `4.6.1` to `4.7.1` @@ -4036,7 +4354,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the usage of the value component in the admin control panel -- Improved the language localization for Español (`es`) +- Improved the language localization for Spanish (`es`) ### Fixed @@ -4058,7 +4376,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Set up the language localization for Español (`es`) +- Set up the language localization for Spanish (`es`) - Added support for sectors in mutual funds ## 1.198.0 - 25.09.2022 @@ -5841,7 +6159,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Changed the navigation to always show the portfolio page - Migrated the data type of currencies from `enum` to `string` in the database - Supported unlimited currencies (instead of `CHF`, `EUR`, `GBP` and `USD`) -- Respected the accounts' currencies in the exchange rate service +- Respected the accounts’ currencies in the exchange rate service ### Fixed diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 1c45aeca1..31b0507bb 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -5,7 +5,7 @@ ### Prerequisites - [Docker](https://www.docker.com/products/docker-desktop) -- [Node.js](https://nodejs.org/en/download) (version 20+) +- [Node.js](https://nodejs.org/en/download) (version 22+) - Create a local copy of this Git repository (clone) - Copy the file `.env.dev` to `.env` and populate it with your data (`cp .env.dev .env`) @@ -30,7 +30,13 @@ Run `npm run start:server` ### Start Client -Run `npm run start:client` and open https://localhost:4200/en in your browser +#### English (Default) + +Run `npm run start:client` and open https://localhost:4200/en in your browser. + +#### Other Languages + +To start the client in a different language, such as German (`de`), adapt the `start:client` script in the `package.json` file by changing `--configuration=development-en` to `--configuration=development-de`. Then, run `npm run start:client` and open https://localhost:4200/de in your browser. ### Start _Storybook_ diff --git a/Dockerfile b/Dockerfile index 103dc3b9e..c740413ea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=$BUILDPLATFORM node:20-slim AS builder +FROM --platform=$BUILDPLATFORM node:22-slim AS builder # Build application and add additional files WORKDIR /ghostfolio @@ -33,24 +33,25 @@ COPY ./nx.json nx.json COPY ./replace.build.mjs replace.build.mjs COPY ./tsconfig.base.json tsconfig.base.json +ENV NX_DAEMON=false RUN npm run build:production # Prepare the dist image with additional node_modules WORKDIR /ghostfolio/dist/apps/api # package.json was generated by the build process, however the original -# package-lock.json needs to be used to ensure the same versions +# package-lock.json needs to be used to ensure the same versions COPY ./package-lock.json /ghostfolio/dist/apps/api/package-lock.json RUN npm install COPY prisma /ghostfolio/dist/apps/api/prisma # Overwrite the generated package.json with the original one to ensure having -# all the scripts +# all the scripts COPY package.json /ghostfolio/dist/apps/api RUN npm run database:generate-typings # Image to run, copy everything needed from builder -FROM node:20-slim +FROM node:22-slim LABEL org.opencontainers.image.source="https://github.com/ghostfolio/ghostfolio" ENV NODE_ENV=production diff --git a/README.md b/README.md index d2f5394ff..f2e9de4f1 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,6 @@ docker compose -f docker/docker-compose.build.yml up -d #### Upgrade Version 1. Update the _Ghostfolio_ Docker image - - Increase the version of the `ghostfolio/ghostfolio` Docker image in `docker/docker-compose.yml` - Run the following command if `ghostfolio:latest` is set: ```bash @@ -222,18 +221,18 @@ Deprecated: `GET http://localhost:3333/api/v1/auth/anonymous/ { const accessesWithGranteeUser = await this.accessService.accesses({ include: { - GranteeUser: true + granteeUser: true }, orderBy: { granteeUserId: 'asc' }, where: { userId: this.request.user.id } }); return accessesWithGranteeUser.map( - ({ alias, GranteeUser, id, permissions }) => { - if (GranteeUser) { + ({ alias, granteeUser, id, permissions }) => { + if (granteeUser) { return { alias, id, permissions, - grantee: GranteeUser?.id, + grantee: granteeUser?.id, type: 'PRIVATE' }; } @@ -85,11 +85,11 @@ export class AccessController { try { return this.accessService.createAccess({ alias: data.alias || undefined, - GranteeUser: data.granteeUserId + granteeUser: data.granteeUserId ? { connect: { id: data.granteeUserId } } : undefined, permissions: data.permissions, - User: { connect: { id: this.request.user.id } } + user: { connect: { id: this.request.user.id } } }); } catch { throw new HttpException( diff --git a/apps/api/src/app/access/access.service.ts b/apps/api/src/app/access/access.service.ts index ccba595e3..8403cdc09 100644 --- a/apps/api/src/app/access/access.service.ts +++ b/apps/api/src/app/access/access.service.ts @@ -13,7 +13,7 @@ export class AccessService { ): Promise { return this.prismaService.access.findFirst({ include: { - GranteeUser: true + granteeUser: true }, where: accessWhereInput }); diff --git a/apps/api/src/app/account-balance/account-balance.service.ts b/apps/api/src/app/account-balance/account-balance.service.ts index 34d98d266..10353f4ca 100644 --- a/apps/api/src/app/account-balance/account-balance.service.ts +++ b/apps/api/src/app/account-balance/account-balance.service.ts @@ -30,7 +30,7 @@ export class AccountBalanceService { ): Promise { return this.prismaService.accountBalance.findFirst({ include: { - Account: true + account: true }, where: accountBalanceWhereInput }); @@ -46,7 +46,7 @@ export class AccountBalanceService { }): Promise { const accountBalance = await this.prismaService.accountBalance.upsert({ create: { - Account: { + account: { connect: { id_userId: { userId, @@ -154,7 +154,7 @@ export class AccountBalanceService { } if (withExcludedAccounts === false) { - where.Account = { isExcluded: false }; + where.account = { isExcluded: false }; } const balances = await this.prismaService.accountBalance.findMany({ @@ -163,7 +163,7 @@ export class AccountBalanceService { date: 'asc' }, select: { - Account: true, + account: true, date: true, id: true, value: true @@ -174,10 +174,10 @@ export class AccountBalanceService { balances: balances.map((balance) => { return { ...balance, - accountId: balance.Account.id, + accountId: balance.account.id, valueInBaseCurrency: this.exchangeRateDataService.toCurrency( balance.value, - balance.Account.currency, + balance.account.currency, userCurrency ) }; diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 1d8f9ab27..635570f8f 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -152,8 +152,8 @@ export class AccountController { return this.accountService.createAccount( { ...data, - Platform: { connect: { id: platformId } }, - User: { connect: { id: this.request.user.id } } + platform: { connect: { id: platformId } }, + user: { connect: { id: this.request.user.id } } }, this.request.user.id ); @@ -163,7 +163,7 @@ export class AccountController { return this.accountService.createAccount( { ...data, - User: { connect: { id: this.request.user.id } } + user: { connect: { id: this.request.user.id } } }, this.request.user.id ); @@ -250,8 +250,8 @@ export class AccountController { { data: { ...data, - Platform: { connect: { id: platformId } }, - User: { connect: { id: this.request.user.id } } + platform: { connect: { id: platformId } }, + user: { connect: { id: this.request.user.id } } }, where: { id_userId: { @@ -270,10 +270,10 @@ export class AccountController { { data: { ...data, - Platform: originalAccount.platformId + platform: originalAccount.platformId ? { disconnect: true } : undefined, - User: { connect: { id: this.request.user.id } } + user: { connect: { id: this.request.user.id } } }, where: { id_userId: { diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index a10eecac5..1c8adbd16 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -64,7 +64,7 @@ export class AccountService { (Account & { activities?: Order[]; balances?: AccountBalance[]; - Platform?: Platform; + platform?: Platform; })[] > { const { include = {}, skip, take, cursor, where, orderBy } = params; @@ -140,7 +140,10 @@ export class AccountService { public async getAccounts(aUserId: string): Promise { const accounts = await this.accounts({ - include: { activities: true, Platform: true }, + include: { + activities: true, + platform: true + }, orderBy: { name: 'asc' }, where: { userId: aUserId } }); diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index d8507bbb0..8531cf95c 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -3,7 +3,7 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard' import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { ManualService } from '@ghostfolio/api/services/data-provider/manual/manual.service'; -import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; +import { DemoService } from '@ghostfolio/api/services/demo/demo.service'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; import { @@ -16,9 +16,9 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { AdminData, AdminMarketData, - AdminMarketDataDetails, AdminUsers, - EnhancedSymbolProfile + EnhancedSymbolProfile, + ScraperConfiguration } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; import type { @@ -50,8 +50,6 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AdminService } from './admin.service'; import { UpdateAssetProfileDto } from './update-asset-profile.dto'; -import { UpdateBulkMarketDataDto } from './update-bulk-market-data.dto'; -import { UpdateMarketDataDto } from './update-market-data.dto'; @Controller('admin') export class AdminController { @@ -59,8 +57,8 @@ export class AdminController { private readonly adminService: AdminService, private readonly apiService: ApiService, private readonly dataGatheringService: DataGatheringService, + private readonly demoService: DemoService, private readonly manualService: ManualService, - private readonly marketDataService: MarketDataService, @Inject(REQUEST) private readonly request: RequestWithUser ) {} @@ -71,6 +69,13 @@ export class AdminController { return this.adminService.get({ user: this.request.user }); } + @Get('demo-user/sync') + @HasPermission(permissions.syncDemoUserAccount) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async syncDemoUserAccount(): Promise { + return this.demoService.syncDemoUserAccount(); + } + @HasPermission(permissions.accessAdminControl) @Post('gather') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) @@ -214,30 +219,16 @@ export class AdminController { }); } - /** - * @deprecated - */ - @Get('market-data/:dataSource/:symbol') - @HasPermission(permissions.accessAdminControl) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getMarketDataBySymbol( - @Param('dataSource') dataSource: DataSource, - @Param('symbol') symbol: string - ): Promise { - return this.adminService.getMarketDataBySymbol({ dataSource, symbol }); - } - @HasPermission(permissions.accessAdminControl) @Post('market-data/:dataSource/:symbol/test') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) public async testMarketData( - @Body() data: { scraperConfiguration: string }, + @Body() data: { scraperConfiguration: ScraperConfiguration }, @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string ): Promise<{ price: number }> { try { - const scraperConfiguration = JSON.parse(data.scraperConfiguration); - const price = await this.manualService.test(scraperConfiguration); + const price = await this.manualService.test(data.scraperConfiguration); if (price) { return { price }; @@ -253,58 +244,6 @@ export class AdminController { } } - /** - * @deprecated - */ - @HasPermission(permissions.accessAdminControl) - @Post('market-data/:dataSource/:symbol') - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async updateMarketData( - @Body() data: UpdateBulkMarketDataDto, - @Param('dataSource') dataSource: DataSource, - @Param('symbol') symbol: string - ) { - const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = data.marketData.map( - ({ date, marketPrice }) => ({ - dataSource, - marketPrice, - symbol, - date: parseISO(date), - state: 'CLOSE' - }) - ); - - return this.marketDataService.updateMany({ - data: dataBulkUpdate - }); - } - - /** - * @deprecated - */ - @HasPermission(permissions.accessAdminControl) - @Put('market-data/:dataSource/:symbol/:dateString') - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async update( - @Param('dataSource') dataSource: DataSource, - @Param('dateString') dateString: string, - @Param('symbol') symbol: string, - @Body() data: UpdateMarketDataDto - ) { - const date = parseISO(dateString); - - return this.marketDataService.updateMarketData({ - data: { marketPrice: data.marketPrice, state: 'CLOSE' }, - where: { - dataSource_date_symbol: { - dataSource, - date, - symbol - } - } - }); - } - @HasPermission(permissions.accessAdminControl) @Post('profile-data/:dataSource/:symbol') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) diff --git a/apps/api/src/app/admin/admin.module.ts b/apps/api/src/app/admin/admin.module.ts index 54145fa27..598b68f17 100644 --- a/apps/api/src/app/admin/admin.module.ts +++ b/apps/api/src/app/admin/admin.module.ts @@ -4,6 +4,7 @@ import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; +import { DemoModule } from '@ghostfolio/api/services/demo/demo.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; @@ -24,6 +25,7 @@ import { QueueModule } from './queue/queue.module'; ConfigurationModule, DataGatheringModule, DataProviderModule, + DemoModule, ExchangeRateDataModule, MarketDataModule, OrderModule, diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 35b4ea73d..9e645c059 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -114,9 +114,8 @@ export class AdminService { await this.marketDataService.deleteMany({ dataSource, symbol }); const currency = getCurrencyFromSymbol(symbol); - const customCurrencies = (await this.propertyService.getByKey( - PROPERTY_CURRENCIES - )) as string[]; + const customCurrencies = + await this.propertyService.getByKey(PROPERTY_CURRENCIES); if (customCurrencies.includes(currency)) { const updatedCustomCurrencies = customCurrencies.filter( @@ -135,7 +134,10 @@ export class AdminService { } public async get({ user }: { user: UserWithSettings }): Promise { - const dataSources = await this.dataProviderService.getDataSources({ user }); + const dataSources = await this.dataProviderService.getDataSources({ + user, + includeGhostfolio: true + }); const [settings, transactionCount, userCount] = await Promise.all([ this.propertyService.get(), @@ -645,7 +647,7 @@ export class AdminService { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { where = { NOT: { - Analytics: null + analytics: null } }; } @@ -671,7 +673,7 @@ export class AdminService { select: { activities: { where: { - User: { + user: { subscriptions: { some: { expiresAt: { @@ -803,13 +805,13 @@ export class AdminService { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { orderBy = { - Analytics: { + analytics: { lastRequestAt: 'desc' } }; where = { NOT: { - Analytics: null + analytics: null } }; } @@ -821,9 +823,9 @@ export class AdminService { where, select: { _count: { - select: { Account: true, activities: true } + select: { accounts: true, activities: true } }, - Analytics: { + analytics: { select: { activityCount: true, country: true, @@ -849,11 +851,11 @@ export class AdminService { }); return usersWithAnalytics.map( - ({ _count, Analytics, createdAt, id, role, subscriptions }) => { + ({ _count, analytics, createdAt, id, role, subscriptions }) => { const daysSinceRegistration = differenceInDays(new Date(), createdAt) + 1; - const engagement = Analytics - ? Analytics.activityCount / daysSinceRegistration + const engagement = analytics + ? analytics.activityCount / daysSinceRegistration : undefined; const subscription = @@ -868,11 +870,11 @@ export class AdminService { id, role, subscription, - accountCount: _count.Account || 0, + accountCount: _count.accounts || 0, activityCount: _count.activities || 0, - country: Analytics?.country, - dailyApiRequests: Analytics?.dataProviderGhostfolioDailyRequests || 0, - lastActivity: Analytics?.updatedAt + country: analytics?.country, + dailyApiRequests: analytics?.dataProviderGhostfolioDailyRequests || 0, + lastActivity: analytics?.updatedAt }; } ); diff --git a/apps/api/src/app/app.module.ts b/apps/api/src/app/app.module.ts index 0aca4e62c..1c48b9702 100644 --- a/apps/api/src/app/app.module.ts +++ b/apps/api/src/app/app.module.ts @@ -1,20 +1,21 @@ import { EventsModule } from '@ghostfolio/api/events/events.module'; +import { HtmlTemplateMiddleware } from '@ghostfolio/api/middlewares/html-template.middleware'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; -import { CronService } from '@ghostfolio/api/services/cron.service'; +import { CronModule } from '@ghostfolio/api/services/cron/cron.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; -import { TwitterBotModule } from '@ghostfolio/api/services/twitter-bot/twitter-bot.module'; import { DEFAULT_LANGUAGE_CODE, SUPPORTED_LANGUAGE_CODES } from '@ghostfolio/common/config'; import { BullModule } from '@nestjs/bull'; -import { Module } from '@nestjs/common'; +import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; @@ -37,6 +38,7 @@ import { BenchmarksModule } from './endpoints/benchmarks/benchmarks.module'; import { GhostfolioModule } from './endpoints/data-providers/ghostfolio/ghostfolio.module'; import { MarketDataModule } from './endpoints/market-data/market-data.module'; import { PublicModule } from './endpoints/public/public.module'; +import { SitemapModule } from './endpoints/sitemap/sitemap.module'; import { TagsModule } from './endpoints/tags/tags.module'; import { WatchlistModule } from './endpoints/watchlist/watchlist.module'; import { ExchangeRateModule } from './exchange-rate/exchange-rate.module'; @@ -49,7 +51,6 @@ import { OrderModule } from './order/order.module'; import { PlatformModule } from './platform/platform.module'; import { PortfolioModule } from './portfolio/portfolio.module'; import { RedisCacheModule } from './redis-cache/redis-cache.module'; -import { SitemapModule } from './sitemap/sitemap.module'; import { SubscriptionModule } from './subscription/subscription.module'; import { SymbolModule } from './symbol/symbol.module'; import { UserModule } from './user/user.module'; @@ -78,6 +79,7 @@ import { UserModule } from './user/user.module'; CacheModule, ConfigModule.forRoot(), ConfigurationModule, + CronModule, DataGatheringModule, DataProviderModule, EventEmitterModule.forRoot(), @@ -101,7 +103,7 @@ import { UserModule } from './user/user.module'; RedisCacheModule, ScheduleModule.forRoot(), ServeStaticModule.forRoot({ - exclude: ['/api*', '/sitemap.xml'], + exclude: ['/.well-known/*wildcard', '/api/*wildcard', '/sitemap.xml'], rootPath: join(__dirname, '..', 'client'), serveStaticOptions: { setHeaders: (res) => { @@ -124,14 +126,21 @@ import { UserModule } from './user/user.module'; } } }), + ServeStaticModule.forRoot({ + rootPath: join(__dirname, '..', 'client', '.well-known'), + serveRoot: '/.well-known' + }), SitemapModule, SubscriptionModule, SymbolModule, TagsModule, - TwitterBotModule, UserModule, WatchlistModule ], - providers: [CronService] + providers: [I18nService] }) -export class AppModule {} +export class AppModule implements NestModule { + public configure(consumer: MiddlewareConsumer) { + consumer.apply(HtmlTemplateMiddleware).forRoutes('*wildcard'); + } +} diff --git a/apps/api/src/app/auth/api-key.strategy.ts b/apps/api/src/app/auth/api-key.strategy.ts index e99d6aed7..f9937aaa7 100644 --- a/apps/api/src/app/auth/api-key.strategy.ts +++ b/apps/api/src/app/auth/api-key.strategy.ts @@ -36,7 +36,7 @@ export class ApiKeyStrategy extends PassportStrategy( } await this.prismaService.analytics.upsert({ - create: { User: { connect: { id: user.id } } }, + create: { user: { connect: { id: user.id } } }, update: { activityCount: { increment: 1 }, lastRequestAt: new Date() diff --git a/apps/api/src/app/auth/jwt.strategy.ts b/apps/api/src/app/auth/jwt.strategy.ts index 7a3fb224b..7faf428da 100644 --- a/apps/api/src/app/auth/jwt.strategy.ts +++ b/apps/api/src/app/auth/jwt.strategy.ts @@ -1,7 +1,11 @@ import { UserService } from '@ghostfolio/api/app/user/user.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; -import { HEADER_KEY_TIMEZONE } from '@ghostfolio/common/config'; +import { + DEFAULT_CURRENCY, + DEFAULT_LANGUAGE_CODE, + HEADER_KEY_TIMEZONE +} from '@ghostfolio/common/config'; import { hasRole } from '@ghostfolio/common/permissions'; import { HttpException, Injectable } from '@nestjs/common'; @@ -42,7 +46,7 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { countriesAndTimezones.getCountryForTimezone(timezone)?.id; await this.prismaService.analytics.upsert({ - create: { country, User: { connect: { id: user.id } } }, + create: { country, user: { connect: { id: user.id } } }, update: { country, activityCount: { increment: 1 }, @@ -52,6 +56,14 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { }); } + if (!user.Settings.settings.baseCurrency) { + user.Settings.settings.baseCurrency = DEFAULT_CURRENCY; + } + + if (!user.Settings.settings.language) { + user.Settings.settings.language = DEFAULT_LANGUAGE_CODE; + } + return user; } else { throw new HttpException( diff --git a/apps/api/src/app/auth/web-auth.service.ts b/apps/api/src/app/auth/web-auth.service.ts index 5678ef7fe..c2223e716 100644 --- a/apps/api/src/app/auth/web-auth.service.ts +++ b/apps/api/src/app/auth/web-auth.service.ts @@ -131,7 +131,7 @@ export class WebAuthService { counter, credentialId: Buffer.from(credentialId), credentialPublicKey: Buffer.from(credentialPublicKey), - User: { connect: { id: user.id } } + user: { connect: { id: user.id } } }); } diff --git a/apps/api/src/app/endpoints/ai/ai.controller.ts b/apps/api/src/app/endpoints/ai/ai.controller.ts index 980d5607c..8050c675b 100644 --- a/apps/api/src/app/endpoints/ai/ai.controller.ts +++ b/apps/api/src/app/endpoints/ai/ai.controller.ts @@ -1,10 +1,6 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; -import { - DEFAULT_CURRENCY, - DEFAULT_LANGUAGE_CODE -} from '@ghostfolio/common/config'; import { AiPromptResponse } from '@ghostfolio/common/interfaces'; import { permissions } from '@ghostfolio/common/permissions'; import type { AiPromptMode, RequestWithUser } from '@ghostfolio/common/types'; @@ -53,10 +49,8 @@ export class AiController { filters, mode, impersonationId: undefined, - languageCode: - this.request.user.Settings.settings.language ?? DEFAULT_LANGUAGE_CODE, - userCurrency: - this.request.user.Settings.settings.baseCurrency ?? DEFAULT_CURRENCY, + languageCode: this.request.user.Settings.settings.language, + userCurrency: this.request.user.Settings.settings.baseCurrency, userId: this.request.user.id }); diff --git a/apps/api/src/app/endpoints/ai/ai.module.ts b/apps/api/src/app/endpoints/ai/ai.module.ts index b6f9941ad..8a441fde7 100644 --- a/apps/api/src/app/endpoints/ai/ai.module.ts +++ b/apps/api/src/app/endpoints/ai/ai.module.ts @@ -12,10 +12,12 @@ import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.mo import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; import { PortfolioSnapshotQueueModule } from '@ghostfolio/api/services/queues/portfolio-snapshot/portfolio-snapshot.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; @@ -32,11 +34,13 @@ import { AiService } from './ai.service'; ConfigurationModule, DataProviderModule, ExchangeRateDataModule, + I18nModule, ImpersonationModule, MarketDataModule, OrderModule, PortfolioSnapshotQueueModule, PrismaModule, + PropertyModule, RedisCacheModule, SymbolProfileModule, UserModule diff --git a/apps/api/src/app/endpoints/ai/ai.service.ts b/apps/api/src/app/endpoints/ai/ai.service.ts index 8807e67bf..b479d74ea 100644 --- a/apps/api/src/app/endpoints/ai/ai.service.ts +++ b/apps/api/src/app/endpoints/ai/ai.service.ts @@ -1,12 +1,41 @@ import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { + PROPERTY_API_KEY_OPENROUTER, + PROPERTY_OPENROUTER_MODEL +} from '@ghostfolio/common/config'; import { Filter } from '@ghostfolio/common/interfaces'; import type { AiPromptMode } from '@ghostfolio/common/types'; import { Injectable } from '@nestjs/common'; +import { createOpenRouter } from '@openrouter/ai-sdk-provider'; +import { generateText } from 'ai'; @Injectable() export class AiService { - public constructor(private readonly portfolioService: PortfolioService) {} + public constructor( + private readonly portfolioService: PortfolioService, + private readonly propertyService: PropertyService + ) {} + + public async generateText({ prompt }: { prompt: string }) { + const openRouterApiKey = await this.propertyService.getByKey( + PROPERTY_API_KEY_OPENROUTER + ); + + const openRouterModel = await this.propertyService.getByKey( + PROPERTY_OPENROUTER_MODEL + ); + + const openRouterService = createOpenRouter({ + apiKey: openRouterApiKey + }); + + return generateText({ + prompt, + model: openRouterService.chat(openRouterModel) + }); + } public async getPrompt({ filters, @@ -30,7 +59,7 @@ export class AiService { }); const holdingsTable = [ - '| Name | Symbol | Currency | Asset Class | Asset Sub Class | Allocation in Percentage |', + '| Name | Symbol | Currency | Asset Class | Asset Sub Class | Allocation in Percentage |', '| --- | --- | --- | --- | --- | --- |', ...Object.values(holdings) .sort((a, b) => { diff --git a/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts b/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts index a0f443621..8bdf79035 100644 --- a/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts +++ b/apps/api/src/app/endpoints/benchmarks/benchmarks.module.ts @@ -15,6 +15,7 @@ import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.s import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; @@ -35,6 +36,7 @@ import { BenchmarksService } from './benchmarks.service'; ConfigurationModule, DataProviderModule, ExchangeRateDataModule, + I18nModule, ImpersonationModule, MarketDataModule, OrderModule, diff --git a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts index 83e1b5ced..7cb2520bb 100644 --- a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts +++ b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.controller.ts @@ -74,48 +74,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('dividends/:symbol') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getDividendsV1( - @Param('symbol') symbol: string, - @Query() query: GetDividendsDto - ): Promise { - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const dividends = await this.ghostfolioService.getDividends({ - symbol, - from: parseDate(query.from), - granularity: query.granularity, - to: parseDate(query.to) - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return dividends; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('dividends/:symbol') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -156,48 +114,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('historical/:symbol') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getHistoricalV1( - @Param('symbol') symbol: string, - @Query() query: GetHistoricalDto - ): Promise { - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const historicalData = await this.ghostfolioService.getHistorical({ - symbol, - from: parseDate(query.from), - granularity: query.granularity, - to: parseDate(query.to) - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return historicalData; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('historical/:symbol') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -238,47 +154,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('lookup') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async lookupSymbolV1( - @Query('includeIndices') includeIndicesParam = 'false', - @Query('query') query = '' - ): Promise { - const includeIndices = includeIndicesParam === 'true'; - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const result = await this.ghostfolioService.lookup({ - includeIndices, - query: query.toLowerCase() - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return result; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('lookup') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -320,44 +195,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('quotes') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getQuotesV1( - @Query() query: GetQuotesDto - ): Promise { - const maxDailyRequests = await this.ghostfolioService.getMaxDailyRequests(); - - if ( - this.request.user.dataProviderGhostfolioDailyRequests > maxDailyRequests - ) { - throw new HttpException( - getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), - StatusCodes.TOO_MANY_REQUESTS - ); - } - - try { - const quotes = await this.ghostfolioService.getQuotes({ - symbols: query.symbols - }); - - await this.ghostfolioService.incrementDailyRequests({ - userId: this.request.user.id - }); - - return quotes; - } catch { - throw new HttpException( - getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), - StatusCodes.INTERNAL_SERVER_ERROR - ); - } - } - @Get('quotes') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) @@ -394,16 +231,6 @@ export class GhostfolioController { } } - /** - * @deprecated - */ - @Get('status') - @HasPermission(permissions.enableDataProviderGhostfolio) - @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async getStatusV1(): Promise { - return this.ghostfolioService.getStatus({ user: this.request.user }); - } - @Get('status') @HasPermission(permissions.enableDataProviderGhostfolio) @UseGuards(AuthGuard('api-key'), HasPermissionGuard) diff --git a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts index bdaecf718..f80633f87 100644 --- a/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts +++ b/apps/api/src/app/endpoints/data-providers/ghostfolio/ghostfolio.service.ts @@ -164,9 +164,9 @@ export class GhostfolioService { public async getMaxDailyRequests() { return parseInt( - ((await this.propertyService.getByKey( + (await this.propertyService.getByKey( PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS - )) as string) || '0', + )) || '0', 10 ); } diff --git a/apps/api/src/app/endpoints/market-data/market-data.controller.ts b/apps/api/src/app/endpoints/market-data/market-data.controller.ts index 933e70e9d..4843536da 100644 --- a/apps/api/src/app/endpoints/market-data/market-data.controller.ts +++ b/apps/api/src/app/endpoints/market-data/market-data.controller.ts @@ -1,8 +1,20 @@ import { AdminService } from '@ghostfolio/api/app/admin/admin.service'; +import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; +import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; +import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; import { MarketDataService } from '@ghostfolio/api/services/market-data/market-data.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; +import { + ghostfolioFearAndGreedIndexDataSourceCryptocurrencies, + ghostfolioFearAndGreedIndexDataSourceStocks, + ghostfolioFearAndGreedIndexSymbolCryptocurrencies, + ghostfolioFearAndGreedIndexSymbolStocks +} from '@ghostfolio/common/config'; import { getCurrencyFromSymbol, isCurrency } from '@ghostfolio/common/helper'; -import { MarketDataDetailsResponse } from '@ghostfolio/common/interfaces'; +import { + MarketDataDetailsResponse, + MarketDataOfMarketsResponse +} from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { RequestWithUser } from '@ghostfolio/common/types'; @@ -14,6 +26,7 @@ import { Inject, Param, Post, + Query, UseGuards } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; @@ -30,9 +43,48 @@ export class MarketDataController { private readonly adminService: AdminService, private readonly marketDataService: MarketDataService, @Inject(REQUEST) private readonly request: RequestWithUser, - private readonly symbolProfileService: SymbolProfileService + private readonly symbolProfileService: SymbolProfileService, + private readonly symbolService: SymbolService ) {} + @Get('markets') + @HasPermission(permissions.readMarketDataOfMarkets) + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async getMarketDataOfMarkets( + @Query('includeHistoricalData') includeHistoricalData = 0 + ): Promise { + const [ + marketDataFearAndGreedIndexCryptocurrencies, + marketDataFearAndGreedIndexStocks + ] = await Promise.all([ + this.symbolService.get({ + includeHistoricalData, + dataGatheringItem: { + dataSource: ghostfolioFearAndGreedIndexDataSourceCryptocurrencies, + symbol: ghostfolioFearAndGreedIndexSymbolCryptocurrencies + } + }), + this.symbolService.get({ + includeHistoricalData, + dataGatheringItem: { + dataSource: ghostfolioFearAndGreedIndexDataSourceStocks, + symbol: ghostfolioFearAndGreedIndexSymbolStocks + } + }) + ]); + + return { + fearAndGreedIndex: { + CRYPTOCURRENCIES: { + ...marketDataFearAndGreedIndexCryptocurrencies + }, + STOCKS: { + ...marketDataFearAndGreedIndexStocks + } + } + }; + } + @Get(':dataSource/:symbol') @UseGuards(AuthGuard('jwt')) public async getMarketDataBySymbol( @@ -85,7 +137,7 @@ export class MarketDataController { { dataSource, symbol } ]); - if (!assetProfile) { + if (!assetProfile && !isCurrency(getCurrencyFromSymbol(symbol))) { throw new HttpException( getReasonPhrase(StatusCodes.NOT_FOUND), StatusCodes.NOT_FOUND @@ -103,7 +155,7 @@ export class MarketDataController { ); const canUpsertOwnAssetProfile = - assetProfile.userId === this.request.user.id && + assetProfile?.userId === this.request.user.id && hasPermission( this.request.user.permissions, permissions.createMarketDataOfOwnAssetProfile diff --git a/apps/api/src/app/endpoints/market-data/market-data.module.ts b/apps/api/src/app/endpoints/market-data/market-data.module.ts index 2050889fd..a8b355de3 100644 --- a/apps/api/src/app/endpoints/market-data/market-data.module.ts +++ b/apps/api/src/app/endpoints/market-data/market-data.module.ts @@ -1,4 +1,5 @@ import { AdminModule } from '@ghostfolio/api/app/admin/admin.module'; +import { SymbolModule } from '@ghostfolio/api/app/symbol/symbol.module'; import { MarketDataModule as MarketDataServiceModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { SymbolProfileModule } from '@ghostfolio/api/services/symbol-profile/symbol-profile.module'; @@ -8,6 +9,11 @@ import { MarketDataController } from './market-data.controller'; @Module({ controllers: [MarketDataController], - imports: [AdminModule, MarketDataServiceModule, SymbolProfileModule] + imports: [ + AdminModule, + MarketDataServiceModule, + SymbolModule, + SymbolProfileModule + ] }) export class MarketDataModule {} diff --git a/apps/api/src/app/endpoints/public/public.module.ts b/apps/api/src/app/endpoints/public/public.module.ts index cf4fd3d18..19e281dde 100644 --- a/apps/api/src/app/endpoints/public/public.module.ts +++ b/apps/api/src/app/endpoints/public/public.module.ts @@ -12,6 +12,7 @@ import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; @@ -29,6 +30,7 @@ import { PublicController } from './public.controller'; BenchmarkModule, DataProviderModule, ExchangeRateDataModule, + I18nModule, ImpersonationModule, MarketDataModule, OrderModule, diff --git a/apps/api/src/app/endpoints/sitemap/sitemap.controller.ts b/apps/api/src/app/endpoints/sitemap/sitemap.controller.ts new file mode 100644 index 000000000..f10f0bfd8 --- /dev/null +++ b/apps/api/src/app/endpoints/sitemap/sitemap.controller.ts @@ -0,0 +1,51 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; +import { + DATE_FORMAT, + getYesterday, + interpolate +} from '@ghostfolio/common/helper'; + +import { Controller, Get, Res, VERSION_NEUTRAL, Version } from '@nestjs/common'; +import { format } from 'date-fns'; +import { Response } from 'express'; +import { readFileSync } from 'fs'; +import { join } from 'path'; + +import { SitemapService } from './sitemap.service'; + +@Controller('sitemap.xml') +export class SitemapController { + public sitemapXml = ''; + + public constructor( + private readonly configurationService: ConfigurationService, + private readonly sitemapService: SitemapService + ) { + try { + this.sitemapXml = readFileSync( + join(__dirname, 'assets', 'sitemap.xml'), + 'utf8' + ); + } catch {} + } + + @Get() + @Version(VERSION_NEUTRAL) + public getSitemapXml(@Res() response: Response) { + const currentDate = format(getYesterday(), DATE_FORMAT); + + response.setHeader('content-type', 'application/xml'); + response.send( + interpolate(this.sitemapXml, { + personalFinanceTools: this.configurationService.get( + 'ENABLE_FEATURE_SUBSCRIPTION' + ) + ? this.sitemapService.getPersonalFinanceTools({ currentDate }) + : '', + publicRoutes: this.sitemapService.getPublicRoutes({ + currentDate + }) + }) + ); + } +} diff --git a/apps/api/src/app/sitemap/sitemap.module.ts b/apps/api/src/app/endpoints/sitemap/sitemap.module.ts similarity index 58% rename from apps/api/src/app/sitemap/sitemap.module.ts rename to apps/api/src/app/endpoints/sitemap/sitemap.module.ts index d1059d408..73b5d78b0 100644 --- a/apps/api/src/app/sitemap/sitemap.module.ts +++ b/apps/api/src/app/endpoints/sitemap/sitemap.module.ts @@ -1,11 +1,14 @@ import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; +import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { Module } from '@nestjs/common'; import { SitemapController } from './sitemap.controller'; +import { SitemapService } from './sitemap.service'; @Module({ controllers: [SitemapController], - imports: [ConfigurationModule] + imports: [ConfigurationModule, I18nModule], + providers: [SitemapService] }) export class SitemapModule {} diff --git a/apps/api/src/app/endpoints/sitemap/sitemap.service.ts b/apps/api/src/app/endpoints/sitemap/sitemap.service.ts new file mode 100644 index 000000000..d18fe884a --- /dev/null +++ b/apps/api/src/app/endpoints/sitemap/sitemap.service.ts @@ -0,0 +1,116 @@ +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; +import { SUPPORTED_LANGUAGE_CODES } from '@ghostfolio/common/config'; +import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; +import { PublicRoute } from '@ghostfolio/common/routes/interfaces/public-route.interface'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class SitemapService { + private static readonly TRANSLATION_TAGGED_MESSAGE_REGEX = + /:.*@@(?[a-zA-Z0-9.]+):(?.+)/; + + public constructor( + private readonly configurationService: ConfigurationService, + private readonly i18nService: I18nService + ) {} + + public getPersonalFinanceTools({ currentDate }: { currentDate: string }) { + const rootUrl = this.configurationService.get('ROOT_URL'); + + return SUPPORTED_LANGUAGE_CODES.flatMap((languageCode) => { + return personalFinanceTools.map(({ alias, key }) => { + const route = + publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes + .product; + const params = { + currentDate, + languageCode, + rootUrl, + urlPostfix: alias ?? key + }; + + return this.createRouteSitemapUrl({ ...params, route }); + }); + }).join('\n'); + } + + public getPublicRoutes({ currentDate }: { currentDate: string }) { + const rootUrl = this.configurationService.get('ROOT_URL'); + + return SUPPORTED_LANGUAGE_CODES.flatMap((languageCode) => { + const params = { + currentDate, + languageCode, + rootUrl + }; + + return [ + this.createRouteSitemapUrl(params), + ...this.createSitemapUrls(params, publicRoutes) + ]; + }).join('\n'); + } + + private createRouteSitemapUrl({ + currentDate, + languageCode, + rootUrl, + route, + urlPostfix + }: { + currentDate: string; + languageCode: string; + rootUrl: string; + route?: PublicRoute; + urlPostfix?: string; + }): string { + const segments = + route?.routerLink.map((link) => { + const match = link.match( + SitemapService.TRANSLATION_TAGGED_MESSAGE_REGEX + ); + + const segment = match + ? (this.i18nService.getTranslation({ + languageCode, + id: match.groups.id + }) ?? match.groups.message) + : link; + + return segment.replace(/^\/+|\/+$/, ''); + }) ?? []; + + const location = + [rootUrl, languageCode, ...segments].join('/') + + (urlPostfix ? `-${urlPostfix}` : ''); + + return [ + ' ', + ` ${location}`, + ` ${currentDate}T00:00:00+00:00`, + ' ' + ].join('\n'); + } + + private createSitemapUrls( + params: { currentDate: string; languageCode: string; rootUrl: string }, + routes: Record + ): string[] { + return Object.values(routes).flatMap((route) => { + if (route.excludeFromSitemap) { + return []; + } + + const urls = [this.createRouteSitemapUrl({ ...params, route })]; + + if (route.subRoutes) { + urls.push(...this.createSitemapUrls(params, route.subRoutes)); + } + + return urls; + }); + } +} diff --git a/apps/api/src/app/export/export.controller.ts b/apps/api/src/app/export/export.controller.ts index d807132c9..db2c7e3d9 100644 --- a/apps/api/src/app/export/export.controller.ts +++ b/apps/api/src/app/export/export.controller.ts @@ -1,9 +1,17 @@ import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; +import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; import { ApiService } from '@ghostfolio/api/services/api/api.service'; import { Export } from '@ghostfolio/common/interfaces'; import type { RequestWithUser } from '@ghostfolio/common/types'; -import { Controller, Get, Inject, Query, UseGuards } from '@nestjs/common'; +import { + Controller, + Get, + Inject, + Query, + UseGuards, + UseInterceptors +} from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; @@ -19,16 +27,21 @@ export class ExportController { @Get() @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + @UseInterceptors(TransformDataSourceInRequestInterceptor) public async export( @Query('accounts') filterByAccounts?: string, @Query('activityIds') filterByActivityIds?: string, @Query('assetClasses') filterByAssetClasses?: string, + @Query('dataSource') filterByDataSource?: string, + @Query('symbol') filterBySymbol?: string, @Query('tags') filterByTags?: string ): Promise { const activityIds = filterByActivityIds?.split(',') ?? []; const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, + filterByDataSource, + filterBySymbol, filterByTags }); diff --git a/apps/api/src/app/export/export.module.ts b/apps/api/src/app/export/export.module.ts index 892a761cc..424e83617 100644 --- a/apps/api/src/app/export/export.module.ts +++ b/apps/api/src/app/export/export.module.ts @@ -1,5 +1,6 @@ import { AccountModule } from '@ghostfolio/api/app/account/account.module'; import { OrderModule } from '@ghostfolio/api/app/order/order.module'; +import { TransformDataSourceInRequestModule } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.module'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; @@ -9,8 +10,14 @@ import { ExportController } from './export.controller'; import { ExportService } from './export.service'; @Module({ - imports: [AccountModule, ApiModule, OrderModule, TagModule], controllers: [ExportController], + imports: [ + AccountModule, + ApiModule, + OrderModule, + TagModule, + TransformDataSourceInRequestModule + ], providers: [ExportService] }) export class ExportModule {} diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 5efa429c7..565dd1340 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -48,7 +48,7 @@ export class ExportService { await this.accountService.accounts({ include: { balances: true, - Platform: true + platform: true }, orderBy: { name: 'asc' @@ -72,7 +72,7 @@ export class ExportService { id, isExcluded, name, - Platform: platform, + platform, platformId }) => { if (platformId) { @@ -141,9 +141,11 @@ export class ExportService { currency: currency ?? SymbolProfile.currency, dataSource: SymbolProfile.dataSource, date: date.toISOString(), - symbol: ['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(type) - ? SymbolProfile.name - : SymbolProfile.symbol, + symbol: + ['FEE', 'INTEREST', 'LIABILITY'].includes(type) || + (SymbolProfile.dataSource === 'MANUAL' && type === 'BUY') + ? SymbolProfile.name + : SymbolProfile.symbol, tags: currentTags.map(({ id: tagId }) => { return tagId; }) diff --git a/apps/api/src/app/health/health.controller.ts b/apps/api/src/app/health/health.controller.ts index 6ff09825b..5542ae933 100644 --- a/apps/api/src/app/health/health.controller.ts +++ b/apps/api/src/app/health/health.controller.ts @@ -1,4 +1,8 @@ import { TransformDataSourceInRequestInterceptor } from '@ghostfolio/api/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor'; +import { + DataEnhancerHealthResponse, + DataProviderHealthResponse +} from '@ghostfolio/common/interfaces'; import { Controller, @@ -37,23 +41,30 @@ export class HealthController { } @Get('data-enhancer/:name') - public async getHealthOfDataEnhancer(@Param('name') name: string) { + public async getHealthOfDataEnhancer( + @Param('name') name: string, + @Res() response: Response + ): Promise> { const hasResponse = await this.healthService.hasResponseFromDataEnhancer(name); - if (hasResponse !== true) { - throw new HttpException( - getReasonPhrase(StatusCodes.SERVICE_UNAVAILABLE), - StatusCodes.SERVICE_UNAVAILABLE - ); + if (hasResponse) { + return response.status(HttpStatus.OK).json({ + status: getReasonPhrase(StatusCodes.OK) + }); + } else { + return response + .status(HttpStatus.SERVICE_UNAVAILABLE) + .json({ status: getReasonPhrase(StatusCodes.SERVICE_UNAVAILABLE) }); } } @Get('data-provider/:dataSource') @UseInterceptors(TransformDataSourceInRequestInterceptor) public async getHealthOfDataProvider( - @Param('dataSource') dataSource: DataSource - ) { + @Param('dataSource') dataSource: DataSource, + @Res() response: Response + ): Promise> { if (!DataSource[dataSource]) { throw new HttpException( getReasonPhrase(StatusCodes.NOT_FOUND), @@ -64,11 +75,14 @@ export class HealthController { const hasResponse = await this.healthService.hasResponseFromDataProvider(dataSource); - if (hasResponse !== true) { - throw new HttpException( - getReasonPhrase(StatusCodes.SERVICE_UNAVAILABLE), - StatusCodes.SERVICE_UNAVAILABLE - ); + if (hasResponse) { + return response + .status(HttpStatus.OK) + .json({ status: getReasonPhrase(StatusCodes.OK) }); + } else { + return response + .status(HttpStatus.SERVICE_UNAVAILABLE) + .json({ status: getReasonPhrase(StatusCodes.SERVICE_UNAVAILABLE) }); } } } diff --git a/apps/api/src/app/import/create-account-with-balances.dto.ts b/apps/api/src/app/import/create-account-with-balances.dto.ts index fd4b8df48..6cf4057f8 100644 --- a/apps/api/src/app/import/create-account-with-balances.dto.ts +++ b/apps/api/src/app/import/create-account-with-balances.dto.ts @@ -6,5 +6,5 @@ import { IsArray, IsOptional } from 'class-validator'; export class CreateAccountWithBalancesDto extends CreateAccountDto { @IsArray() @IsOptional() - balances?: AccountBalance; + balances?: AccountBalance[]; } diff --git a/apps/api/src/app/import/import.controller.ts b/apps/api/src/app/import/import.controller.ts index 15631a3e8..081541fee 100644 --- a/apps/api/src/app/import/import.controller.ts +++ b/apps/api/src/app/import/import.controller.ts @@ -71,7 +71,7 @@ export class ImportController { const activities = await this.importService.import({ isDryRun, maxActivitiesToImport, - accountsDto: importData.accounts ?? [], + accountsWithBalancesDto: importData.accounts ?? [], activitiesDto: importData.activities, user: this.request.user }); @@ -100,7 +100,8 @@ export class ImportController { ): Promise { const activities = await this.importService.getDividends({ dataSource, - symbol + symbol, + userId: this.request.user.id }); return { activities }; diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 28c49ca70..c48df08d0 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -28,9 +28,11 @@ import { Injectable } from '@nestjs/common'; import { DataSource, Prisma, SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { endOfToday, isAfter, isSameSecond, parseISO } from 'date-fns'; -import { uniqBy } from 'lodash'; +import { omit, uniqBy } from 'lodash'; import { v4 as uuidv4 } from 'uuid'; +import { ImportDataDto } from './import-data.dto'; + @Injectable() export class ImportService { public constructor( @@ -46,11 +48,17 @@ export class ImportService { public async getDividends({ dataSource, - symbol - }: AssetProfileIdentifier): Promise { + symbol, + userId + }: AssetProfileIdentifier & { userId: string }): Promise { try { const { activities, firstBuyDate, historicalData } = - await this.portfolioService.getHolding(dataSource, undefined, symbol); + await this.portfolioService.getHolding({ + dataSource, + symbol, + userId, + impersonationId: undefined + }); const [[assetProfile], dividends] = await Promise.all([ this.symbolProfileService.getSymbolProfiles([ @@ -69,14 +77,14 @@ export class ImportService { ]); const accounts = activities - .filter(({ Account }) => { - return !!Account; + .filter(({ account }) => { + return !!account; }) - .map(({ Account }) => { - return Account; + .map(({ account }) => { + return account; }); - const Account = this.isUniqueAccount(accounts) ? accounts[0] : undefined; + const account = this.isUniqueAccount(accounts) ? accounts[0] : undefined; return await Promise.all( Object.entries(dividends).map(async ([dateString, { marketPrice }]) => { @@ -90,7 +98,7 @@ export class ImportService { const date = parseDate(dateString); const isDuplicate = activities.some((activity) => { return ( - activity.accountId === Account?.id && + activity.accountId === account?.id && activity.SymbolProfile.currency === assetProfile.currency && activity.SymbolProfile.dataSource === assetProfile.dataSource && isSameSecond(activity.date, date) && @@ -106,12 +114,12 @@ export class ImportService { : undefined; return { - Account, + account, date, error, quantity, value, - accountId: Account?.id, + accountId: account?.id, accountUserId: undefined, comment: undefined, currency: undefined, @@ -127,7 +135,7 @@ export class ImportService { unitPrice: marketPrice, unitPriceInAssetProfileCurrency: marketPrice, updatedAt: undefined, - userId: Account?.userId, + userId: account?.userId, valueInBaseCurrency: value }; }) @@ -138,14 +146,14 @@ export class ImportService { } public async import({ - accountsDto, + accountsWithBalancesDto, activitiesDto, isDryRun = false, maxActivitiesToImport, user }: { - accountsDto: Partial[]; - activitiesDto: Partial[]; + accountsWithBalancesDto: ImportDataDto['accounts']; + activitiesDto: ImportDataDto['activities']; isDryRun?: boolean; maxActivitiesToImport: number; user: UserWithSettings; @@ -153,12 +161,12 @@ export class ImportService { const accountIdMapping: { [oldAccountId: string]: string } = {}; const userCurrency = user.Settings.settings.baseCurrency; - if (!isDryRun && accountsDto?.length) { + if (!isDryRun && accountsWithBalancesDto?.length) { const [existingAccounts, existingPlatforms] = await Promise.all([ this.accountService.accounts({ where: { id: { - in: accountsDto.map(({ id }) => { + in: accountsWithBalancesDto.map(({ id }) => { return id; }) } @@ -167,14 +175,19 @@ export class ImportService { this.platformService.getPlatforms() ]); - for (const account of accountsDto) { + for (const accountWithBalances of accountsWithBalancesDto) { // Check if there is any existing account with the same ID const accountWithSameId = existingAccounts.find((existingAccount) => { - return existingAccount.id === account.id; + return existingAccount.id === accountWithBalances.id; }); // If there is no account or if the account belongs to a different user then create a new account if (!accountWithSameId || accountWithSameId.userId !== user.id) { + const account: CreateAccountDto = omit( + accountWithBalances, + 'balances' + ); + let oldAccountId: string; const platformId = account.platformId; @@ -187,7 +200,10 @@ export class ImportService { let accountObject: Prisma.AccountCreateInput = { ...account, - User: { connect: { id: user.id } } + balances: { + create: accountWithBalances.balances ?? [] + }, + user: { connect: { id: user.id } } }; if ( @@ -197,7 +213,7 @@ export class ImportService { ) { accountObject = { ...accountObject, - Platform: { connect: { id: platformId } } + platform: { connect: { id: platformId } } }; } @@ -216,7 +232,7 @@ export class ImportService { for (const activity of activitiesDto) { if (!activity.dataSource) { - if (['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(activity.type)) { + if (['FEE', 'INTEREST', 'LIABILITY'].includes(activity.type)) { activity.dataSource = DataSource.MANUAL; } else { activity.dataSource = @@ -251,7 +267,7 @@ export class ImportService { ); if (isDryRun) { - accountsDto.forEach(({ id, name }) => { + accountsWithBalancesDto.forEach(({ id, name }) => { accounts.push({ id, name }); }); } @@ -386,7 +402,7 @@ export class ImportService { } }, updateAccountBalance: false, - User: { connect: { id: user.id } }, + user: { connect: { id: user.id } }, userId: user.id }); @@ -548,6 +564,12 @@ export class ImportService { index, { currency, dataSource, symbol, type } ] of activitiesDto.entries()) { + if (type === 'ITEM') { + throw new Error( + `activities.${index}.type ("${type}") is deprecated, please use "BUY" instead` + ); + } + if (!dataSources.includes(dataSource)) { throw new Error( `activities.${index}.dataSource ("${dataSource}") is not valid` @@ -579,7 +601,11 @@ export class ImportService { )?.[symbol] }; - if (type === 'BUY' || type === 'DIVIDEND' || type === 'SELL') { + if ( + (dataSource !== 'MANUAL' && type === 'BUY') || + type === 'DIVIDEND' || + type === 'SELL' + ) { if (!assetProfile?.name) { throw new Error( `activities.${index}.symbol ("${symbol}") is not valid for the specified data source ("${dataSource}")` diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index 9581807b9..c31f601e3 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -14,7 +14,7 @@ import { PROPERTY_DEMO_USER_ID, PROPERTY_IS_READ_ONLY_MODE, PROPERTY_SLACK_COMMUNITY_USERS, - ghostfolioFearAndGreedIndexDataSource + ghostfolioFearAndGreedIndexDataSourceStocks } from '@ghostfolio/common/config'; import { DATE_FORMAT, @@ -54,19 +54,20 @@ export class InfoService { if (this.configurationService.get('ENABLE_FEATURE_FEAR_AND_GREED_INDEX')) { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { info.fearAndGreedDataSource = encodeDataSource( - ghostfolioFearAndGreedIndexDataSource + ghostfolioFearAndGreedIndexDataSourceStocks ); } else { - info.fearAndGreedDataSource = ghostfolioFearAndGreedIndexDataSource; + info.fearAndGreedDataSource = + ghostfolioFearAndGreedIndexDataSourceStocks; } globalPermissions.push(permissions.enableFearAndGreedIndex); } if (this.configurationService.get('ENABLE_FEATURE_READ_ONLY_MODE')) { - isReadOnlyMode = (await this.propertyService.getByKey( + isReadOnlyMode = await this.propertyService.getByKey( PROPERTY_IS_READ_ONLY_MODE - )) as boolean; + ); } if (this.configurationService.get('ENABLE_FEATURE_SOCIAL_LOGIN')) { @@ -81,9 +82,9 @@ export class InfoService { globalPermissions.push(permissions.enableSubscription); info.countriesOfSubscribers = - ((await this.propertyService.getByKey( + (await this.propertyService.getByKey( PROPERTY_COUNTRIES_OF_SUBSCRIBERS - )) as string[]) ?? []; + )) ?? []; info.stripePublicKey = this.configurationService.get('STRIPE_PUBLIC_KEY'); } @@ -133,11 +134,11 @@ export class InfoService { AND: [ { NOT: { - Analytics: null + analytics: null } }, { - Analytics: { + analytics: { lastRequestAt: { gt: subDays(new Date(), aDays) } @@ -216,7 +217,7 @@ export class InfoService { AND: [ { NOT: { - Analytics: null + analytics: null } }, { @@ -230,15 +231,15 @@ export class InfoService { } private async countSlackCommunityUsers() { - return (await this.propertyService.getByKey( + return await this.propertyService.getByKey( PROPERTY_SLACK_COMMUNITY_USERS - )) as string; + ); } private async getDemoAuthToken() { - const demoUserId = (await this.propertyService.getByKey( + const demoUserId = await this.propertyService.getByKey( PROPERTY_DEMO_USER_ID - )) as string; + ); if (demoUserId) { return this.jwtService.sign({ @@ -298,9 +299,9 @@ export class InfoService { private async getUptime(): Promise { { try { - const monitorId = (await this.propertyService.getByKey( + const monitorId = await this.propertyService.getByKey( PROPERTY_BETTER_UPTIME_MONITOR_ID - )) as string; + ); const { data } = await fetch( `https://uptime.betterstack.com/api/v2/monitors/${monitorId}/sla?from=${format( diff --git a/apps/api/src/app/order/interfaces/activities.interface.ts b/apps/api/src/app/order/interfaces/activities.interface.ts index c605c4787..99dd87fea 100644 --- a/apps/api/src/app/order/interfaces/activities.interface.ts +++ b/apps/api/src/app/order/interfaces/activities.interface.ts @@ -9,7 +9,7 @@ export interface Activities { } export interface Activity extends Order { - Account?: AccountWithPlatform; + account?: AccountWithPlatform; error?: ActivityError; feeInAssetProfileCurrency: number; feeInBaseCurrency: number; diff --git a/apps/api/src/app/order/order.controller.ts b/apps/api/src/app/order/order.controller.ts index 2c4a58596..b30920e90 100644 --- a/apps/api/src/app/order/order.controller.ts +++ b/apps/api/src/app/order/order.controller.ts @@ -53,14 +53,19 @@ export class OrderController { @Delete() @HasPermission(permissions.deleteOrder) @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + @UseInterceptors(TransformDataSourceInRequestInterceptor) public async deleteOrders( @Query('accounts') filterByAccounts?: string, @Query('assetClasses') filterByAssetClasses?: string, + @Query('dataSource') filterByDataSource?: string, + @Query('symbol') filterBySymbol?: string, @Query('tags') filterByTags?: string ): Promise { const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, + filterByDataSource, + filterBySymbol, filterByTags }); @@ -184,6 +189,7 @@ export class OrderController { public async createOrder(@Body() data: CreateOrderDto): Promise { const currency = data.currency; const customCurrency = data.customCurrency; + const dataSource = data.dataSource; if (customCurrency) { data.currency = customCurrency; @@ -191,6 +197,8 @@ export class OrderController { delete data.customCurrency; } + delete data.dataSource; + const order = await this.orderService.createOrder({ ...data, date: parseISO(data.date), @@ -198,28 +206,28 @@ export class OrderController { connectOrCreate: { create: { currency, - dataSource: data.dataSource, + dataSource, symbol: data.symbol }, where: { dataSource_symbol: { - dataSource: data.dataSource, + dataSource, symbol: data.symbol } } } }, - User: { connect: { id: this.request.user.id } }, + user: { connect: { id: this.request.user.id } }, userId: this.request.user.id }); - if (data.dataSource && !order.isDraft) { + if (dataSource && !order.isDraft) { // Gather symbol data in the background, if data source is set // (not MANUAL) and not draft this.dataGatheringService.gatherSymbols({ dataGatheringItems: [ { - dataSource: data.dataSource, + dataSource, date: order.date, symbol: data.symbol } @@ -251,6 +259,7 @@ export class OrderController { const accountId = data.accountId; const customCurrency = data.customCurrency; + const dataSource = data.dataSource; delete data.accountId; @@ -260,11 +269,13 @@ export class OrderController { delete data.customCurrency; } + delete data.dataSource; + return this.orderService.updateOrder({ data: { ...data, date, - Account: { + account: { connect: { id_userId: { id: accountId, userId: this.request.user.id } } @@ -272,7 +283,7 @@ export class OrderController { SymbolProfile: { connect: { dataSource_symbol: { - dataSource: data.dataSource, + dataSource, symbol: data.symbol } }, @@ -282,7 +293,7 @@ export class OrderController { name: data.symbol } }, - User: { connect: { id: this.request.user.id } } + user: { connect: { id: this.request.user.id } } }, where: { id diff --git a/apps/api/src/app/order/order.service.ts b/apps/api/src/app/order/order.service.ts index 21012cde6..5ee078c49 100644 --- a/apps/api/src/app/order/order.service.ts +++ b/apps/api/src/app/order/order.service.ts @@ -93,17 +93,16 @@ export class OrderService { assetClass?: AssetClass; assetSubClass?: AssetSubClass; currency?: string; - dataSource?: DataSource; symbol?: string; tags?: Tag[]; updateAccountBalance?: boolean; userId: string; } ): Promise { - let Account: Prisma.AccountCreateNestedOneWithoutActivitiesInput; + let account: Prisma.AccountCreateNestedOneWithoutActivitiesInput; if (data.accountId) { - Account = { + account = { connect: { id_userId: { userId: data.userId, @@ -118,7 +117,11 @@ export class OrderService { const updateAccountBalance = data.updateAccountBalance ?? false; const userId = data.userId; - if (['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(data.type)) { + if ( + ['FEE', 'INTEREST', 'LIABILITY'].includes(data.type) || + (data.SymbolProfile.connectOrCreate.create.dataSource === 'MANUAL' && + data.type === 'BUY') + ) { const assetClass = data.assetClass; const assetSubClass = data.assetSubClass; const dataSource: DataSource = 'MANUAL'; @@ -164,7 +167,6 @@ export class OrderService { delete data.comment; } - delete data.dataSource; delete data.symbol; delete data.tags; delete data.updateAccountBalance; @@ -172,14 +174,14 @@ export class OrderService { const orderData: Prisma.OrderCreateInput = data; - const isDraft = ['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(data.type) + const isDraft = ['FEE', 'INTEREST', 'LIABILITY'].includes(data.type) ? false : isAfter(data.date as Date, endOfToday()); const order = await this.prismaService.order.create({ data: { ...orderData, - Account, + account, isDraft, tags: { connect: tags.map(({ id }) => { @@ -335,7 +337,7 @@ export class OrderService { ]; const where: Prisma.OrderWhereInput = { userId }; - let symbolProfileConditions: Prisma.SymbolProfileWhereInput[] = []; + const symbolProfileConditions: Prisma.SymbolProfileWhereInput[] = []; where.SymbolProfile = { AND: symbolProfileConditions }; @@ -489,8 +491,8 @@ export class OrderService { if (withExcludedAccounts === false) { where.OR = [ - { Account: null }, - { Account: { NOT: { isExcluded: true } } } + { account: null }, + { account: { NOT: { isExcluded: true } } } ]; } @@ -501,10 +503,9 @@ export class OrderService { take, where, include: { - // eslint-disable-next-line @typescript-eslint/naming-convention - Account: { + account: { include: { - Platform: true + platform: true } }, // eslint-disable-next-line @typescript-eslint/naming-convention @@ -646,7 +647,6 @@ export class OrderService { assetClass?: AssetClass; assetSubClass?: AssetSubClass; currency?: string; - dataSource?: DataSource; symbol?: string; tags?: Tag[]; type?: ActivityType; @@ -661,12 +661,17 @@ export class OrderService { let isDraft = false; - if (['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(data.type)) { - delete data.SymbolProfile.connect; - - if (data.Account?.connect?.id_userId?.id === null) { - data.Account = { disconnect: true }; + if ( + ['FEE', 'INTEREST', 'LIABILITY'].includes(data.type) || + (data.SymbolProfile.connect.dataSource_symbol.dataSource === 'MANUAL' && + data.type === 'BUY') + ) { + if (data.account?.connect?.id_userId?.id === null) { + data.account = { disconnect: true }; } + + delete data.SymbolProfile.connect; + delete data.SymbolProfile.update.name; } else { delete data.SymbolProfile.update; @@ -690,17 +695,17 @@ export class OrderService { delete data.assetClass; delete data.assetSubClass; - delete data.dataSource; delete data.symbol; delete data.tags; // Remove existing tags await this.prismaService.order.update({ - data: { tags: { set: [] } }, - where + where, + data: { tags: { set: [] } } }); const order = await this.prismaService.order.update({ + where, data: { ...data, isDraft, @@ -709,8 +714,7 @@ export class OrderService { return { id }; }) } - }, - where + } }); this.eventEmitter.emit( diff --git a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts index 99aeb42f8..ac7e02027 100644 --- a/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/portfolio-calculator.ts @@ -187,8 +187,7 @@ export abstract class PortfolioCalculator { totalInterestWithCurrencyEffect: new Big(0), totalInvestment: new Big(0), totalInvestmentWithCurrencyEffect: new Big(0), - totalLiabilitiesWithCurrencyEffect: new Big(0), - totalValuablesWithCurrencyEffect: new Big(0) + totalLiabilitiesWithCurrencyEffect: new Big(0) }; } @@ -198,7 +197,6 @@ export abstract class PortfolioCalculator { let firstTransactionPoint: TransactionPoint = null; let totalInterestWithCurrencyEffect = new Big(0); let totalLiabilitiesWithCurrencyEffect = new Big(0); - let totalValuablesWithCurrencyEffect = new Big(0); for (const { currency, dataSource, symbol } of transactionPoints[ firstIndex - 1 @@ -364,8 +362,7 @@ export abstract class PortfolioCalculator { totalInterestInBaseCurrency, totalInvestment, totalInvestmentWithCurrencyEffect, - totalLiabilitiesInBaseCurrency, - totalValuablesInBaseCurrency + totalLiabilitiesInBaseCurrency } = this.getSymbolMetrics({ chartDateMap, marketSymbolMap, @@ -444,10 +441,6 @@ export abstract class PortfolioCalculator { totalLiabilitiesWithCurrencyEffect = totalLiabilitiesWithCurrencyEffect.plus(totalLiabilitiesInBaseCurrency); - totalValuablesWithCurrencyEffect = totalValuablesWithCurrencyEffect.plus( - totalValuablesInBaseCurrency - ); - if ( (hasErrors || currentRateErrors.find(({ dataSource, symbol }) => { @@ -597,7 +590,6 @@ export abstract class PortfolioCalculator { netPerformance: totalNetPerformanceValue.toNumber(), netPerformanceWithCurrencyEffect: totalNetPerformanceValueWithCurrencyEffect.toNumber(), - // TODO: Add valuables netWorth: totalCurrentValueWithCurrencyEffect .plus(totalAccountBalanceWithCurrencyEffect) .toNumber(), @@ -619,7 +611,6 @@ export abstract class PortfolioCalculator { positions, totalInterestWithCurrencyEffect, totalLiabilitiesWithCurrencyEffect, - totalValuablesWithCurrencyEffect, hasErrors: hasAnySymbolMetricsErrors || overall.hasErrors }; } @@ -754,7 +745,7 @@ export abstract class PortfolioCalculator { ? 0 : netPerformanceWithCurrencyEffectSinceStartDate / timeWeightedInvestmentValue - // TODO: Add net worth with valuables + // TODO: Add net worth // netWorth: totalCurrentValueWithCurrencyEffect // .plus(totalAccountBalanceWithCurrencyEffect) // .toNumber() @@ -819,12 +810,6 @@ export abstract class PortfolioCalculator { return this.transactionPoints; } - public async getValuablesInBaseCurrency() { - await this.snapshotPromise; - - return this.snapshot.totalValuablesWithCurrencyEffect; - } - private getChartDateMap({ endDate, startDate, @@ -1000,19 +985,12 @@ export abstract class PortfolioCalculator { liabilities = quantity.mul(unitPrice); } - let valuables = new Big(0); - - if (type === 'ITEM') { - valuables = quantity.mul(unitPrice); - } - if (lastDate !== date || lastTransactionPoint === null) { lastTransactionPoint = { date, fees, interest, liabilities, - valuables, items: newItems }; @@ -1024,8 +1002,6 @@ export abstract class PortfolioCalculator { lastTransactionPoint.items = newItems; lastTransactionPoint.liabilities = lastTransactionPoint.liabilities.plus(liabilities); - lastTransactionPoint.valuables = - lastTransactionPoint.valuables.plus(valuables); } lastDate = date; diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts index 589c2dcee..ab8000702 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts @@ -194,8 +194,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('0'), totalInvestmentWithCurrencyEffect: new Big('0'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts index 033f2622d..cc65fa8a2 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy-and-sell.spec.ts @@ -179,8 +179,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('0'), totalInvestmentWithCurrencyEffect: new Big('0'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts index e7f95aea8..7d9544666 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-baln-buy.spec.ts @@ -170,8 +170,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('273.2'), totalInvestmentWithCurrencyEffect: new Big('273.2'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts index ba818eb40..3594b4427 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btceur.spec.ts @@ -63,7 +63,7 @@ describe('PortfolioCalculator', () => { beforeAll(() => { activityDtos = loadActivityExportFile( - join(__dirname, '../../../../../../../test/import/ok-btceur.json') + join(__dirname, '../../../../../../../test/import/ok/btceur.json') ); }); @@ -224,8 +224,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('44558.42'), totalInvestmentWithCurrencyEffect: new Big('44558.42'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(investments).toEqual([ diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts index acd07344e..de3f5d3cd 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts @@ -198,8 +198,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('320.43').mul(0.97373), totalInvestmentWithCurrencyEffect: new Big('318.542667299999967957'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts index cf07eff97..d1d9fbd93 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-btcusd.spec.ts @@ -63,7 +63,7 @@ describe('PortfolioCalculator', () => { beforeAll(() => { activityDtos = loadActivityExportFile( - join(__dirname, '../../../../../../../test/import/ok-btcusd.json') + join(__dirname, '../../../../../../../test/import/ok/btcusd.json') ); }); @@ -224,8 +224,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('44558.42'), totalInvestmentWithCurrencyEffect: new Big('44558.42'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(investments).toEqual([ diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts index a8aea0841..31c6afe66 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-fee.spec.ts @@ -151,8 +151,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('0'), totalInvestmentWithCurrencyEffect: new Big('0'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts index 18e8dd5df..f7d0e9e6d 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-googl-buy.spec.ts @@ -177,8 +177,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('89.12').mul(0.8854), totalInvestmentWithCurrencyEffect: new Big('82.329056'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts index 4c1962c1b..36b6e8be9 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-msft-buy-with-dividend.spec.ts @@ -170,8 +170,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('298.58'), totalInvestmentWithCurrencyEffect: new Big('298.58'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts index 9d5b74bb2..f64328d39 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-no-orders.spec.ts @@ -105,8 +105,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big(0), totalInvestmentWithCurrencyEffect: new Big(0), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(investments).toEqual([]); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts index 92a3e33ed..96bbbc757 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell-partially.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { activityDtos = loadActivityExportFile( join( __dirname, - '../../../../../../../test/import/ok-novn-buy-and-sell-partially.json' + '../../../../../../../test/import/ok/novn-buy-and-sell-partially.json' ) ); }); @@ -177,8 +177,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('75.80'), totalInvestmentWithCurrencyEffect: new Big('75.80'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts index 3d4760be7..c19f6917e 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-novn-buy-and-sell.spec.ts @@ -65,7 +65,7 @@ describe('PortfolioCalculator', () => { activityDtos = loadActivityExportFile( join( __dirname, - '../../../../../../../test/import/ok-novn-buy-and-sell.json' + '../../../../../../../test/import/ok/novn-buy-and-sell.json' ) ); }); @@ -228,8 +228,7 @@ describe('PortfolioCalculator', () => { totalInterestWithCurrencyEffect: new Big('0'), totalInvestment: new Big('0'), totalInvestmentWithCurrencyEffect: new Big('0'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts similarity index 87% rename from apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts rename to apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts index 21d208d9f..f883e67a2 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-item.spec.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator-valuable.spec.ts @@ -82,7 +82,7 @@ describe('PortfolioCalculator', () => { }); describe('compute portfolio snapshot', () => { - it.only('with item activity', async () => { + it.only('with valuable activity', async () => { jest.useFakeTimers().setSystemTime(parseDate('2022-01-31').getTime()); const activities: Activity[] = [ @@ -98,7 +98,7 @@ describe('PortfolioCalculator', () => { name: 'Penthouse Apartment', symbol: 'dac95060-d4f2-4653-a253-2c45e6fb5cde' }, - type: 'ITEM', + type: 'BUY', unitPriceInAssetProfileCurrency: 500000 } ]; @@ -113,9 +113,15 @@ describe('PortfolioCalculator', () => { const portfolioSnapshot = await portfolioCalculator.computeSnapshot(); expect(portfolioSnapshot).toMatchObject({ - currentValueInBaseCurrency: new Big('0'), - errors: [], - hasErrors: true, + currentValueInBaseCurrency: new Big('500000'), + // TODO: [] + errors: [ + { + dataSource: 'MANUAL', + symbol: 'dac95060-d4f2-4653-a253-2c45e6fb5cde' + } + ], + hasErrors: true, // TODO: false positions: [ { averagePrice: new Big('500000'), @@ -130,29 +136,28 @@ describe('PortfolioCalculator', () => { grossPerformancePercentage: null, grossPerformancePercentageWithCurrencyEffect: null, grossPerformanceWithCurrencyEffect: null, - investment: new Big('0'), - investmentWithCurrencyEffect: new Big('0'), + investment: new Big('0'), // TODO: new Big('500000') + investmentWithCurrencyEffect: new Big('0'), // TODO: new Big('500000') marketPrice: null, marketPriceInBaseCurrency: 500000, netPerformance: null, netPerformancePercentage: null, netPerformancePercentageWithCurrencyEffectMap: null, netPerformanceWithCurrencyEffectMap: null, - quantity: new Big('0'), + quantity: new Big('1'), symbol: 'dac95060-d4f2-4653-a253-2c45e6fb5cde', tags: [], timeWeightedInvestment: new Big('0'), timeWeightedInvestmentWithCurrencyEffect: new Big('0'), transactionCount: 1, - valueInBaseCurrency: new Big('0') + valueInBaseCurrency: new Big('500000') } ], totalFeesWithCurrencyEffect: new Big('0'), totalInterestWithCurrencyEffect: new Big('0'), - totalInvestment: new Big('0'), - totalInvestmentWithCurrencyEffect: new Big('0'), - totalLiabilitiesWithCurrencyEffect: new Big('0'), - totalValuablesWithCurrencyEffect: new Big('0') + totalInvestment: new Big('0'), // TODO: new Big('500000') + totalInvestmentWithCurrencyEffect: new Big('0'), // TODO: new Big('500000') + totalLiabilitiesWithCurrencyEffect: new Big('0') }); expect(portfolioSnapshot.historicalData.at(-1)).toMatchObject( @@ -161,7 +166,7 @@ describe('PortfolioCalculator', () => { netPerformanceInPercentage: 0, netPerformanceInPercentageWithCurrencyEffect: 0, netPerformanceWithCurrencyEffect: 0, - totalInvestmentValueWithCurrencyEffect: 0 + totalInvestmentValueWithCurrencyEffect: 0 // TODO: 500000 }) ); }); diff --git a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts index d9da465f9..d697c7c69 100644 --- a/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/calculator/roai/portfolio-calculator.ts @@ -108,8 +108,7 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { createdAt: new Date(), errors: [], historicalData: [], - totalLiabilitiesWithCurrencyEffect: new Big(0), - totalValuablesWithCurrencyEffect: new Big(0) + totalLiabilitiesWithCurrencyEffect: new Big(0) }; } @@ -179,8 +178,6 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { let totalLiabilitiesInBaseCurrency = new Big(0); let totalQuantityFromBuyTransactions = new Big(0); let totalUnits = new Big(0); - let totalValuables = new Big(0); - let totalValuablesInBaseCurrency = new Big(0); let valueAtStartDate: Big; let valueAtStartDateWithCurrencyEffect: Big; @@ -224,9 +221,7 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { totalInvestment: new Big(0), totalInvestmentWithCurrencyEffect: new Big(0), totalLiabilities: new Big(0), - totalLiabilitiesInBaseCurrency: new Big(0), - totalValuables: new Big(0), - totalValuablesInBaseCurrency: new Big(0) + totalLiabilitiesInBaseCurrency: new Big(0) }; } @@ -274,9 +269,7 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { totalInvestment: new Big(0), totalInvestmentWithCurrencyEffect: new Big(0), totalLiabilities: new Big(0), - totalLiabilitiesInBaseCurrency: new Big(0), - totalValuables: new Big(0), - totalValuablesInBaseCurrency: new Big(0) + totalLiabilitiesInBaseCurrency: new Big(0) }; } @@ -412,13 +405,6 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { totalInterestInBaseCurrency = totalInterestInBaseCurrency.plus( interest.mul(exchangeRateAtOrderDate ?? 1) ); - } else if (order.type === 'ITEM') { - const valuables = order.quantity.mul(order.unitPrice); - - totalValuables = totalValuables.plus(valuables); - totalValuablesInBaseCurrency = totalValuablesInBaseCurrency.plus( - valuables.mul(exchangeRateAtOrderDate ?? 1) - ); } else if (order.type === 'LIABILITY') { const liabilities = order.quantity.mul(order.unitPrice); @@ -971,8 +957,6 @@ export class RoaiPortfolioCalculator extends PortfolioCalculator { totalInvestmentWithCurrencyEffect, totalLiabilities, totalLiabilitiesInBaseCurrency, - totalValuables, - totalValuablesInBaseCurrency, grossPerformance: totalGrossPerformance, grossPerformanceWithCurrencyEffect: totalGrossPerformanceWithCurrencyEffect, diff --git a/apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts b/apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts index fcbea81ca..698b202e4 100644 --- a/apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts +++ b/apps/api/src/app/portfolio/interfaces/transaction-point.interface.ts @@ -8,5 +8,4 @@ export interface TransactionPoint { interest: Big; items: TransactionPointSymbol[]; liabilities: Big; - valuables: Big; } diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index ac8aa7dd6..c311f04a9 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -1,4 +1,3 @@ - import { OrderService } from '@ghostfolio/api/app/order/order.service'; import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorator'; import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; @@ -377,11 +376,12 @@ export class PortfolioController { @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string ): Promise { - const holding = await this.portfolioService.getHolding( + const holding = await this.portfolioService.getHolding({ dataSource, impersonationId, - symbol - ); + symbol, + userId: this.request.user.id + }); if (!holding) { throw new HttpException( @@ -414,19 +414,19 @@ export class PortfolioController { filterByAssetClasses, filterByDataSource, filterByHoldingType, - filterBySearchQuery, filterBySymbol, filterByTags }); - const { holdings } = await this.portfolioService.getDetails({ + const holdings = await this.portfolioService.getHoldings({ dateRange, filters, impersonationId, + query: filterBySearchQuery, userId: this.request.user.id }); - return { holdings: Object.values(holdings) }; + return { holdings }; } @Get('lookup') @@ -477,7 +477,8 @@ export class PortfolioController { filters, groupBy, impersonationId, - savingsRate: this.request.user?.Settings?.settings.savingsRate + savingsRate: this.request.user?.Settings?.settings.savingsRate, + userId: this.request.user.id }); if ( @@ -646,11 +647,12 @@ export class PortfolioController { @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string ): Promise { - const holding = await this.portfolioService.getHolding( + const holding = await this.portfolioService.getHolding({ dataSource, impersonationId, - symbol - ); + symbol, + userId: this.request.user.id + }); if (!holding) { throw new HttpException( @@ -667,7 +669,10 @@ export class PortfolioController { public async getReport( @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string ): Promise { - const report = await this.portfolioService.getReport(impersonationId); + const report = await this.portfolioService.getReport({ + impersonationId, + userId: this.request.user.id + }); if ( this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION') && @@ -696,11 +701,12 @@ export class PortfolioController { @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string ): Promise { - const holding = await this.portfolioService.getHolding( + const holding = await this.portfolioService.getHolding({ dataSource, impersonationId, - symbol - ); + symbol, + userId: this.request.user.id + }); if (!holding) { throw new HttpException( @@ -731,11 +737,12 @@ export class PortfolioController { @Param('dataSource') dataSource: DataSource, @Param('symbol') symbol: string ): Promise { - const holding = await this.portfolioService.getHolding( + const holding = await this.portfolioService.getHolding({ dataSource, impersonationId, - symbol - ); + symbol, + userId: this.request.user.id + }); if (!holding) { throw new HttpException( diff --git a/apps/api/src/app/portfolio/portfolio.module.ts b/apps/api/src/app/portfolio/portfolio.module.ts index 0f64b2f6a..6dd5811a3 100644 --- a/apps/api/src/app/portfolio/portfolio.module.ts +++ b/apps/api/src/app/portfolio/portfolio.module.ts @@ -13,6 +13,7 @@ import { BenchmarkModule } from '@ghostfolio/api/services/benchmark/benchmark.mo import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataProviderModule } from '@ghostfolio/api/services/data-provider/data-provider.module'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { ImpersonationModule } from '@ghostfolio/api/services/impersonation/impersonation.module'; import { MarketDataModule } from '@ghostfolio/api/services/market-data/market-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; @@ -39,6 +40,7 @@ import { RulesService } from './rules.service'; DataGatheringModule, DataProviderModule, ExchangeRateDataModule, + I18nModule, ImpersonationModule, MarketDataModule, OrderModule, diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 9388ee775..8a7c0d2ab 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -23,6 +23,7 @@ import { RegionalMarketClusterRiskNorthAmerica } from '@ghostfolio/api/models/ru import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile/symbol-profile.service'; import { @@ -31,7 +32,7 @@ import { } from '@ghostfolio/common/calculation-helper'; import { DEFAULT_CURRENCY, - EMERGENCY_FUND_TAG_ID, + TAG_ID_EMERGENCY_FUND, UNKNOWN_KEY } from '@ghostfolio/common/config'; import { @@ -54,7 +55,6 @@ import { PortfolioPosition, PortfolioReportResponse, PortfolioSummary, - Position, UserSettings } from '@ghostfolio/common/interfaces'; import { TimelinePosition } from '@ghostfolio/common/models'; @@ -97,6 +97,8 @@ import { PortfolioCalculator } from './calculator/portfolio-calculator'; import { PortfolioCalculatorFactory } from './calculator/portfolio-calculator.factory'; import { RulesService } from './rules.service'; +const Fuse = require('fuse.js'); + const asiaPacificMarkets = require('../../assets/countries/asia-pacific-markets.json'); const developedMarkets = require('../../assets/countries/developed-markets.json'); const emergingMarkets = require('../../assets/countries/emerging-markets.json'); @@ -111,6 +113,7 @@ export class PortfolioService { private readonly calculatorFactory: PortfolioCalculatorFactory, private readonly dataProviderService: DataProviderService, private readonly exchangeRateDataService: ExchangeRateDataService, + private readonly i18nService: I18nService, private readonly impersonationService: ImpersonationService, private readonly orderService: OrderService, @Inject(REQUEST) private readonly request: RequestWithUser, @@ -162,7 +165,10 @@ export class PortfolioService { const [accounts, details] = await Promise.all([ this.accountService.accounts({ where, - include: { activities: true, Platform: true }, + include: { + activities: true, + platform: true + }, orderBy: { name: 'asc' } }), this.getDetails({ @@ -270,20 +276,59 @@ export class PortfolioService { return dividends; } + public async getHoldings({ + dateRange, + filters, + impersonationId, + query, + userId + }: { + dateRange: DateRange; + filters?: Filter[]; + impersonationId: string; + query?: string; + userId: string; + }) { + userId = await this.getUserId(impersonationId, userId); + const { holdings: holdingsMap } = await this.getDetails({ + dateRange, + filters, + impersonationId, + userId + }); + + let holdings = Object.values(holdingsMap); + + if (query) { + const fuse = new Fuse(holdings, { + keys: ['isin', 'name', 'symbol'], + threshold: 0.3 + }); + + holdings = fuse.search(query).map(({ item }) => { + return item; + }); + } + + return holdings; + } + public async getInvestments({ dateRange, filters, groupBy, impersonationId, - savingsRate + savingsRate, + userId }: { dateRange: DateRange; filters?: Filter[]; groupBy?: GroupBy; impersonationId: string; savingsRate: number; + userId: string; }): Promise { - const userId = await this.getUserId(impersonationId, this.request.user.id); + userId = await this.getUserId(impersonationId, userId); const user = await this.userService.user({ id: userId }); const userCurrency = this.getUserCurrency(user); @@ -587,7 +632,7 @@ export class PortfolioService { } if (filters?.length === 0 || isFilteredByAccount || isFilteredByCash) { - const cashPositions = await this.getCashPositions({ + const cashPositions = this.getCashPositions({ cashDetails, userCurrency, value: filteredValueInBaseCurrency @@ -609,10 +654,10 @@ export class PortfolioService { if ( filters?.length === 1 && - filters[0].id === EMERGENCY_FUND_TAG_ID && + filters[0].id === TAG_ID_EMERGENCY_FUND && filters[0].type === 'TAG' ) { - const emergencyFundCashPositions = await this.getCashPositions({ + const emergencyFundCashPositions = this.getCashPositions({ cashDetails, userCurrency, value: filteredValueInBaseCurrency @@ -678,12 +723,18 @@ export class PortfolioService { }; } - public async getHolding( - aDataSource: DataSource, - aImpersonationId: string, - aSymbol: string - ): Promise { - const userId = await this.getUserId(aImpersonationId, this.request.user.id); + public async getHolding({ + dataSource, + impersonationId, + symbol, + userId + }: { + dataSource: DataSource; + impersonationId: string; + symbol: string; + userId: string; + }): Promise { + userId = await this.getUserId(impersonationId, userId); const user = await this.userService.user({ id: userId }); const userCurrency = this.getUserCurrency(user); @@ -708,7 +759,7 @@ export class PortfolioService { grossPerformancePercentWithCurrencyEffect: undefined, grossPerformanceWithCurrencyEffect: undefined, historicalData: [], - investment: undefined, + investmentInBaseCurrencyWithCurrencyEffect: undefined, marketPrice: undefined, marketPriceMax: undefined, marketPriceMin: undefined, @@ -726,7 +777,7 @@ export class PortfolioService { } const [SymbolProfile] = await this.symbolProfileService.getSymbolProfiles([ - { dataSource: aDataSource, symbol: aSymbol } + { dataSource, symbol } ]); const portfolioCalculator = this.calculatorFactory.createCalculator({ @@ -741,26 +792,33 @@ export class PortfolioService { const { positions } = await portfolioCalculator.getSnapshot(); - const position = positions.find(({ dataSource, symbol }) => { - return dataSource === aDataSource && symbol === aSymbol; + const holding = positions.find((position) => { + return position.dataSource === dataSource && position.symbol === symbol; }); - if (position) { + if (holding) { const { averagePrice, currency, - dataSource, dividendInBaseCurrency, fee, firstBuyDate, + grossPerformance, + grossPerformancePercentage, + grossPerformancePercentageWithCurrencyEffect, + grossPerformanceWithCurrencyEffect, + investmentWithCurrencyEffect, marketPrice, + netPerformance, + netPerformancePercentage, + netPerformancePercentageWithCurrencyEffectMap, + netPerformanceWithCurrencyEffectMap, quantity, - symbol, tags, timeWeightedInvestment, timeWeightedInvestmentWithCurrencyEffect, transactionCount - } = position; + } = holding; const activitiesOfHolding = activities.filter(({ SymbolProfile }) => { return ( @@ -789,7 +847,7 @@ export class PortfolioService { }); const historicalData = await this.dataProviderService.getHistorical( - [{ dataSource, symbol: aSymbol }], + [{ dataSource, symbol }], 'day', parseISO(firstBuyDate), new Date() @@ -809,10 +867,10 @@ export class PortfolioService { marketPrice ); - if (historicalData[aSymbol]) { + if (historicalData[symbol]) { let j = -1; for (const [date, { marketPrice }] of Object.entries( - historicalData[aSymbol] + historicalData[symbol] )) { while ( j + 1 < transactionPoints.length && @@ -825,8 +883,8 @@ export class PortfolioService { let currentQuantity = 0; const currentSymbol = transactionPoints[j]?.items.find( - ({ symbol }) => { - return symbol === aSymbol; + (transactionPointSymbol) => { + return transactionPointSymbol.symbol === symbol; } ); @@ -890,23 +948,21 @@ export class PortfolioService { SymbolProfile.currency, userCurrency ), - grossPerformance: position.grossPerformance?.toNumber(), - grossPerformancePercent: - position.grossPerformancePercentage?.toNumber(), + grossPerformance: grossPerformance?.toNumber(), + grossPerformancePercent: grossPerformancePercentage?.toNumber(), grossPerformancePercentWithCurrencyEffect: - position.grossPerformancePercentageWithCurrencyEffect?.toNumber(), + grossPerformancePercentageWithCurrencyEffect?.toNumber(), grossPerformanceWithCurrencyEffect: - position.grossPerformanceWithCurrencyEffect?.toNumber(), + grossPerformanceWithCurrencyEffect?.toNumber(), historicalData: historicalDataArray, - investment: position.investment?.toNumber(), - netPerformance: position.netPerformance?.toNumber(), - netPerformancePercent: position.netPerformancePercentage?.toNumber(), + investmentInBaseCurrencyWithCurrencyEffect: + investmentWithCurrencyEffect?.toNumber(), + netPerformance: netPerformance?.toNumber(), + netPerformancePercent: netPerformancePercentage?.toNumber(), netPerformancePercentWithCurrencyEffect: - position.netPerformancePercentageWithCurrencyEffectMap?.[ - 'max' - ]?.toNumber(), + netPerformancePercentageWithCurrencyEffectMap?.['max']?.toNumber(), netPerformanceWithCurrencyEffect: - position.netPerformanceWithCurrencyEffectMap?.['max']?.toNumber(), + netPerformanceWithCurrencyEffectMap?.['max']?.toNumber(), performances: { allTimeHigh: { performancePercent, @@ -923,12 +979,12 @@ export class PortfolioService { } else { const currentData = await this.dataProviderService.getQuotes({ user, - items: [{ dataSource: DataSource.YAHOO, symbol: aSymbol }] + items: [{ symbol, dataSource: DataSource.YAHOO }] }); - const marketPrice = currentData[aSymbol]?.marketPrice; + const marketPrice = currentData[symbol]?.marketPrice; let historicalData = await this.dataProviderService.getHistorical( - [{ dataSource: DataSource.YAHOO, symbol: aSymbol }], + [{ symbol, dataSource: DataSource.YAHOO }], 'day', portfolioStart, new Date() @@ -937,15 +993,13 @@ export class PortfolioService { if (isEmpty(historicalData)) { try { historicalData = await this.dataProviderService.getHistoricalRaw({ - assetProfileIdentifiers: [ - { dataSource: DataSource.YAHOO, symbol: aSymbol } - ], + assetProfileIdentifiers: [{ symbol, dataSource: DataSource.YAHOO }], from: portfolioStart, to: new Date() }); } catch { historicalData = { - [aSymbol]: {} + [symbol]: {} }; } } @@ -956,7 +1010,7 @@ export class PortfolioService { let marketPriceMin = marketPrice; for (const [date, { marketPrice }] of Object.entries( - historicalData[aSymbol] + historicalData[symbol] )) { historicalDataArray.push({ date, @@ -997,7 +1051,7 @@ export class PortfolioService { grossPerformancePercentWithCurrencyEffect: undefined, grossPerformanceWithCurrencyEffect: undefined, historicalData: historicalDataArray, - investment: 0, + investmentInBaseCurrencyWithCurrencyEffect: 0, netPerformance: undefined, netPerformancePercent: undefined, netPerformancePercentWithCurrencyEffect: undefined, @@ -1016,155 +1070,6 @@ export class PortfolioService { } } - public async getHoldings({ - dateRange = 'max', - filters, - impersonationId - }: { - dateRange?: DateRange; - filters?: Filter[]; - impersonationId: string; - }): Promise<{ hasErrors: boolean; positions: Position[] }> { - const searchQuery = filters.find(({ type }) => { - return type === 'SEARCH_QUERY'; - })?.id; - const userId = await this.getUserId(impersonationId, this.request.user.id); - const user = await this.userService.user({ id: userId }); - const userCurrency = this.getUserCurrency(user); - - const { activities } = - await this.orderService.getOrdersForPortfolioCalculator({ - filters, - userCurrency, - userId - }); - - if (activities.length === 0) { - return { - hasErrors: false, - positions: [] - }; - } - - const portfolioCalculator = this.calculatorFactory.createCalculator({ - activities, - filters, - userId, - calculationType: this.getUserPerformanceCalculationType(user), - currency: userCurrency - }); - - const portfolioSnapshot = await portfolioCalculator.getSnapshot(); - const hasErrors = portfolioSnapshot.hasErrors; - let positions = portfolioSnapshot.positions; - - positions = positions.filter(({ quantity }) => { - return !quantity.eq(0); - }); - - const assetProfileIdentifiers = positions.map(({ dataSource, symbol }) => { - return { - dataSource, - symbol - }; - }); - - const [dataProviderResponses, symbolProfiles] = await Promise.all([ - this.dataProviderService.getQuotes({ - user, - items: assetProfileIdentifiers - }), - this.symbolProfileService.getSymbolProfiles( - positions.map(({ dataSource, symbol }) => { - return { dataSource, symbol }; - }) - ) - ]); - - const symbolProfileMap: { [symbol: string]: EnhancedSymbolProfile } = {}; - - for (const symbolProfile of symbolProfiles) { - symbolProfileMap[symbolProfile.symbol] = symbolProfile; - } - - if (searchQuery) { - positions = positions.filter(({ symbol }) => { - const enhancedSymbolProfile = symbolProfileMap[symbol]; - - return ( - enhancedSymbolProfile.isin?.toLowerCase().startsWith(searchQuery) || - enhancedSymbolProfile.name?.toLowerCase().startsWith(searchQuery) || - enhancedSymbolProfile.symbol?.toLowerCase().startsWith(searchQuery) - ); - }); - } - - return { - hasErrors, - positions: positions.map( - ({ - averagePrice, - currency, - dataSource, - firstBuyDate, - grossPerformance, - grossPerformancePercentage, - grossPerformancePercentageWithCurrencyEffect, - grossPerformanceWithCurrencyEffect, - investment, - investmentWithCurrencyEffect, - netPerformance, - netPerformancePercentage, - netPerformancePercentageWithCurrencyEffectMap, - netPerformanceWithCurrencyEffectMap, - quantity, - symbol, - timeWeightedInvestment, - timeWeightedInvestmentWithCurrencyEffect, - transactionCount - }) => { - return { - currency, - dataSource, - firstBuyDate, - symbol, - transactionCount, - assetClass: symbolProfileMap[symbol].assetClass, - assetSubClass: symbolProfileMap[symbol].assetSubClass, - averagePrice: averagePrice.toNumber(), - grossPerformance: grossPerformance?.toNumber() ?? null, - grossPerformancePercentage: - grossPerformancePercentage?.toNumber() ?? null, - grossPerformancePercentageWithCurrencyEffect: - grossPerformancePercentageWithCurrencyEffect?.toNumber() ?? null, - grossPerformanceWithCurrencyEffect: - grossPerformanceWithCurrencyEffect?.toNumber() ?? null, - investment: investment.toNumber(), - investmentWithCurrencyEffect: - investmentWithCurrencyEffect?.toNumber(), - marketState: - dataProviderResponses[symbol]?.marketState ?? 'delayed', - name: symbolProfileMap[symbol].name, - netPerformance: netPerformance?.toNumber() ?? null, - netPerformancePercentage: - netPerformancePercentage?.toNumber() ?? null, - netPerformancePercentageWithCurrencyEffect: - netPerformancePercentageWithCurrencyEffectMap?.[ - dateRange - ]?.toNumber() ?? null, - netPerformanceWithCurrencyEffect: - netPerformanceWithCurrencyEffectMap?.[dateRange]?.toNumber() ?? - null, - quantity: quantity.toNumber(), - timeWeightedInvestment: timeWeightedInvestment?.toNumber(), - timeWeightedInvestmentWithCurrencyEffect: - timeWeightedInvestmentWithCurrencyEffect?.toNumber() - }; - } - ) - }; - } - public async getPerformance({ dateRange = 'max', filters, @@ -1266,10 +1171,14 @@ export class PortfolioService { }; } - public async getReport( - impersonationId: string - ): Promise { - const userId = await this.getUserId(impersonationId, this.request.user.id); + public async getReport({ + impersonationId, + userId + }: { + impersonationId: string; + userId: string; + }): Promise { + userId = await this.getUserId(impersonationId, userId); const userSettings = this.request.user.Settings.settings as UserSettings; const { accounts, holdings, markets, marketsAdvanced, summary } = @@ -1294,15 +1203,19 @@ export class PortfolioService { const rules: PortfolioReportResponse['rules'] = { accountClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new AccountClusterRiskCurrentInvestment( this.exchangeRateDataService, + this.i18nService, + userSettings.language, accounts ), new AccountClusterRiskSingleAccount( this.exchangeRateDataService, + this.i18nService, + userSettings.language, accounts ) ], @@ -1310,15 +1223,19 @@ export class PortfolioService { ) : undefined, assetClassClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new AssetClassClusterRiskEquity( this.exchangeRateDataService, + this.i18nService, + userSettings.language, Object.values(holdings) ), new AssetClassClusterRiskFixedIncome( this.exchangeRateDataService, + this.i18nService, + userSettings.language, Object.values(holdings) ) ], @@ -1326,23 +1243,27 @@ export class PortfolioService { ) : undefined, currencyClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new CurrencyClusterRiskBaseCurrencyCurrentInvestment( this.exchangeRateDataService, - Object.values(holdings) + this.i18nService, + Object.values(holdings), + userSettings.language ), new CurrencyClusterRiskCurrentInvestment( this.exchangeRateDataService, - Object.values(holdings) + this.i18nService, + Object.values(holdings), + userSettings.language ) ], userSettings ) : undefined, economicMarketClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new EconomicMarketClusterRiskDevelopedMarkets( @@ -1363,6 +1284,8 @@ export class PortfolioService { [ new EmergencyFundSetup( this.exchangeRateDataService, + this.i18nService, + userSettings.language, this.getTotalEmergencyFund({ userSettings, emergencyFundHoldingsValueInBaseCurrency: @@ -1376,6 +1299,8 @@ export class PortfolioService { [ new FeeRatioInitialInvestment( this.exchangeRateDataService, + this.i18nService, + userSettings.language, summary.committedFunds, summary.fees ) @@ -1383,7 +1308,7 @@ export class PortfolioService { userSettings ), regionalMarketClusterRisk: - summary.ordersCount > 0 + summary.activityCount > 0 ? await this.rulesService.evaluate( [ new RegionalMarketClusterRiskAsiaPacific( @@ -1577,7 +1502,7 @@ export class PortfolioService { return { markets, marketsAdvanced }; } - private async getCashPositions({ + private getCashPositions({ cashDetails, userCurrency, value @@ -1699,7 +1624,7 @@ export class PortfolioService { const emergencyFundHoldings = Object.values(holdings).filter(({ tags }) => { return ( tags?.some(({ id }) => { - return id === EMERGENCY_FUND_TAG_ID; + return id === TAG_ID_EMERGENCY_FUND; }) ?? false ); }); @@ -1906,7 +1831,7 @@ export class PortfolioService { const nonExcludedActivities: Activity[] = []; for (const activity of activities) { - if (activity.Account?.isExcluded) { + if (activity.account?.isExcluded) { excludedActivities.push(activity); } else { nonExcludedActivities.push(activity); @@ -1945,8 +1870,6 @@ export class PortfolioService { const liabilities = await portfolioCalculator.getLiabilitiesInBaseCurrency(); - const valuables = await portfolioCalculator.getValuablesInBaseCurrency(); - const totalBuy = this.getSumOfActivityType({ userCurrency, activities: nonExcludedActivities, @@ -1995,7 +1918,6 @@ export class PortfolioService { const netWorth = new Big(balanceInBaseCurrency) .plus(currentValueInBaseCurrency) - .plus(valuables) .plus(excludedAccountsAndActivities) .minus(liabilities) .toNumber(); @@ -2026,6 +1948,9 @@ export class PortfolioService { netPerformanceWithCurrencyEffect, totalBuy, totalSell, + activityCount: activities.filter(({ type }) => { + return ['BUY', 'SELL'].includes(type); + }).length, committedFunds: committedFunds.toNumber(), currentValueInBaseCurrency: currentValueInBaseCurrency.toNumber(), dividendInBaseCurrency: dividendInBaseCurrency.toNumber(), @@ -2051,11 +1976,7 @@ export class PortfolioService { .plus(fees) .toNumber(), interest: interest.toNumber(), - items: valuables.toNumber(), liabilities: liabilities.toNumber(), - ordersCount: activities.filter(({ type }) => { - return ['BUY', 'SELL'].includes(type); - }).length, totalInvestment: totalInvestment.toNumber(), totalValueInBaseCurrency: netWorth }; @@ -2143,14 +2064,14 @@ export class PortfolioService { let currentAccounts: (Account & { Order?: Order[]; - Platform?: Platform; + platform?: Platform; })[] = []; if (filters.length === 0) { currentAccounts = await this.accountService.getAccounts(userId); } else if (filters.length === 1 && filters[0].type === 'ACCOUNT') { currentAccounts = await this.accountService.accounts({ - include: { Platform: true }, + include: { platform: true }, where: { id: filters[0].id } }); } else { @@ -2167,7 +2088,7 @@ export class PortfolioService { ); currentAccounts = await this.accountService.accounts({ - include: { Platform: true }, + include: { platform: true }, where: { id: { in: accountIds } } }); } @@ -2192,18 +2113,18 @@ export class PortfolioService { ) }; - if (platforms[account.Platform?.id || UNKNOWN_KEY]?.valueInBaseCurrency) { - platforms[account.Platform?.id || UNKNOWN_KEY].valueInBaseCurrency += + if (platforms[account.platformId || UNKNOWN_KEY]?.valueInBaseCurrency) { + platforms[account.platformId || UNKNOWN_KEY].valueInBaseCurrency += this.exchangeRateDataService.toCurrency( account.balance, account.currency, userCurrency ); } else { - platforms[account.Platform?.id || UNKNOWN_KEY] = { + platforms[account.platformId || UNKNOWN_KEY] = { balance: account.balance, currency: account.currency, - name: account.Platform?.name, + name: account.platform?.name, valueInBaseCurrency: this.exchangeRateDataService.toCurrency( account.balance, account.currency, @@ -2213,7 +2134,7 @@ export class PortfolioService { } for (const { - Account, + account, quantity, SymbolProfile, type @@ -2224,28 +2145,28 @@ export class PortfolioService { (portfolioItemsNow[SymbolProfile.symbol]?.marketPriceInBaseCurrency ?? 0); - if (accounts[Account?.id || UNKNOWN_KEY]?.valueInBaseCurrency) { - accounts[Account?.id || UNKNOWN_KEY].valueInBaseCurrency += + if (accounts[account?.id || UNKNOWN_KEY]?.valueInBaseCurrency) { + accounts[account?.id || UNKNOWN_KEY].valueInBaseCurrency += currentValueOfSymbolInBaseCurrency; } else { - accounts[Account?.id || UNKNOWN_KEY] = { + accounts[account?.id || UNKNOWN_KEY] = { balance: 0, - currency: Account?.currency, + currency: account?.currency, name: account.name, valueInBaseCurrency: currentValueOfSymbolInBaseCurrency }; } if ( - platforms[Account?.Platform?.id || UNKNOWN_KEY]?.valueInBaseCurrency + platforms[account?.platformId || UNKNOWN_KEY]?.valueInBaseCurrency ) { - platforms[Account?.Platform?.id || UNKNOWN_KEY].valueInBaseCurrency += + platforms[account?.platformId || UNKNOWN_KEY].valueInBaseCurrency += currentValueOfSymbolInBaseCurrency; } else { - platforms[Account?.Platform?.id || UNKNOWN_KEY] = { + platforms[account?.platformId || UNKNOWN_KEY] = { balance: 0, - currency: Account?.currency, - name: account.Platform?.name, + currency: account?.currency, + name: account.platform?.name, valueInBaseCurrency: currentValueOfSymbolInBaseCurrency }; } diff --git a/apps/api/src/app/redis-cache/redis-cache.service.ts b/apps/api/src/app/redis-cache/redis-cache.service.ts index 97d71ae61..621199cc9 100644 --- a/apps/api/src/app/redis-cache/redis-cache.service.ts +++ b/apps/api/src/app/redis-cache/redis-cache.service.ts @@ -5,17 +5,28 @@ import { AssetProfileIdentifier, Filter } from '@ghostfolio/common/interfaces'; import { CACHE_MANAGER, Cache } from '@nestjs/cache-manager'; import { Inject, Injectable, Logger } from '@nestjs/common'; import { createHash } from 'crypto'; +import Keyv from 'keyv'; import ms from 'ms'; @Injectable() export class RedisCacheService { + private client: Keyv; + public constructor( @Inject(CACHE_MANAGER) private readonly cache: Cache, private readonly configurationService: ConfigurationService ) { - const client = cache.stores[0]; + this.client = cache.stores[0]; + + this.client.deserialize = (value) => { + try { + return JSON.parse(value); + } catch {} - client.on('error', (error) => { + return value; + }; + + this.client.on('error', (error) => { Logger.error(error, 'RedisCacheService'); }); } @@ -28,28 +39,13 @@ export class RedisCacheService { const keys: string[] = []; const prefix = aPrefix; - this.cache.stores[0].deserialize = (value) => { - try { - return JSON.parse(value); - } catch (error: any) { - if (error instanceof SyntaxError) { - Logger.debug( - `Failed to parse json, returning the value as String: ${value}`, - 'RedisCacheService' - ); - - return value; - } else { - throw error; + try { + for await (const [key] of this.client.iterator({})) { + if ((prefix && key.startsWith(prefix)) || !prefix) { + keys.push(key); } } - }; - - for await (const [key] of this.cache.stores[0].iterator({})) { - if ((prefix && key.startsWith(prefix)) || !prefix) { - keys.push(key); - } - } + } catch {} return keys; } @@ -79,20 +75,36 @@ export class RedisCacheService { } public async isHealthy() { + const testKey = '__health_check__'; + const testValue = Date.now().toString(); + try { - const isHealthy = await Promise.race([ - this.getKeys(), + await Promise.race([ + (async () => { + await this.set(testKey, testValue, ms('1 second')); + const result = await this.get(testKey); + + if (result !== testValue) { + throw new Error('Redis health check failed: value mismatch'); + } + })(), new Promise((_, reject) => setTimeout( - () => reject(new Error('Redis health check timeout')), + () => reject(new Error('Redis health check failed: timeout')), ms('2 seconds') ) ) ]); - return isHealthy === 'PONG'; + return true; } catch (error) { + Logger.error(error?.message, 'RedisCacheService'); + return false; + } finally { + try { + await this.remove(testKey); + } catch {} } } diff --git a/apps/api/src/app/sitemap/sitemap.controller.ts b/apps/api/src/app/sitemap/sitemap.controller.ts deleted file mode 100644 index aad5e39a1..000000000 --- a/apps/api/src/app/sitemap/sitemap.controller.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; -import { - DATE_FORMAT, - getYesterday, - interpolate -} from '@ghostfolio/common/helper'; -import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; - -import { Controller, Get, Res, VERSION_NEUTRAL, Version } from '@nestjs/common'; -import { format } from 'date-fns'; -import { Response } from 'express'; -import { readFileSync } from 'fs'; -import { join } from 'path'; - -@Controller('sitemap.xml') -export class SitemapController { - public sitemapXml = ''; - - public constructor( - private readonly configurationService: ConfigurationService - ) { - try { - this.sitemapXml = readFileSync( - join(__dirname, 'assets', 'sitemap.xml'), - 'utf8' - ); - } catch {} - } - - @Get() - @Version(VERSION_NEUTRAL) - public async getSitemapXml(@Res() response: Response): Promise { - const currentDate = format(getYesterday(), DATE_FORMAT); - - response.setHeader('content-type', 'application/xml'); - response.send( - interpolate(this.sitemapXml, { - currentDate, - personalFinanceTools: this.configurationService.get( - 'ENABLE_FEATURE_SUBSCRIPTION' - ) - ? personalFinanceTools - .map(({ alias, key }) => { - return [ - '', - ` https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-${alias ?? key}`, - ` ${currentDate}T00:00:00+00:00`, - '', - '', - ` https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-${alias ?? key}`, - ` ${currentDate}T00:00:00+00:00`, - '', - '', - ` https://ghostfol.io/es/recursos/personal-finance-tools/alternativa-de-software-libre-a-${alias ?? key}`, - ` ${currentDate}T00:00:00+00:00`, - '', - '', - ` https://ghostfol.io/fr/ressources/personal-finance-tools/alternative-open-source-a-${alias ?? key}`, - ` ${currentDate}T00:00:00+00:00`, - '', - '', - ` https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-${alias ?? key}`, - ` ${currentDate}T00:00:00+00:00`, - '', - '', - ` https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-${alias ?? key}`, - ` ${currentDate}T00:00:00+00:00`, - '', - '', - ` https://ghostfol.io/pt/recursos/personal-finance-tools/alternativa-de-software-livre-ao-${alias ?? key}`, - ` ${currentDate}T00:00:00+00:00`, - '' - ].join('\n'); - }) - .join('\n') - : '' - }) - ); - } -} diff --git a/apps/api/src/app/subscription/subscription.controller.ts b/apps/api/src/app/subscription/subscription.controller.ts index f37543fdf..244a6b806 100644 --- a/apps/api/src/app/subscription/subscription.controller.ts +++ b/apps/api/src/app/subscription/subscription.controller.ts @@ -49,8 +49,7 @@ export class SubscriptionController { } let coupons = - ((await this.propertyService.getByKey(PROPERTY_COUPONS)) as Coupon[]) ?? - []; + (await this.propertyService.getByKey(PROPERTY_COUPONS)) ?? []; const coupon = coupons.find((currentCoupon) => { return currentCoupon.code === couponCode; diff --git a/apps/api/src/app/subscription/subscription.service.ts b/apps/api/src/app/subscription/subscription.service.ts index 063c40608..679d4590d 100644 --- a/apps/api/src/app/subscription/subscription.service.ts +++ b/apps/api/src/app/subscription/subscription.service.ts @@ -32,7 +32,7 @@ export class SubscriptionService { this.stripe = new Stripe( this.configurationService.get('STRIPE_SECRET_KEY'), { - apiVersion: '2024-09-30.acacia' + apiVersion: '2025-05-28.basil' } ); } @@ -50,8 +50,7 @@ export class SubscriptionService { const subscriptionOffers: { [offer in SubscriptionOfferKey]: SubscriptionOffer; } = - ((await this.propertyService.getByKey(PROPERTY_STRIPE_CONFIG)) as any) ?? - {}; + (await this.propertyService.getByKey(PROPERTY_STRIPE_CONFIG)) ?? {}; const subscriptionOffer = Object.values(subscriptionOffers).find( (subscriptionOffer) => { @@ -61,7 +60,7 @@ export class SubscriptionService { const checkoutSessionCreateParams: Stripe.Checkout.SessionCreateParams = { cancel_url: `${this.configurationService.get('ROOT_URL')}/${ - user.Settings?.settings?.language ?? DEFAULT_LANGUAGE_CODE + user.Settings.settings.language }/account`, client_reference_id: user.id, line_items: [ @@ -213,8 +212,7 @@ export class SubscriptionService { const offers: { [offer in SubscriptionOfferKey]: SubscriptionOffer; } = - ((await this.propertyService.getByKey(PROPERTY_STRIPE_CONFIG)) as any) ?? - {}; + (await this.propertyService.getByKey(PROPERTY_STRIPE_CONFIG)) ?? {}; return { ...offers[key], diff --git a/apps/api/src/app/user/update-own-access-token.dto.ts b/apps/api/src/app/user/update-own-access-token.dto.ts new file mode 100644 index 000000000..42f6f7289 --- /dev/null +++ b/apps/api/src/app/user/update-own-access-token.dto.ts @@ -0,0 +1,6 @@ +import { IsString } from 'class-validator'; + +export class UpdateOwnAccessTokenDto { + @IsString() + accessToken: string; +} diff --git a/apps/api/src/app/user/user.controller.ts b/apps/api/src/app/user/user.controller.ts index 868af505b..7190060ff 100644 --- a/apps/api/src/app/user/user.controller.ts +++ b/apps/api/src/app/user/user.controller.ts @@ -33,6 +33,7 @@ import { merge, size } from 'lodash'; import { DeleteOwnUserDto } from './delete-own-user.dto'; import { UserItem } from './interfaces/user-item.interface'; +import { UpdateOwnAccessTokenDto } from './update-own-access-token.dto'; import { UpdateUserSettingDto } from './update-user-setting.dto'; import { UserService } from './user.service'; @@ -53,24 +54,12 @@ export class UserController { public async deleteOwnUser( @Body() data: DeleteOwnUserDto ): Promise { - const hashedAccessToken = this.userService.createAccessToken({ - password: data.accessToken, - salt: this.configurationService.get('ACCESS_TOKEN_SALT') - }); - - const [user] = await this.userService.users({ - where: { accessToken: hashedAccessToken, id: this.request.user.id } - }); - - if (!user) { - throw new HttpException( - getReasonPhrase(StatusCodes.FORBIDDEN), - StatusCodes.FORBIDDEN - ); - } + const user = await this.validateAccessToken( + data.accessToken, + this.request.user.id + ); return this.userService.deleteUser({ - accessToken: hashedAccessToken, id: user.id }); } @@ -94,20 +83,24 @@ export class UserController { @HasPermission(permissions.accessAdminControl) @Post(':id/access-token') @UseGuards(AuthGuard('jwt'), HasPermissionGuard) - public async generateAccessToken( + public async updateUserAccessToken( @Param('id') id: string ): Promise { - const { accessToken, hashedAccessToken } = - this.userService.generateAccessToken({ - userId: id - }); + return this.rotateUserAccessToken(id); + } - await this.prismaService.user.update({ - data: { accessToken: hashedAccessToken }, - where: { id } - }); + @HasPermission(permissions.updateOwnAccessToken) + @Post('access-token') + @UseGuards(AuthGuard('jwt'), HasPermissionGuard) + public async updateOwnAccessToken( + @Body() data: UpdateOwnAccessTokenDto + ): Promise { + const user = await this.validateAccessToken( + data.accessToken, + this.request.user.id + ); - return { accessToken }; + return this.rotateUserAccessToken(user.id); } @Get() @@ -189,4 +182,43 @@ export class UserController { userId: this.request.user.id }); } + + private async rotateUserAccessToken( + userId: string + ): Promise { + const { accessToken, hashedAccessToken } = + this.userService.generateAccessToken({ + userId + }); + + await this.prismaService.user.update({ + data: { accessToken: hashedAccessToken }, + where: { id: userId } + }); + + return { accessToken }; + } + + private async validateAccessToken( + accessToken: string, + userId: string + ): Promise { + const hashedAccessToken = this.userService.createAccessToken({ + password: accessToken, + salt: this.configurationService.get('ACCESS_TOKEN_SALT') + }); + + const [user] = await this.userService.users({ + where: { accessToken: hashedAccessToken, id: userId } + }); + + if (!user) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + return user; + } } diff --git a/apps/api/src/app/user/user.module.ts b/apps/api/src/app/user/user.module.ts index 063cfef82..8a21b0a55 100644 --- a/apps/api/src/app/user/user.module.ts +++ b/apps/api/src/app/user/user.module.ts @@ -1,6 +1,7 @@ import { OrderModule } from '@ghostfolio/api/app/order/order.module'; import { SubscriptionModule } from '@ghostfolio/api/app/subscription/subscription.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; +import { I18nModule } from '@ghostfolio/api/services/i18n/i18n.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; import { TagModule } from '@ghostfolio/api/services/tag/tag.module'; @@ -16,6 +17,7 @@ import { UserService } from './user.service'; exports: [UserService], imports: [ ConfigurationModule, + I18nModule, JwtModule.register({ secret: process.env.JWT_SECRET_KEY, signOptions: { expiresIn: '30 days' } diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 87c82fa0b..1652a2b91 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -52,11 +52,10 @@ import { sortBy, without } from 'lodash'; @Injectable() export class UserService { - private i18nService = new I18nService(); - public constructor( private readonly configurationService: ConfigurationService, private readonly eventEmitter: EventEmitter2, + private readonly i18nService: I18nService, private readonly orderService: OrderService, private readonly prismaService: PrismaService, private readonly propertyService: PropertyService, @@ -96,16 +95,16 @@ export class UserService { } public async getUser( - { Account, id, permissions, Settings, subscription }: UserWithSettings, + { accounts, id, permissions, Settings, subscription }: UserWithSettings, aLocale = locale ): Promise { const userData = await Promise.all([ this.prismaService.access.findMany({ include: { - User: true + user: true }, orderBy: { alias: 'asc' }, - where: { GranteeUser: { id } } + where: { granteeUserId: id } }), this.prismaService.order.count({ where: { userId: id } @@ -126,9 +125,10 @@ export class UserService { let systemMessage: SystemMessage; - const systemMessageProperty = (await this.propertyService.getByKey( - PROPERTY_SYSTEM_MESSAGE - )) as SystemMessage; + const systemMessageProperty = + await this.propertyService.getByKey( + PROPERTY_SYSTEM_MESSAGE + ); if (systemMessageProperty?.targetGroups?.includes(subscription?.type)) { systemMessage = systemMessageProperty; @@ -142,6 +142,7 @@ export class UserService { } return { + accounts, activitiesCount, id, permissions, @@ -155,7 +156,6 @@ export class UserService { permissions: accessItem.permissions }; }), - accounts: Account, dateOfFirstActivity: firstActivity?.date ?? new Date(), settings: { ...(Settings.settings as UserSettings), @@ -180,10 +180,10 @@ export class UserService { userWhereUniqueInput: Prisma.UserWhereUniqueInput ): Promise { const { - Access, + accessesGet, accessToken, - Account, - Analytics, + accounts, + analytics, authChallenge, createdAt, id, @@ -195,11 +195,11 @@ export class UserService { updatedAt } = await this.prismaService.user.findUnique({ include: { - Access: true, - Account: { - include: { Platform: true } + accessesGet: true, + accounts: { + include: { platform: true } }, - Analytics: true, + analytics: true, Settings: true, subscriptions: true }, @@ -207,9 +207,9 @@ export class UserService { }); const user: UserWithSettings = { - Access, + accessesGet, accessToken, - Account, + accounts, authChallenge, createdAt, id, @@ -218,9 +218,9 @@ export class UserService { Settings: Settings as UserWithSettings['Settings'], thirdPartyId, updatedAt, - activityCount: Analytics?.activityCount, + activityCount: analytics?.activityCount, dataProviderGhostfolioDailyRequests: - Analytics?.dataProviderGhostfolioDailyRequests + analytics?.dataProviderGhostfolioDailyRequests }; if (user?.Settings) { @@ -260,28 +260,41 @@ export class UserService { (user.Settings.settings as UserSettings).xRayRules = { AccountClusterRiskCurrentInvestment: - new AccountClusterRiskCurrentInvestment(undefined, {}).getSettings( - user.Settings.settings - ), + new AccountClusterRiskCurrentInvestment( + undefined, + undefined, + undefined, + {} + ).getSettings(user.Settings.settings), AccountClusterRiskSingleAccount: new AccountClusterRiskSingleAccount( + undefined, + undefined, undefined, {} ).getSettings(user.Settings.settings), AssetClassClusterRiskEquity: new AssetClassClusterRiskEquity( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), AssetClassClusterRiskFixedIncome: new AssetClassClusterRiskFixedIncome( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), CurrencyClusterRiskBaseCurrencyCurrentInvestment: new CurrencyClusterRiskBaseCurrencyCurrentInvestment( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), CurrencyClusterRiskCurrentInvestment: new CurrencyClusterRiskCurrentInvestment( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), @@ -298,10 +311,14 @@ export class UserService { undefined ).getSettings(user.Settings.settings), EmergencyFundSetup: new EmergencyFundSetup( + undefined, + undefined, undefined, undefined ).getSettings(user.Settings.settings), FeeRatioInitialInvestment: new FeeRatioInitialInvestment( + undefined, + undefined, undefined, undefined, undefined @@ -338,6 +355,11 @@ export class UserService { let currentPermissions = getPermissions(user.role); + if (user.provider === 'ANONYMOUS') { + currentPermissions.push(permissions.deleteOwnUser); + currentPermissions.push(permissions.updateOwnAccessToken); + } + if (!(user.Settings.settings as UserSettings).isExperimentalFeatures) { // currentPermissions = without( // currentPermissions, @@ -372,7 +394,7 @@ export class UserService { frequency = 6; } - if (Analytics?.activityCount % frequency === 1) { + if (analytics?.activityCount % frequency === 1) { currentPermissions.push(permissions.enableSubscriptionInterstitial); } @@ -397,6 +419,7 @@ export class UserService { if (!hasRole(user, Role.DEMO)) { currentPermissions.push(permissions.createApiKey); currentPermissions.push(permissions.enableDataProviderGhostfolio); + currentPermissions.push(permissions.readMarketDataOfMarkets); currentPermissions.push(permissions.reportDataGlitch); } @@ -411,6 +434,10 @@ export class UserService { user.subscription.offer.durationExtension = undefined; user.subscription.offer.label = undefined; } + + if (hasRole(user, Role.ADMIN)) { + currentPermissions.push(permissions.syncDemoUserAccount); + } } if (this.configurationService.get('ENABLE_FEATURE_READ_ONLY_MODE')) { @@ -418,9 +445,9 @@ export class UserService { currentPermissions.push(permissions.toggleReadOnlyMode); } - const isReadOnlyMode = (await this.propertyService.getByKey( + const isReadOnlyMode = await this.propertyService.getByKey( PROPERTY_IS_READ_ONLY_MODE - )) as boolean; + ); if (isReadOnlyMode) { currentPermissions = currentPermissions.filter((permission) => { @@ -433,11 +460,11 @@ export class UserService { } } - if (!environment.production && role === 'ADMIN') { + if (!environment.production && hasRole(user, Role.ADMIN)) { currentPermissions.push(permissions.impersonateAllUsers); } - user.Account = sortBy(user.Account, ({ name }) => { + user.accounts = sortBy(user.accounts, ({ name }) => { return name.toLowerCase(); }); user.permissions = currentPermissions.sort(); @@ -474,7 +501,7 @@ export class UserService { const user = await this.prismaService.user.create({ data: { ...data, - Account: { + accounts: { create: { currency: DEFAULT_CURRENCY, name: this.i18nService.getTranslation({ @@ -496,7 +523,7 @@ export class UserService { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { await this.prismaService.analytics.create({ data: { - User: { connect: { id: user.id } } + user: { connect: { id: user.id } } } }); } @@ -591,7 +618,7 @@ export class UserService { const { settings } = await this.prismaService.settings.upsert({ create: { settings: userSettings as unknown as Prisma.JsonObject, - User: { + user: { connect: { id: userId } diff --git a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json index 475cc6217..4c591365d 100644 --- a/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json +++ b/apps/api/src/assets/cryptocurrencies/cryptocurrencies.json @@ -1,4 +1,5 @@ { + "1": "just buy $1 worth of this coin", "3": "The Three Musketeers", "7": "Lucky7", "32": "Project 32", @@ -64,8 +65,10 @@ "1MIL": "1MillionNFTs", "1MT": "1Move", "1NFT": "1NFT", + "1ON8": "Little Dragon", "1OZT": "Tala", "1PECO": "1peco", + "1R0R": "R0AR TOKEN", "1SG": "1SG", "1SOL": "1Sol", "1ST": "FirstBlood", @@ -73,6 +76,7 @@ "1UP": "Uptrennd", "1WO": "1World", "2022M": "2022MOON", + "20EX": "20ex", "21BTC": "21.co Wrapped BTC", "21X": "21X", "2BACCO": "2BACCO Coin", @@ -114,6 +118,7 @@ "4CHAN": "4Chan", "4CZ": "FourCZ", "4DOGE": "4DOGE", + "4EVER": "4EVERLAND", "4JNET": "4JNET", "4MW": "For Meta World", "4P": "4P FOUR", @@ -138,7 +143,7 @@ "9DOGS": "NINE DOGS", "9GAG": "9GAG", "9MM": "Shigure UI", - "A": "Alpha Token", + "A": "Vaulta", "A1INCH": "1inch (Arbitrum Bridge)", "A2A": "A2A", "A2I": "Arcana AI", @@ -147,6 +152,7 @@ "A4M": "AlienForm", "A51": "A51 Finance", "A5T": "Alpha5", + "A7A5": "A7A5", "A8": "Ancient8", "AA": "Alva", "AAA": "Moon Rabbit", @@ -168,6 +174,7 @@ "AAVEGOTCHIFOMO": "Aavegotchi FOMO", "AAX": "Academic Labs", "AAZ": "ATLAZ", + "AB": "Newton", "AB1INCH": "1inch (Avalanche Bride)", "ABA": "EcoBall", "ABBC": "ABBC Coin", @@ -200,6 +207,7 @@ "ABUSDC": "USD Coin (Arbitrum Bridge)", "ABX": "Arbidex", "ABY": "ArtByte", + "ABYS": "Trinity Of The Fabled", "ABYSS": "Abyss Finance", "AC": "Asia Coin", "AC3": "AC3", @@ -228,7 +236,7 @@ "ACN": "AvonCoin", "ACOIN": "ACoin", "ACOLYT": "Acolyte by Virtuals", - "ACP": "Anarchists Prime", + "ACP": "Arena Of Faith", "ACPT": "Crypto Accept", "ACQ": "Acquire.Fi", "ACRE": "Arable Protocol", @@ -306,6 +314,7 @@ "AERO": "Aerodrome Finance", "AEROBUD": "Aerobud", "AEROCOIN": "Aero Coin", + "AEROME": "AeroMe", "AEROT": "AEROTYME", "AES": "Artis Aes Evolution", "AET": "AfterEther", @@ -313,6 +322,8 @@ "AETHC": "Ankr Reward-Bearing Staked ETH", "AETHERV2": "AetherV2", "AETHRA": "Aethra AI", + "AETHUSDT": "Aave Ethereum USDT", + "AETHWETH": "Aave Ethereum WETH", "AEUR": "Anchored Coins AEUR", "AEVO": "Aevo", "AEVUM": "Aevum", @@ -338,8 +349,9 @@ "AFYON": "Afyonspor Fan Token", "AG": "AGAME", "AG8": "ATROMG8", - "AGA": "AGA Token", + "AGA": "Agora DEX Token", "AGATA": "Agatech", + "AGATOKEN": "AGA Token", "AGB": "Apes Go Bananas", "AGC": "Argocoin", "AGEN": "Agent Krasnov", @@ -357,6 +369,7 @@ "AGIV1": "SingularityNET v1", "AGIX": "SingularityNET", "AGIXBT": "AGIXBT by Virtuals", + "AGIXT": "AGiXT", "AGLA": "Angola", "AGLD": "Adventure Gold", "AGM": "Argoneum", @@ -366,6 +379,7 @@ "AGON": "Arabian Dragon", "AGOV": "Answer Governance", "AGPC": "AGPC", + "AGRI": "AgriDex Token", "AGRO": "Bit Agro", "AGRS": "Agoras Token", "AGS": "Aegis", @@ -378,12 +392,13 @@ "AHOO": "Ahoolee", "AHT": "AhaToken", "AI": "Sleepless", - "AI16Z": "ai16z", + "AI16Z": "ElizaOS", "AI21X": "ai21x", "AI23T": "23 Turtles", "AI69SAKURA": "Sakura", "AIA": "AIA Chain", - "AIAGENT": "Aiagent.app", + "AIAGENT": "AI Agents", + "AIAGENTAPP": "Aiagent.app", "AIAI": "All In AI", "AIAKITA": "AiAkita", "AIAT": "AI Analysis Token", @@ -419,6 +434,7 @@ "AIFLOKI": "AI Floki", "AIFUN": "AI Agent Layer", "AIG": "A.I Genesis", + "AIGA": "Aigang", "AIGPU": "AIGPU Token", "AII": "Artificial Idiot", "AIINU": "AI INU", @@ -433,8 +449,9 @@ "AIMONICA": "Aimonica Brands", "AIMR": "MeromAI", "AIMS": "HighCastle Token", - "AIMX": "Aimedis", + "AIMX": "MindMatrix", "AIMXV1": "Aimedis v1", + "AIMXV2": "Aimedis", "AIN": "AI Network", "AINA": "Ainastasia", "AINN": "AINN", @@ -452,11 +469,13 @@ "AIPG": "AI Power Grid", "AIPIN": "AI PIN", "AIPO": "Aipocalypto", + "AIPUMP": "aiPump", "AIR": "Altair", "AIRB": "BillionAir", "AIRBTC": "AIRBTC", "AIRDROP": "AIRDROP2049", "AIRE": "Tokenaire", + "AIRENA": "AI AGENT ARENA", "AIRENE": "AIRENE by Virtuals", "AIREVOLUTION": "AI Revolution Coin", "AIRI": "aiRight", @@ -465,10 +484,11 @@ "AIRTNT": "Tenti", "AIRTOKEN": "AirToken", "AIRX": "Aircoins", - "AIS": "AISwap", + "AIS": "AISociety", "AISCII": "AISCII", "AISHIB": "ARBSHIB", "AIST": "Artificial intelligence staking token", + "AISW": "AISwap", "AIT": "AIT Protocol", "AITECH": "Artificial Intelligence Utility Token", "AITEK": "AI Technology", @@ -486,7 +506,8 @@ "AIVIA": "AI Virtual Agents", "AIWALLET": "AiWallet Token", "AIWS": "AIWS", - "AIX": "Aigang", + "AIX": "ALIENX", + "AIX9": "AthenaX9", "AIXBT": "aixbt by Virtuals", "AIXERC": "AI-X", "AIXT": "AIXTerminal", @@ -497,6 +518,7 @@ "AKAL": "AKA Liberty", "AKASHA": "Akasha by Bloomverse", "AKI": "Aki Network", + "AKIO": "Akio", "AKIT": "Akita Inu", "AKITA": "Akita Inu", "AKITAI": "AKITA INU", @@ -509,6 +531,7 @@ "AKT": "Akash Network", "AKTIO": "AKTIO Coin", "AKUMA": "Akuma Inu", + "AKV": "Akiverse Governance", "AL": "ArchLoot", "ALA": "Alanyaspor Fan Token", "ALAN": "Alan the Alien", @@ -558,6 +581,7 @@ "ALIS": "ALISmedia", "ALIT": "Alitas", "ALITA": "Alita Network", + "ALITATOKEN": "Alita Token", "ALIX": "AlinX", "ALKI": "Alkimi", "ALLBI": "ALL BEST ICO", @@ -586,6 +610,7 @@ "ALPHAF": "Alpha Fi", "ALPHAG": "Alpha Gardeners", "ALPHAPETTO": "Alpha Petto Shells", + "ALPHAPLATFORM": "Alpha Token", "ALPHAS": "Alpha Shards", "ALPHR": "Alphr", "ALPINE": "Alpine F1 Team Fan Token", @@ -608,7 +633,7 @@ "ALWAYS": "Always Evolving", "ALX": "ALAX", "ALY": "Ally", - "AM": "AeroMe", + "AM": "Aston Martin Cognizant", "AMA": "MrWeb", "AMADEUS": "AMADEUS", "AMAL": "AMAL", @@ -620,6 +645,7 @@ "AMBO": "Sheertopia", "AMBR": "Ambra", "AMBT": "AMBT Token", + "AMC": "AI Meta Coin", "AMDC": "Allmedi Coin", "AMDG": "AMDG", "AME": "Amepay", @@ -659,10 +685,12 @@ "ANAL": "AnalCoin", "ANALOS": "analoS", "ANALY": "Analysoor", + "ANARCHISTS": "Anarchists Prime", "ANAT": "Anatolia Token", "ANB": "Angryb", "ANC": "Anchor Protocol", "ANCHOR": "AnchorSwap", + "ANCIENTKING": "Ancient Kingdom", "ANCP": "Anacrypt", "ANCT": "Anchor", "AND": "AndromedaCoin", @@ -705,10 +733,12 @@ "ANML": "Animal Concerts", "ANN": "Annex Finance", "ANNE": "ANNE", - "ANON": "ANON", + "ANON": "HeyAnon", "ANONCOIN": "Anoncoin", + "ANONCRYPTO": "ANON", "ANRX": "AnRKey X", - "ANS": "ANS Crypto Coin", + "ANS": "Apollo Name Service", + "ANSCRYPTO": "ANS Crypto Coin", "ANSOM": "Ansom", "ANSR": "Answerly", "ANT": "Aragon", @@ -717,6 +747,7 @@ "ANTEX": "Antex", "ANTI": "Anti Bitcoin", "ANTIS": "Antis Inu", + "ANTMONS": "Antmons", "ANTS": "ANTS Reloaded", "ANTT": "Antara Token", "ANUS": "URANUS", @@ -740,7 +771,7 @@ "APCG": "ALLPAYCOIN", "APD": "Aptopad", "APE": "ApeCoin", - "APED": "Baddest Alpha Ape Bundle", + "APED": "Aped", "APEDEV": "The dev is an Ape", "APEFUN": "Ape", "APEMAN": "APEMAN", @@ -793,6 +824,7 @@ "APYS": "APYSwap", "APZ": "Alprockz", "AQA": " AQA Token", + "AQDC": "AQDC", "AQT": "Alpha Quark Token", "AQTIS": "AQTIS", "AQU": "aQuest", @@ -809,7 +841,7 @@ "ARATA": "Arata", "ARAW": "Araw", "ARB": "Arbitrum", - "ARBI": "Arbi", + "ARBI": "Arbipad", "ARBIT": "Arbit Coin", "ARBP": "ARB Protocol", "ARBS": "Arbswap", @@ -827,12 +859,14 @@ "ARCAS": "Arcas", "ARCH": "Archway", "ARCHA": "ArchAngel Token", + "ARCHAI": "ArchAI", "ARCHCOIN": "ArchCoin", "ARCHE": "Archean", "ARCHIVE": "Chainback", "ARCINTEL": "Arc", "ARCO": "AquariusCoin", "ARCONA": "Arcona", + "ARCOS": "ArcadiaOS", "ARCT": "ArbitrageCT", "ARCTICCOIN": "ArcticCoin", "ARCX": "ARC Governance", @@ -878,16 +912,19 @@ "ARO": "Arionum", "ARON": "Astronaut Aron", "AROR": "Arora", + "AROS": "Aros", "ARPA": "ARPA Chain", "ARPAC": "ArpaCoin", "ARQ": "ArQmA", "ARQX": "ARQx AI", "ARR": "ARROUND", + "ARRI": "Arris", "ARRO": "Arro Social", + "ARROW": "Arrow Token", "ARRR": "Pirate Chain", "ARSL": "Aquarius Loan", "ARSW": "ArthSwap", - "ART": "Maecenas", + "ART": "Genify ART", "ARTC": "Artcoin", "ARTDECO": "ARTDECO", "ARTDRAW": "ArtDraw", @@ -939,6 +976,7 @@ "ASKAI": "ASKAI", "ASKO": "Asko", "ASM": "Assemble Protocol", + "ASMAT": "AsMatch", "ASMO": "AS Monaco Fan Token", "ASN": "Ascension Coin", "ASNT": "Assent Protocol", @@ -948,6 +986,7 @@ "ASPO": "ASPO Shards", "ASQT": "ASQ Protocol", "ASR": "AS Roma Fan Token", + "ASRR": "Assisterr AI", "ASS": "Australian Safe Shepherd", "ASSA": "AssaPlay", "ASSARA": "ASSARA", @@ -957,6 +996,7 @@ "ASTA": "ASTA", "ASTO": "Altered State Token", "ASTON": "Aston", + "ASTONV": "Aston Villa Fan Token", "ASTR": "Astar", "ASTRA": "Astra Protocol", "ASTRADAO": "Astra DAO", @@ -1003,6 +1043,7 @@ "ATL": "ATLANT", "ATLA": "Atleta Network", "ATLAS": "Star Atlas", + "ATLASD": "Atlas DEX", "ATLX": "Atlantis Loans Polygon", "ATM": "Atletico de Madrid Fan Token", "ATMA": "ATMA", @@ -1030,7 +1071,7 @@ "ATROFA": "Atrofarm", "ATRS": "Attarius Network", "ATRV1": "Artrade v1", - "ATS": "Atlas DEX", + "ATS": "Alltoscan", "ATT": "Attila", "ATTR": "Attrace", "ATX": "ArtexCoin", @@ -1066,10 +1107,12 @@ "AUSDT": "aUSDT", "AUT": "Autoria", "AUTHORSHIP": "Authorship", - "AUTISM": "AUTISM", + "AUTISM": "autism", + "AUTISMTOKEN": "AUTISM", "AUTO": "Auto", "AUTOMATIC": "Automatic Treasury Machine", "AUTONO": "Autonomi", + "AUTOS": "CryptoAutos", "AUTUMN": "Autumn", "AUVERSE": "AuroraVerse", "AUX": "Auxilium", @@ -1092,6 +1135,7 @@ "AVAXAI": "AIvalanche DeFAI Agents", "AVAXIOU": "Avalanche IOU", "AVB": "Autonomous Virtual Beings", + "AVC": "AVC", "AVDO": "AvocadoCoin", "AVE": "Avesta", "AVEN": "Aventis AI", @@ -1102,7 +1146,7 @@ "AVI": "Aviator", "AVINOC": "AVINOC", "AVIVE": "Avive World", - "AVL": "Aston Villa Fan Token", + "AVL": "AVL", "AVM": "AVM (Atomicals)", "AVME": "AVME", "AVN": "AVNRich", @@ -1114,18 +1158,20 @@ "AVTM": "Aventis Metaverse", "AVXL": "Avaxlauncher", "AVXT": "Avaxtars Token", + "AWARDCOIN": "Award", "AWARE": "ChainAware.ai", "AWAX": "AWAX", "AWC": "Atomic Wallet Coin", + "AWE": "AWE Network", "AWK": "Awkward Monkey Base", "AWM": "Another World", "AWNEX": "AWNEX token", "AWO": "AiWork", "AWORK": "Aworker", "AWP": "Ansem Wif Photographer", - "AWR": "Award", - "AWS": "AurusSILVER", - "AWT": "Airdrop World", + "AWR": "All Will Retire", + "AWS": "Agentwood Studios", + "AWT": "Abyss World", "AWX": "AurusX", "AX": "AlphaX", "AXC": "AXIA Coin", @@ -1169,7 +1215,7 @@ "AZUR": "Azuro Protocol", "AZURE": "Azure Wallet", "AZY": "Amazy", - "B": "BankCoin", + "B": "BUILDon", "B01": "b0rder1ess", "B1P": "B ONE PAYMENT", "B2": "B² Network", @@ -1189,13 +1235,14 @@ "BAB": "Babacoin", "BABI": "Babylons", "BABL": "Babylon Finance", - "BABY": "BabySwap", + "BABY": "Babylon", "BABYANDY": "Baby Andy", "BABYB": "Baby Bali", "BABYBI": "Baby Bitcoin", "BABYBINANCE": "BABYBINANCE", "BABYBITC": "BabyBitcoin", "BABYBNB": "BabyBNB", + "BABYBNBBABY": "BabyBNB", "BABYBNBTIGER": "BabyBNBTiger", "BABYBO": "BabyBonk", "BABYBOB": "Baby Bob", @@ -1242,7 +1289,6 @@ "BABYKEKIUS": "Baby Kekius Maximus", "BABYKITTY": "BabyKitty", "BABYKOMA": "Baby Koma", - "BABYLON": "Babylon", "BABYLONG": "Baby Long", "BABYM": "BabyMAGA", "BABYMAGA": "Baby Maga", @@ -1268,7 +1314,8 @@ "BABYRWA": "BabyRWA", "BABYS": "Baby Slerf", "BABYSAITAMA": "Baby Saitama", - "BABYSHARK": "Baby Shark", + "BABYSHARK": "Baby Shark Meme", + "BABYSHARKBSC": "Baby Shark", "BABYSHIB": "Baby Shiba Inu", "BABYSHIBAINU": "Baby Shiba Inu", "BABYSHIRO": "Baby Shiro Neko", @@ -1277,6 +1324,7 @@ "BABYSNAKE": "Baby Snake BSC", "BABYSOL": "Baby Solana", "BABYSORA": "Baby Sora", + "BABYSWAP": "BabySwap", "BABYSWEEP": "BabySweep", "BABYT": "BABYTRUMP", "BABYTK": "Baby Tiger King", @@ -1297,7 +1345,9 @@ "BADAI": "BAD Coin", "BADC": "BADCAT", "BADCAT": "Andy’s Alter Ego", + "BADDEST": "Baddest Alpha Ape Bundle", "BADGER": "Badger DAO", + "BADM": "Badmad Robots", "BAFC": "BabyApeFunClub", "BAG": "Bag", "BAGS": "Basis Gold Share", @@ -1320,7 +1370,8 @@ "BALANCE": "Balance AI", "BALD": "Bald", "BALIN": "Balin Bank", - "BALL": "Game 5 BALL", + "BALKANCOIN": "Balkancoin", + "BALL": "BitBall", "BALLZ": "Wolf Wif", "BALN": "Balanced", "BALPHA": "bAlpha", @@ -1343,14 +1394,17 @@ "BAND": "Band Protocol", "BANDEX": "Banana Index", "BANDIT": "Bandit on Base", + "BANDO": "Bandot", "BANG": "BANG", "BANGY": "BANGY", "BANK": "Float Protocol", "BANKA": "Bank AI", + "BANKBRC": "BANK Ordinals", "BANKC": "Bankcoin", "BANKER": "BankerCoinAda", "BANKETH": "BankEth", "BANKSY": "BANKSY", + "BANNED": "BANNED", "BANNER": "BannerCoin", "BANUS": "Banus.Finance", "BANX": "Banx.gg", @@ -1374,6 +1428,7 @@ "BARY": "Bary", "BAS": "Basis Share", "BASEAI": "BaseAI", + "BASEBEAR": "BBQ", "BASECAT": "BASE CAT", "BASECOIN": "BASECOIN", "BASED": "Based Money", @@ -1398,11 +1453,13 @@ "BASHOS": "Bashoswap", "BASIC": "BASIC", "BASID": "Basid Coin", + "BASIL": "Basilisk", "BASIS": "Basis", "BASK": "BasketDAO", "BAST": "Bast", "BASTET": "Bastet Goddess", "BAT": "Basic Attention Token", + "BATCH": "BATCH Token", "BATH": "Battle Hero", "BATMAN": "BATMAN", "BATO": "Batonex Token", @@ -1436,6 +1493,7 @@ "BBL": "beoble", "BBN": "BBNCOIN", "BBO": "Bigbom", + "BBOB": "BabyBuilder", "BBONK": "BitBonk", "BBOS": "Blackbox Foundation", "BBP": "BiblePay", @@ -1445,7 +1503,7 @@ "BBROCCOLI": "Baby Broccoli", "BBS": "BBSCoin", "BBSOL": "Bybit Staked SOL", - "BBT": "BitBook", + "BBT": "BabyBoomToken", "BBTC": "Binance Wrapped BTC", "BBTF": "Block Buster Tech Inc", "BBUSD": "BounceBit USD", @@ -1486,8 +1544,10 @@ "BCOIN": "Bombcrypto", "BCOINM": "Bomb Crypto (MATIC)", "BCOQ": "BLACK COQINU", - "BCP": "BitcashPay", + "BCP": "BlockChainPeople", + "BCPAY": "Bitcashpay", "BCPT": "BlockMason Credit Protocol", + "BCPV1": "BitcashPay", "BCR": "BitCredit", "BCRO": "Bonded Cronos", "BCS": "Business Credit Substitute", @@ -1508,8 +1568,9 @@ "BDCA": "BitDCA", "BDCC": "BDCC COIN", "BDCLBSC": "BorderCollieBSC", - "BDG": "BitDegree", + "BDG": "Beyond Gaming", "BDID": "BDID", + "BDIN": "BendDAO BDIN", "BDL": "Bitdeal", "BDOG": "Bulldog Token", "BDOGITO": "BullDogito", @@ -1522,6 +1583,7 @@ "BDSM": "BTC DOGE SOL MOON", "BDTC": "BDTCOIN", "BDX": "Beldex", + "BDXN": "Bondex Token", "BDY": "Buddy DAO", "BEA": "Beagle Inu", "BEACH": "BeachCoin", @@ -1529,7 +1591,8 @@ "BEAM": "Beam", "BEAMMW": "Beam", "BEAN": "Bean", - "BEANS": "Moonbeans", + "BEANS": "SUNBEANS (BEANS)", + "BEAR": "Bear Inu", "BEARIN": "Bear in Bathrobe", "BEAST": "MrBeast", "BEAT": "BEAT Token", @@ -1537,19 +1600,26 @@ "BEATLES": "JohnLennonC0IN", "BEATS": "Sol Beats", "BEBE": "BEBE", + "BEBEETH": "BEBE", + "BEBEV1": "BEBE v1", "BEC": "Betherchip", "BECH": "Beauty Chain", + "BECKOS": "Beckos", "BECN": "Beacon", "BECO": "BecoSwap Token", "BECX": "BETHEL", "BED": "Bankless BED Index", + "BEDROCK": "Bedrock", "BEE": "Herbee", "BEEF": "PepeBull", "BEEG": "Beeg Blue Whale", "BEENZ": "BEENZ", "BEEP": "BEEP", + "BEEPBOOP": "Boop", "BEER": "BEERCOIN", + "BEER2": "Beercoin 2", "BEERUSCAT": "BeerusCat", + "BEES": "BEEs", "BEET": "BEETroot", "BEETLE": "Beetle Coin", "BEETOKEN": "Bee Token", @@ -1673,7 +1743,8 @@ "BHO": "Bholdus Token", "BHP": "Blockchain of Hash Power", "BHPC": "BHPCash", - "BIAO": "Biaocoin", + "BIAO": "BIAO", + "BIAOCOIN": "Biaocoin", "BIB": "BIB Token", "BIBI": "BIBI", "BIBI2025": "Bibi", @@ -1701,6 +1772,7 @@ "BIGBALLS": "Edward Coristine", "BIGBANGCORE": "BigBang Core", "BIGCOIN": "BigCoin", + "BIGDOG": "Big Dog", "BIGFACTS": "BIGFACTS", "BIGFOOT": "BigFoot Town", "BIGHAN": "BighanCoin", @@ -1746,10 +1818,12 @@ "BIPX": "Bispex", "BIR": "Birake", "BIRB": "Birb", - "BIRD": "Bird.Money", + "BIRD": "BIRD", "BIRDCHAIN": "Birdchain", "BIRDD": "BIRD DOG", "BIRDDOG": "Bird Dog", + "BIRDEI": "Birdei", + "BIRDMONEY": "Bird.Money", "BIRDO": "Bird Dog", "BIS": "Bismuth", "BISKIT": "Biskit Protocol", @@ -1761,12 +1835,15 @@ "BITASEAN": "BitAsean", "BITB": "BeanCash", "BITBEDR": "Bitcoin EDenRich", + "BITBO": "BitBook", + "BITBOARD": "Bitboard", "BITBOOST": "BitBoost", "BITBULL": "Bitbull", "BITBURN": "Bitburn", "BITC": "BitCash", "BITCAR": "BitCar", "BITCAT": "Bitcat", + "BITCATONSOL": "Bitcat", "BITCCA": "Bitcci Cash", "BITCI": "Bitcicoin", "BITCM": "Bitcomo", @@ -1777,7 +1854,9 @@ "BITCOINP": "Bitcoin Private", "BITCOINV": "BitcoinV", "BITCONNECT": "BitConnect Coin", + "BITCORE": "BitCore", "BITCRATIC": "Bitcratic Token", + "BITDEGREE": "BitDegree", "BITE": "Bitether", "BITF": "Bit Financial", "BITFLIP": "BitFlip", @@ -1799,6 +1878,7 @@ "BITRUE": "Bitrue Coin", "BITS": "BitstarCoin", "BITSD": "Bits Digit", + "BITSEEDS": "BitSeeds", "BITSERIAL": "BitSerial", "BITSILVER": "bitSilver", "BITSPACE": "Bitspace", @@ -1826,7 +1906,7 @@ "BJ": "Blocjerk", "BJK": "Beşiktaş", "BKBT": "BeeKan", - "BKC": "Balkancoin", + "BKC": "BKC Token", "BKING": "King Arthur", "BKK": "BKEX Token", "BKN": "Brickken", @@ -1843,12 +1923,14 @@ "BLACK": "BLACKHOLE PROTOCOL", "BLACKD": "Blackder AI", "BLACKDRAGON": "Black Dragon", + "BLACKP": "BlackPool Token", "BLACKR": "BLACK ROCK", "BLACKROCK": "BlackRock", "BLACKSALE": "Black Sale", "BLACKST": "Black Stallion", "BLACKSWAN": "BlackSwan AI", - "BLADE": "BladeWarrior", + "BLADE": "BladeGames", + "BLADEW": "BladeWarrior", "BLAKEBTC": "BlakeBitcoin", "BLANK": "Blank Token", "BLAS": "BlakeStar", @@ -1856,7 +1938,8 @@ "BLASTA": "BlastAI", "BLASTUP": "BlastUP", "BLAUNCH": "B-LAUNCH", - "BLAZE": "Blaze", + "BLAZE": "StoryFire", + "BLAZECOIN": "Blaze", "BLAZEX": "BlazeX", "BLAZR": "BlazerCoin", "BLBY": "Badluckbaby", @@ -1892,10 +1975,13 @@ "BLOCK": "Blockasset", "BLOCKB": "Block Browser", "BLOCKF": "Block Farm Club", + "BLOCKG": "BlockGames", "BLOCKIFY": "Blockify.Games", + "BLOCKMAX": "BLOCKMAX", "BLOCKN": "BlockNet", "BLOCKPAY": "BlockPay", "BLOCKS": "BLOCKS", + "BLOCKSSPACE": "Blocks Space", "BLOCKSTAMP": "BlockStamp", "BLOCKT": "Blocktools", "BLOCKW": "Blockwise", @@ -1912,7 +1998,7 @@ "BLOXT": "Blox Token", "BLP": "BullPerks", "BLRY": "BillaryCoin", - "BLS": "Blocks Space", + "BLS": "BloodLoop", "BLST": "Crypto Legions Bloodstone", "BLT": "Blocto Token", "BLTC": "BABYLTC", @@ -1974,6 +2060,7 @@ "BMX": "BitMart Token", "BMXT": "Bitmxittz", "BMXX": "Multiplier", + "BN": "TNA Protocol", "BNA": "BananaTok", "BNANA": "Chimpion", "BNB": "Binance Coin", @@ -2000,6 +2087,7 @@ "BNBSNAKE": "BNB SNAKE", "BNBSONGOKU": "BNBsongoku", "BNBTC": "BNbitcoin", + "BNBULL": "BNBULL", "BNBVEGETA": "BNB VEGETA", "BNBWHALES": "BNB Whales", "BNBX": "Stader BNBx", @@ -2092,12 +2180,13 @@ "BOLTT": "BolttCoin", "BOM": "Book Of Matt Furie", "BOMA": "Book of Maga", - "BOMB": "BOMB", + "BOMB": "LollyBomb", "BOMBC": "BombCoin", "BOMBLOONG": "Bombloong", "BOMBM": "Bomb Money", "BOMBO": "BOMBO", "BOMBS": "Bomb Shelter Inu", + "BOMBTOKEN": "BOMB", "BOME": "BOOK OF MEME", "BOME2": "Book of Meme 2.0", "BOMEDOGE": "BOOK OF DOGE MEMES", @@ -2114,6 +2203,7 @@ "BONDLYV1": "Bondly Finance", "BONDX": "BondX", "BONE": "Bone ShibaSwap", + "BONEBONE": "Bone", "BONES": "Moonshots Farm", "BONESCOIN": "BonesCoin", "BONESV1": "Squirrel Finance", @@ -2141,6 +2231,7 @@ "BONUSCAKE": "Bonus Cake", "BOO": "Spookyswap", "BOOB": "BooBank", + "BOOCHIE": "Boochie by Matt Furie", "BOOE": "Book of Ethereum", "BOOF": "Boofus by Virtuals", "BOOFI": "Boo Finance", @@ -2155,7 +2246,8 @@ "BOOMDAO": "BOOM DAO", "BOOMER": "Boomer", "BOONS": "BOONSCoin", - "BOOP": "Boop", + "BOOP": "BOOP", + "BOOPA": "Boopa", "BOOS": "Boost Trump Campaign", "BOOST": "PodFast", "BOOSTCO": "Boost", @@ -2167,6 +2259,7 @@ "BOPPY": "BOPPY", "BOR": "BoringDAO", "BORA": "BORA", + "BORAV1": "BORA v1", "BORED": "Bored Museum", "BORG": "SwissBorg", "BORGY": "BORGY", @@ -2183,6 +2276,7 @@ "BOSONC": "BosonCoin", "BOSS": "BitBoss", "BOSSBABY": "BossBaby", + "BOSSBURGER": "Boss Burger", "BOSSCOQ": "THE COQFATHER", "BOST": "BoostCoin", "BOSU": "Bosu Inu", @@ -2201,6 +2295,7 @@ "BOWSC": "BowsCoin", "BOWSER": "Bowser", "BOX": "DeBoxToken", + "BOXCAT": "BOXCAT", "BOXETH": "Cat-in-a-Box Ether", "BOXT": "BOX Token", "BOXX": "Blockparty", @@ -2236,7 +2331,7 @@ "BPRO": "BitCloud Pro", "BPS": "BitcoinPoS", "BPSHIB": "Binance-Peg Shiba Inu (Binance Bridge)", - "BPT": "BlackPool Token", + "BPT": "Best Patent Token", "BPTC": "Business Platform Tomato Coin", "BPUNI": "Binance-Peg Uniswap Protocol Token (Binance Bridge)", "BPUSDC": "Binance-Peg USD Coin (Binance Bridge)", @@ -2258,6 +2353,7 @@ "BRAM": "Defibox bRAM", "BRANA": "Branaverse", "BRAND": "BrandProtect", + "BRANDY": "BRANDY", "BRAT": "Peak Brat", "BRATT": "Son of Brett", "BRAWL": "BitBrawl", @@ -2293,6 +2389,7 @@ "BRIC": "BrightCoin", "BRICK": "Brickchain FInance", "BRICKS": "MyBricks", + "BRICS": "BRICS Chain", "BRIDGE": "Bridge Bot", "BRIGHT": "Bright Token", "BRIGHTU": "Bright Union", @@ -2312,6 +2409,7 @@ "BRNK": "Brank", "BRNX": "Bronix", "BRO": "Bro the cat", + "BROAK": "Broak on Base", "BROC": "Broccoli (broc.wtf)", "BROCC": "Broccoli", "BROCCO": "Broccoli (firstbroccoli.com)", @@ -2397,7 +2495,7 @@ "BSW": "Biswap", "BSWAP": "BaseSwap", "BSWT": "BaySwap", - "BSX": "Basilisk", + "BSX": "BSX", "BSY": "Bestay", "BSYS": "BSYS", "BT": "BT.Finance", @@ -2441,8 +2539,10 @@ "BTCMT": "Minto", "BTCN": "Bitcorn", "BTCNOW": "Blockchain Technology Co.", + "BTCONETH": "bitcoin on Ethereum", "BTCP": "Bitcoin Palladium", "BTCPAY": "Bitcoin Pay", + "BTCPT": "Bitcoin Platinum", "BTCPX": "BTC Proxy", "BTCR": "BitCurrency", "BTCRED": "Bitcoin Red", @@ -2506,7 +2606,7 @@ "BTU": "BTU Protocol", "BTV": "Bitvote", "BTW": "BitWhite", - "BTX": "BitCore", + "BTX": "Bitradex Token", "BTXC": "Bettex coin", "BTY": "Bityuan", "BTYC": "BigTycoon", @@ -2523,7 +2623,8 @@ "BUBU": "BUBU", "BUBV1": "BUBCAT v1", "BUC": "Beau Cat", - "BUCK": "Coinbuck", + "BUCK": "GME Mascot", + "BUCKAZOIDS": "Buckazoids", "BUCKS": "SwagBucks", "BUCKY": "Bucky", "BUD": "Buddy", @@ -2553,6 +2654,7 @@ "BULDAK": "Buldak", "BULEI": "Bulei", "BULL": "Tron Bull", + "BULLA": "BULLA", "BULLBEAR": "BullBear AI", "BULLC": "BuySell", "BULLF": "BULL FINANCE", @@ -2594,6 +2696,7 @@ "BURNZ": "BURNZ", "BURP": "CoinBurp", "BURRRD": "BURRRD", + "BURT": "BURT", "BUSD": "Binance USD", "BUSDC": "BUSD", "BUSY": "Busy DAO", @@ -2606,7 +2709,9 @@ "BUY": "Burency", "BUYI": "Buying.com", "BUYT": "Buy the DIP", - "BUZZ": "BuzzCoin", + "BUZ": "BUZ", + "BUZZ": "Hive AI", + "BUZZCOIN": "BuzzCoin", "BV3A": "Buccaneer V3 Arbitrum", "BVC": "BeaverCoin", "BVM": "BVM", @@ -2644,6 +2749,7 @@ "BYB": "BiorBank", "BYC": "ByteCent", "BYG": "Black Eye Galaxy", + "BYIN": "BYIN", "BYT": "ByteAI", "BYTE": "Byte", "BYTES": "Neo Tokyo", @@ -2691,6 +2797,7 @@ "CAH": "Moon Tropica", "CAI": "Chasm", "CAID": "ClearAid", + "CAILA": "Caila", "CAIR": "Crypto-AI-Robo.com", "CAITOKEN": "Cai Token", "CAIV": "CARVIS", @@ -2701,8 +2808,9 @@ "CAKEMOON": "CakeMoon", "CAKESWAP": "CakeSwap", "CAKEW": "CakeWSwap", - "CAL": "Calcium", + "CAL": "FitBurn", "CALC": "CaliphCoin", + "CALCI": "Calcium", "CALI": "CaliCoin", "CALL": "Global Crypto Alliance", "CALLS": "OnlyCalls by Virtuals", @@ -2717,7 +2825,8 @@ "CAN": "Channels", "CANCER": "Cancer", "CAND": "Canary Dollar", - "CANDLE": "Candle Cat", + "CANDLE": "Candle TV", + "CANDLECAT": "Candle Cat", "CANDY": "UnicornGo Candy", "CANDYLAD": "Candylad", "CANN": "CannabisCoin", @@ -2738,15 +2847,19 @@ "CAPTAINPLANET": "Captain Planet", "CAPY": "Capybara", "CAPYBARA": "Capybara", - "CAR": "CarBlock", + "CAPYBARA1995": "Capybara", + "CAR": "Central African Republic Meme", "CARAT": "Carats Token", + "CARBLOCK": "CarBlock", "CARBO": "CleanCarbon", - "CARBON": "Carboncoin", + "CARBON": "Carbon", + "CARBONCOIN": "Carboncoin", "CARBONGEMS": "Carbon GEMS", "CARD": "Cardstack", "CARDS": "Cardstarter", "CARDSWAP": "CardSwap", - "CARE": "Carebit", + "CARE": "CareCoin", + "CAREBIT": "Carebit", "CARES": "CareCoin", "CARL": "Carl", "CARLO": "Carlo", @@ -2759,6 +2872,7 @@ "CART": "CryptoArt.Ai", "CARTAXI": "CarTaxi", "CARTERCOIN": "CarterCoin", + "CARTIER": "Cartier", "CARV": "CARV", "CAS": "Cashaa", "CASH": "CashCoin", @@ -2767,6 +2881,7 @@ "CASINU": "Casinu Inu", "CASIO": "CasinoXMetaverse", "CASPER": "Casper DeFi", + "CASPERTOKEN": "Casper Token", "CAST": "Castello Coin", "CASTLE": "bitCastle", "CAT": "Simon's Cat", @@ -2787,6 +2902,7 @@ "CATCOINV2": "CatCoin Cash", "CATDOG": "Cat-Dog", "CATDOGE": "CAT DOGE", + "CATE": "Cate on ETH", "CATEC": "Cate Coin", "CATECOIN": "CateCoin", "CATELON": "CatElonMars", @@ -2796,6 +2912,7 @@ "CATGAME": "Cookie Cat Game", "CATGIRL": "Catgirl", "CATGOKU": "Catgoku", + "CATGOLD": "Cat Gold Miner", "CATGPT": "CatGPT", "CATHAT": "catwifhat", "CATHEON": "Catheon Gaming", @@ -2809,12 +2926,13 @@ "CATO": "CATO", "CATPAY": "CATpay", "CATPEPE": "CAT PEPE", - "CATS": "CatCoin Token", + "CATS": "Cats", "CATSC": "Catscoin", "CATSHIRA": "Shira Cat", "CATSO": "Cats Of Sol", "CATSON": "Catson", "CATSV1": "CatCoin Token v1", + "CATSV2": "CatCoin Token", "CATSY": "CAT SYLVESTER", "CATT": "Catex", "CATTO": "Cat Token", @@ -2827,6 +2945,8 @@ "CATX": "CAT.trade Protocol", "CATZ": "CatzCoin", "CAU": "Canxium", + "CAUSE": "Causecoin", + "CAV1": "Coupon Assets v1", "CAVA": "Cavapoo", "CAVADA": "Cavada", "CAVE": "Deepcave", @@ -2879,6 +2999,7 @@ "CCC": "CCCoin", "CCCX": "Clipper Coin Capital", "CCD": "Concordium", + "CCDOG": "Courage The Dog", "CCDS": "CCDS INTERNATIONAL", "CCE": "CloudCoin", "CCGDS": "CCGDS", @@ -2904,6 +3025,7 @@ "CDAI": "Compound Dai", "CDBIO": "CDbio", "CDCETH": "Crypto.com Staked ETH", + "CDCSOL": "Crypto.com Staked SOL", "CDEX": "Cryptodex", "CDL": "CoinDeal Token", "CDN": "Canada eCoin", @@ -2922,6 +3044,7 @@ "CEICAT": "CEILING CAT", "CEJI": "Ceji", "CEL": "Celsius Network", + "CELA": "Cellula Token", "CELEB": "CELEBPLUS", "CELL": "Cellframe", "CELO": "Celo", @@ -2955,7 +3078,7 @@ "CFD": "Confido", "CFF": "Coffe", "CFG": "Centrifuge", - "CFI": "Cofound.it", + "CFI": "CyberFi Token", "CFL365": "CFL365 Finance", "CFLASH": "Flash", "CFLO": "Chain Flowers", @@ -2974,7 +3097,7 @@ "CGLD": "Celo Gold", "CGO": "Comtech Gold", "CGPT": "ChainGPT", - "CGPU": "CloudGPU", + "CGPU": "ChainGPU", "CGS": "Crypto Gladiator Shards", "CGT": "Coin Gabbar Token", "CGTV1": "Curio Governance", @@ -2997,6 +3120,7 @@ "CHAMPZ": "Champz", "CHAN": "ChanCoin", "CHANCE": "Ante Casino", + "CHANEL": "Chanel", "CHANG": "Chang", "CHANGE": "ChangeX", "CHAO": "23 Skidoo", @@ -3069,6 +3193,7 @@ "CHILL": "ChillPill", "CHILLAX": "Chillax", "CHILLGUY": "Chill Guy", + "CHILLHOUSE": "Chill House", "CHIM": "Chimera", "CHINA": "China Coin", "CHINAU": "Chinau", @@ -3079,7 +3204,8 @@ "CHIPI": "chipi", "CHIPPY": "Chippy", "CHIPS": "CHIPS", - "CHIRP": "Chirp", + "CHIRP": "Chirp Token", + "CHIRPFI": "Chirp", "CHIRPY": "Chirpy Boy", "CHITAN": "Chitan", "CHITCAT": "ChitCAT", @@ -3151,6 +3277,7 @@ "CIRRUS": "Cirrus", "CIRUS": "Cirus", "CIRX": "Circular Protocol", + "CITADAIL": "Griffain New Hedge Fund", "CITI": "CITI Fediverse", "CITY": "Manchester City Fan Token", "CIV": "Civilization", @@ -3177,7 +3304,8 @@ "CLAS": "Classic USDC", "CLASH": "Clashub", "CLASS": "Class Coin", - "CLAY": "Clay Nation", + "CLAY": "Clayton", + "CLAYN": "Clay Nation", "CLB": "Cloudbric", "CLBR": "Colibri Protocol", "CLBTC": "clBTC", @@ -3206,6 +3334,7 @@ "CLM": "CoinClaim", "CLMRS": "Crolon Mars", "CLN": "Colu Local Network", + "CLND": "COLEND", "CLNX": "Coloniume Network", "CLNY": "Colony", "CLO": "Callisto Network", @@ -3214,6 +3343,7 @@ "CLOKI": "CATLOKI", "CLORE": "Clore.ai", "CLOUD": "Cloud", + "CLOUDGPU": "CloudGPU", "CLOUT": "BitClout", "CLOUTIO": "Clout", "CLOW": "Clown Pepe", @@ -3254,6 +3384,7 @@ "CMP": "Caduceus", "CMPCO": "CampusCoin", "CMPT": "Spatial Computing", + "CMPV2": "Caduceus Protocol", "CMQ": "Communique", "CMS": "COMSA", "CMSN": "The Commission", @@ -3303,6 +3434,7 @@ "COCONUT": "Coconut", "COCOR": "Cocoro", "COCORO": "Cocoro", + "COCOROBNB": "Cocoro", "COCOROERC": "COCORO", "COD": "Chief of Deswamp", "CODA": "CODA", @@ -3319,6 +3451,7 @@ "COFFEECOIN": "CoffeeCoin", "COFI": "CoinFi", "COFIX": "CoFIX", + "COFOUNDIT": "Cofound.it", "COG": "Cognitio", "COGE": "Cogecoin", "COGEN": "Cogenero", @@ -3328,6 +3461,7 @@ "COINAI": "Coinbase AI Agent", "COINB": "Coinbidex", "COINBT": "CoinBot", + "COINBUCK": "Coinbuck", "COINDEFI": "Coin", "COING": "Coingrid", "COINH": "Coinhound", @@ -3344,6 +3478,7 @@ "COKEONS": "Coke on Sol", "COL": "Clash of Lilliput", "COLA": "Cola", + "COLISEUM": "Coliseum", "COLL": "Collateral Pay", "COLLAR": "PolyPup Finance", "COLLAT": "Collaterize", @@ -3356,7 +3491,7 @@ "COLS": "Cointel", "COLT": "Collateral Network", "COLX": "ColossusCoinXT", - "COM": "Coliseum", + "COM": ".com", "COMAI": "Commune AI", "COMB": "Combo", "COMBO": "COMBO", @@ -3389,11 +3524,13 @@ "CONV": "Convergence", "CONVO": "Prefrontal Cortex Convo Agent by Virtuals", "CONX": "Connex", + "CONY": "Cony", "COO": "Cool Cats MILK", "COOCHIE": "Cucci", "COOHA": "CoolHash", - "COOK": "Cook", + "COOK": "COOK", "COOKIE": "Cookie", + "COOKTOKEN": "Cook", "COOL": "CoolCoin", "COOP": "Coop Network", "COPA": "COCO PARK", @@ -3401,12 +3538,15 @@ "COPI": "Cornucopias", "COPIO": "Copiosa Coin", "COPIUM": "Copium", + "COPPER": "COPPER", "COPS": "Cops Finance", "COPYCAT": "Copycat Finance", "COQ": "Coq Inu", "COR": "Coreto", "CORA": "Cora by Virtuals", - "CORAL": "CoralPay", + "CORAL": "Coral Protocol", + "CORALPAY": "CoralPay", + "CORALSWAP": "Coral Swap", "CORE": "Core", "COREC": "CoreConnect", "COREDAO": "coreDAO", @@ -3503,6 +3643,7 @@ "CRAIG": "CraigsCoin", "CRAMER": "Cramer Coin", "CRANEPAY": "Cranepay", + "CRAPPY": "CrappyBird", "CRASH": "Solana Crash", "CRASHBOYS": "CRASHBOYS", "CRAVE": "CraveCoin", @@ -3583,6 +3724,7 @@ "CRONA": "CronaSwap", "CRONK": "CRONK", "CROPPER": "CropperFinance", + "CROS": "Cros Token", "CROW": "cr0w by Virtuals", "CROWD": "CrowdCoin", "CROWDWIZ": "Crowdwiz", @@ -3613,6 +3755,7 @@ "CRWNY": "Crowny Token", "CRX": "ChronosCoin", "CRY": "Crypto News Flash AI", + "CRYBB": "CryBaby", "CRYN": "CRYN", "CRYO": "CryoDAO", "CRYP": "CrypticCoin", @@ -3631,6 +3774,7 @@ "CRYPTOE": "Cryptoenter", "CRYPTOEM": "Crypto Emperor Trump", "CRYPTOF": "CryptoFarmers", + "CRYPTOFIGHT": "Crypto Fight Club", "CRYPTOH": "CryptoHunterTrading", "CRYPTOJ": "Crypto Journey", "CRYPTOJESUS": "Crypto Jesus Trump", @@ -3643,6 +3787,7 @@ "CRYPTOS": "CryptoSoul", "CRYPTOSDG": "Crypto SDG", "CRYPTOT": "Crypto Trump", + "CRYPTOTANKS": "CryptoTanks", "CRYPTOU": "CryptoUnity", "CRYSTAL": "Crystal", "CRYSTALCLEAR": "Crystal Clear Token", @@ -3667,6 +3812,8 @@ "CSQ": "cosquare", "CSR": "Cashera", "CSS": "CoinSwap Token", + "CST": "Crypto Samurai", + "CSTAR": "COINSTAR", "CSTC": "CryptosTribe", "CSTL": "Castle", "CSTR": "CoreStarter", @@ -3712,6 +3859,7 @@ "CTX": "Cryptex", "CTXC": "Cortex", "CTY": "Connecty", + "CTYN": "Canyont", "CU": "Crypto Unicorns", "CUAN": "CuanSwap.com", "CUB": "Cub Finance", @@ -3727,7 +3875,8 @@ "CUFF": "Jail Cat", "CULO": "CULO", "CULOETH": "CULO", - "CULT": "Cult DAO", + "CULT": "Milady Cult Coin", + "CULTDAO": "Cult DAO", "CULTUR": "Cultur", "CUM": "Cumbackbears", "CUMINU": "CumInu", @@ -3812,6 +3961,7 @@ "CYBERWAY": "CyberWay", "CYBONK": "CYBONK", "CYBR": "CYBR", + "CYBRO": "Cybro Token", "CYC": "Cyclone Protocol", "CYCAT": "Chi Yamada Cat", "CYCE": "Crypto Carbon Energy", @@ -3910,13 +4060,15 @@ "DAO1": "DAO1", "DAOACT": "ACT", "DAOB": "DAOBet", + "DAOLITY": "Daolity", "DAOP": "Dao Space", "DAOSOL": "MonkeDAO", "DAOVC": "DAO.VC", "DAOX": "Daox", - "DAPP": "LiquidApps", + "DAPP": "Pencils Protocol", "DAPPSY": "Dappsy", "DAPPT": "Dapp Token", + "DAPPTOKEN": "LiquidApps", "DAPPX": "dAppstore", "DAPS": "DAPS Coin", "DAR": "Mines of Dalarnia", @@ -3929,9 +4081,10 @@ "DARED": "Daredevil Dog", "DARICO": "Darico", "DARIK": "Darik", - "DARK": "Dark Frontiers", + "DARK": "Dark Eclipse", "DARKCOIN": "Dark", "DARKEN": "Dark Energy Crystals", + "DARKF": "Dark Frontiers", "DARKMAGACOIN": "DARK MAGA", "DARKT": "Dark Trump", "DARKTOKEN": "DarkToken", @@ -3961,6 +4114,7 @@ "DAVIS": "Davis Cup Fan Token", "DAVP": "Davion", "DAW": "DAWKOINS", + "DAWAE": "DaWae", "DAWCURRENCY": "Daw Currency", "DAWG": "Dawg Coin", "DAWGS": "SpaceDawgs", @@ -4050,6 +4204,7 @@ "DEBT": "The Debt Box", "DEC": "Decentr", "DECENTRALG": "Decentral Games ICE", + "DECENTRALIZED": "DECENTRALIZED", "DECHAT": "Dechat", "DECI": "Maximus DECI", "DECL": "Decimal token", @@ -4074,9 +4229,11 @@ "DEEPSEEKR1": "DeepSeek R1", "DEER": "ToxicDeer Finance", "DEERSEIZED": "Deer Seized by US Government", + "DEESSE": "Deesse", "DEEX": "DEEX", "DEEZ": "DEEZ NUTS", - "DEFAI": "DeFAI", + "DEFAI": "DEFAI", + "DEFAIDAO": "DeFAI", "DEFC": "Defi Coin", "DEFEND": "Blockdefend AI", "DEFI": "DeFi", @@ -4140,7 +4297,8 @@ "DERO": "Dero", "DERP": "Derp", "DES": "DeSpace Protocol", - "DESCI": "DeSci Meme", + "DESCI": "SUI Desci Agents", + "DESCIMEME": "DeSci Meme", "DESI": "Desico", "DESO": "Decentralized Social", "DESTINY": "Destiny", @@ -4241,9 +4399,10 @@ "DIA": "DIA", "DIAB": "Diablo IV Solana", "DIABLO": "Diablo IV", - "DIAM": "Diamond", + "DIAM": "DIAM", "DIAMND": "Projekt Diamond", "DIAMO": "Diamond Launch", + "DIAMON": "Diamond", "DIAMOND": "Diamond Coin", "DIAMONDINU": "Diamond", "DIBBLE": "Dibbles", @@ -4287,13 +4446,16 @@ "DIM": "DIMCOIN", "DIME": "DimeCoin", "DIMO": "DIMO", - "DIN": "Dinero", + "DIN": "DIN", + "DINE": "Dinero", "DINERO": "Dinero", "DINEROBET": "Dinerobet", "DINGER": "Dinger Token", "DINGO": "Dingocoin", - "DINO": "DinoSwap", + "DINNER": "Trump Dinner", + "DINO": "DinoLFG", "DINOS": "Dinosaur Inu", + "DINOSWAP": "DinoSwap", "DINT": "DinarTether", "DINU": "Dogey-Inu", "DINW": "Dinowars", @@ -4354,7 +4516,7 @@ "DMAGA": "Dark MAGA", "DMAIL": "DMAIL Network", "DMAR": "DMarket", - "DMC": "Dream21", + "DMC": "Datamall Coin", "DMCC": "DiscoverFeed", "DMCH": "DARMA Cash", "DMCK": "Diamond Castle", @@ -4366,6 +4528,7 @@ "DMLG": "Demole", "DMOD": "Demodyfi Token", "DMOON": "Dollarmoon", + "DMR": "dmr", "DMS": "Documentchain", "DMT": "Dream Machine Token", "DMTC": "Demeter Chain", @@ -4405,6 +4568,7 @@ "DOCK": "Dock.io", "DOCSWAP": "Dex on Crypto", "DOCT": "DocTailor", + "DOCTO": "DoctorX", "DOD": "Day Of Defeat 2.0", "DOD100": "Day of Defeat Mini 100x", "DODI": "DoubleDice", @@ -4429,6 +4593,7 @@ "DOGE20": "Doge 2.0", "DOGEAI": "DOGEai", "DOGEB": "DogeBonk", + "DOGEBASE": "Doge Base", "DOGEBNB": "DogeBNB", "DOGEC": "DogeCash", "DOGECAST": "Dogecast", @@ -4446,6 +4611,7 @@ "DOGEFATHER": "Dogefather", "DOGEFORK": "DogeFork", "DOGEGF": "DogeGF", + "DOGEGOV": "Department Of Government Efficiency (dogegov.com)", "DOGEGROK": "Doge Grok", "DOGEGROKAI": "Doge Of Grok AI", "DOGEI": "Dogei", @@ -4485,6 +4651,7 @@ "DOGIN": "Doginhood", "DOGINC": "dog in cats world", "DOGINME": "doginme", + "DOGINWOTAH": "doginwotah", "DOGIRA": "Dogira", "DOGK": "Dagknight Dog", "DOGLAI": "Doglaikacoin", @@ -4514,13 +4681,14 @@ "DOLLARCOIN": "DollarCoin", "DOLLUR": "Dollur Go Brrr", "DOLLY": "DOLLY", + "DOLO": "Dolomite", "DOLPHY": "Dolphy", "DOLZ": "DOLZ", - "DOM": "Ancient Kingdom", + "DOM": "DomusAI", "DOME": "Everdome", "DOMI": "Domi", "DOMO": "Dony Montana", - "DON": "Donnie Finance", + "DON": "TheDonato Token", "DONA": "DONASWAP", "DONAL": "Donald Pump", "DONALD": "DONALD TRUMP", @@ -4532,11 +4700,13 @@ "DONJR": "Don Jr.", "DONK": "Don-key", "DONKE": "DONKE", + "DONNIEFIN": "Donnie Finance", "DONS": "The Dons", "DONT": "Donald Trump (dont.cash)", "DONU": "Donu", "DONUT": "Donut", "DONUTS": "The Simpsons", + "DOOD": "Doodles", "DOODI": "Doodipals", "DOODOO": "Doodoo", "DOOGLE": "Doogle", @@ -4574,6 +4744,7 @@ "DP": "DigitalPrice", "DPAD": "Dpad Finance", "DPAY": "Devour", + "DPCORE": "DeepCore AI", "DPDBC": "PDBC Defichain", "DPET": "My DeFi Pet", "DPEX": "DPEX", @@ -4593,11 +4764,12 @@ "DPX": "Dopex", "DPY": "Delphy", "DQQQ": "Invesco QQQ Trust Defichain", - "DRA": "DraculaCoin", + "DRA": "Decentralized Retirement Account", "DRAC": "DRAC Network", "DRACE": "DeathRoad", "DRACO": "DT Token", "DRACOO": "DracooMaster", + "DRACULA": "Dracula", "DRAFTC": "Draftcoin", "DRAGGY": "Draggy", "DRAGON": "Dragon", @@ -4617,13 +4789,15 @@ "DRCT": "Ally Direct", "DRE": "DoRen", "DREAM": "DREAM", + "DREAM21": "Dream21", "DREAMS": "Dreams Quest", "DREP": "DREP", "DRF": "Drife", "DRG": "Dragon Coin", "DRGN": "Dragonchain", "DRIFT": "Drift protocol", - "DRINK": "DrinkChain", + "DRINK": "DRINK", + "DRINKCHAIN": "DrinkChain", "DRIP": "Metadrip", "DRIPNET": "Drip Network", "DRIV": "DRIVEZ", @@ -4734,6 +4908,7 @@ "DUO": "ParallelCoin", "DUOLINGOAI": "DUOLINGO AI", "DUOT": "DUO Network", + "DUPE": "Dupe", "DUREV": "Povel Durev", "DUROV": "FREE DUROV", "DURTH": "iShares MSCI World ETF Tokenized Stock Defichain", @@ -4761,6 +4936,7 @@ "DVT": "DeVault", "DVTC": "DivotyCoin", "DVX": "Derivex", + "DWAIN": "DWAIN", "DWARFY": "Dwarfy", "DWARS": "Dynasty Wars", "DWC": "Digital Wallet", @@ -4817,6 +4993,7 @@ "E1INCH": "1inch (Energi Bridge)", "E21": "E21 Coin", "E2C": "Electronic Energy Coin", + "E4C": "E4C", "E8": "Energy8", "EA": "EagleCoin", "EAC": "Education Assessment Cult", @@ -4828,11 +5005,14 @@ "EAI": "Eagle AI", "EARLY": "Early Risers", "EARLYF": "EarlyFans", - "EARN": "EarnGuild", + "EARN": "Earn Network", "EARNB": "Earn BTC", + "EARNGUILD": "EarnGuild", + "EARNM": "EARNM", "EARTH": "Earth Token", "EARTHCOIN": "EarthCoin", "EASYF": "EasyFeedback", + "EASYMINE": "EasyMine", "EAT": "EDGE Activity Token", "EATH": "Eartherium", "EAURIC": "Eauric", @@ -4873,7 +5053,8 @@ "ECI": "Euro Cup Inu", "ECL": "ECLAT", "ECLD": "Ethernity Cloud", - "ECLIP": "Eclipse", + "ECLIP": "Eclipse Fi", + "ECLIPSE": "Eclipse", "ECO": "Ormeus Ecosystem", "ECOB": "EcoBit", "ECOC": "ECOcoin", @@ -4881,6 +5062,7 @@ "ECOFI": "EcoFi", "ECOIN": "Ecoin", "ECOM": "Omnitude", + "ECOR": "Ecorpay token", "ECOREAL": "Ecoreal Estate", "ECOTERRA": "ecoterra", "ECOX": "ECOx", @@ -4902,7 +5084,9 @@ "EDEXA": "edeXa Security Token", "EDFI": "EdFi", "EDG": "Edgeless", - "EDGE": "EDGE", + "EDGE": "Definitive", + "EDGEN": "LayerEdge", + "EDGENET": "EDGE", "EDGESOL": "Edgevana Staked SOL", "EDGEW": "Edgeware", "EDGT": "Edgecoin", @@ -4924,6 +5108,7 @@ "EDWIN": "Edwin", "EDX": "Equilibrium", "EEFS": "Eefs", + "EEG": "EEG Token", "EER": "Ethereum eRush", "EETH": "ether fi", "EFBAI": "EuroFootball AI", @@ -4954,6 +5139,7 @@ "EGGY": "EGGY", "EGI": "eGame", "EGL": "The Eagle Of Truth", + "EGL1": "EGL1", "EGLD": "eGold", "EGO": "Paysenger EGO", "EGOCOIN": "EGOcoin", @@ -4971,6 +5157,7 @@ "EHRT": "Eight Hours Token", "EIFI": "EIFI FINANCE", "EIGEN": "EigenLayer", + "EIGENP": "Eigenpie", "EIM": "Expert Infra", "EIQT": "IQ Prediction", "EJAC": "EJA Coin", @@ -4996,6 +5183,7 @@ "ELCASH": "Electric Cash", "ELD": "Electrum Dark", "ELDA": "Eldarune", + "ELDE": "Elderglade", "ELE": "Elementrem", "ELEC": "Electrify.Asia", "ELECTRON": "Electron (Atomicals)", @@ -5013,7 +5201,8 @@ "ELI": "GoCrypto", "ELIC": "Elicoin", "ELITE": "EthereumLite", - "ELIX": "Elixir", + "ELIX": "Elixir Games", + "ELIXI": "Elixir", "ELIXIR": "Starchi", "ELIZ": "Eliza (ai16zeliza)", "ELIZA": "Eliza (elizawakesup.ai)", @@ -5069,7 +5258,8 @@ "EMATIC": "Wrapped Polygon (Energi Bridge)", "EMAX": "EthereumMax", "EMB": "Overline Emblem", - "EMBER": "EmberCoin", + "EMBER": "Ember", + "EMBERCOIN": "EmberCoin", "EMBR": "Embr", "EMC": "Edge Matrix Computing", "EMC2": "Einsteinium", @@ -5092,7 +5282,7 @@ "EMR": "Emorya Finance", "EMRLD": "The Emerald Company", "EMRX": "Emirex Token", - "EMT": "EasyMine", + "EMT": "EMAIL Token", "EMU": "eMusic", "EMV": "Ethereum Movie Venture", "EMX": "EMX", @@ -5165,6 +5355,7 @@ "EPIX": "Byepix", "EPK": "EpiK Protocol", "EPS": "Ellipsis (OLD)", + "EPT": "Balance", "EPTT": "Evident Proof Transaction Token", "EPX": "Ellipsis X", "EPY": "Empyrean", @@ -5214,6 +5405,7 @@ "ES": "Era Swap Token", "ESAI": "Ethscan AI", "ESBC": "ESBC", + "ESCC": "Eos Stable Coin Chain", "ESCE": "Escroco Emerald", "ESCROW": "Cryptegrity DAO", "ESCU": "EYESECU AI", @@ -5373,11 +5565,12 @@ "EVIN": "Evin Token", "EVMOS": "Evmos", "EVN": "Evn Token", - "EVO": "EvoVerses", + "EVO": "Devomon", "EVOAI": "EvolveAI", "EVOC": "EVOCPLUS", "EVOL": "EVOL NETWORK", "EVOS": "EVOS", + "EVOVERSES": "EvoVerses", "EVR": "Everus", "EVRICE": "Evrice", "EVRM": "Evrmore", @@ -5429,6 +5622,7 @@ "EYE": "MEDIA EYE", "EYES": "Eyes Protocol", "EYETOKEN": "EYE Token", + "EYWA": "EYWA", "EZ": "EasyFi V2", "EZC": "EZCoin", "EZEIGEN": "Restaked EIGEN", @@ -5437,6 +5631,8 @@ "EZM": "EZMarket", "EZPZ": "Eazy Peazy", "EZSOL": "Renzo Restaked SOL", + "EZSWAP": "EZswap Protocol", + "EZSWAPV1": "EZswap Protocol v1", "EZT": "EZToken", "EZY": "EzyStayz", "ElvishMagic": "EMAGIC", @@ -5459,6 +5655,7 @@ "FACTOM": "Factom", "FACTORY": "ChainFactory", "FACTR": "Defactor", + "FACTRPAY": "FactR", "FADO": "FADO Go", "FAFO": "FAFO", "FAFOSOL": "Fafo", @@ -5486,6 +5683,8 @@ "FANC": "fanC", "FAND": "Fandomdao", "FANG": "FANG Token", + "FANS": "Fantasy Cash", + "FANTOM": "Fantom Maker", "FANV": "FanVerse", "FANX": "FrontFanz", "FANZ": "FanChain", @@ -5522,7 +5721,7 @@ "FAYD": "Fayda", "FAYRE": "Fayre", "FAZZ": "FazzCoin", - "FB": "Fenerbahçe Token", + "FB": "Fractal Bitcoin", "FBA": "Firebird Aggregator", "FBB": "FilmBusinessBuster", "FBG": "Fort Block Games", @@ -5555,6 +5754,7 @@ "FDM": "Fandom", "FDO": "Firdaos", "FDR": "French Digital Reserve", + "FDS": "Foodie Squirrel", "FDT": "Frutti Dino", "FDUSD": "First Digital USD", "FDX": "fidentiaX", @@ -5573,6 +5773,7 @@ "FELIX": "FelixCoin", "FELIX2": "Felix 2.0 ETH", "FEN": "First Ever NFT", + "FENE": "Fenerbahçe Token", "FENOMY": "Fenomy", "FENTANYL": "Chinese Communist Dragon", "FER": "Ferro", @@ -5608,6 +5809,7 @@ "FI": "Fideum", "FIA": "FIA Protocol", "FIBO": "FibSWAP DEx", + "FIBOS": "FIBOS", "FIBRE": "FIBRE", "FIC": "Filecash", "FID": "Fidira", @@ -5618,10 +5820,11 @@ "FIELD": "Fieldcoin", "FIERO": "Fieres", "FIF": "flokiwifhat", + "FIFA": "FIFA", "FIFTY": "FIFTYONEFIFTY", "FIG": "FlowCom", "FIGH": "FIGHT FIGHT FIGHT", - "FIGHT": "Crypto Fight Club", + "FIGHT": "Fight to MAGA", "FIGHTMAGA": "FIGHT MAGA", "FIGHTPEPE": "FIGHT PEPE", "FIGHTRUMP": "FIGHT TRUMP", @@ -5630,6 +5833,7 @@ "FIL": "FileCoin", "FILDA": "Filda", "FILES": "Solfiles", + "FILEST": "FileStar", "FILL": "Fillit", "FILM": "Filmpass", "FILST": "Filecoin Standard Hashrate Token", @@ -5646,6 +5850,7 @@ "FINK": "FINK", "FINN": "Huckleberry", "FINOM": "Finom FIN Token", + "FINOMNOM": "Finom NOM Token", "FINS": "AutoShark DEX", "FINT": "FintraDao", "FINU": "Formula Inu", @@ -5656,6 +5861,7 @@ "FIRA": "Defira", "FIRE": "Matr1x Fire", "FIRECOIN": "FireCoin", + "FIREP": "Fire Protocol", "FIREW": "Fire Wolf", "FIRO": "Firo", "FIRSTHARE": "FirstHare", @@ -5669,6 +5875,7 @@ "FISTBUMP": "FistBump", "FIT": "Financial Investment Token", "FITC": "Fitcoin", + "FITCOIN": "FITCOIN", "FITFI": "Step App", "FITT": "Fitmint", "FIU": "beFITTER", @@ -5697,6 +5904,7 @@ "FLAS": "Flas Exchange Token", "FLASH": "Flashstake", "FLASHC": "FLASH coin", + "FLASHT": "FlashToken", "FLAVIA": "Flavia Is Online", "FLAY": "Flayer", "FLC": "FlowChainCoin", @@ -5813,10 +6021,11 @@ "FNX": "FinNexus", "FNXAI": "Finanx AI", "FNZ": "Fanzee", - "FO": "FIBOS", + "FO": "Official FO", "FOA": "Fragments of arker", "FOAM": "Foam", "FOC": "TheForce Trade", + "FOCAI": "focai.fun", "FOCV": "FOCV", "FODL": "Fodl Finance", "FOF": "Future Of Fintech", @@ -5828,8 +6037,11 @@ "FOIN": "Foin", "FOL": "Folder Protocol", "FOLD": "Manifold Finance", + "FOLGORYUSD": "FolgoryUSD", + "FOLGORYUSDV1": "FolgoryUSD", "FOLO": "Alpha Impact", - "FOMO": "FOMO BULL CLUB", + "FOM": "FOMO BULL CLUB", + "FOMO": "Fomo", "FOMON": "FOMO Network", "FOMOSOL": "FOMOSolana", "FON": "INOFI", @@ -5870,6 +6082,7 @@ "FOTA": "Fight Of The Ages", "FOTO": "Unique Photo", "FOTTIE": "Fottie", + "FOU": "Four", "FOUND": "ccFound", "FOUNTAIN": "Fountain", "FOUR": "4", @@ -5885,7 +6098,7 @@ "FOXV2": "FoxFinanceV2", "FOXXY": "FOXXY", "FOXY": "Foxy", - "FP": "Fren Pet", + "FP": "Forgotten Playland", "FPAD": "FantomPAD", "FPC": "Futurepia", "FPEPE": "Based Father Pepe", @@ -5893,10 +6106,12 @@ "FPI": "Frax Price Index", "FPIBANK": "FPIBANK", "FPIS": "Frax Price Index Share", + "FPS": "WEB3WAR Token", "FQS": "FQSwap V2", "FR": "Freedom Reserve", "FRA": "Findora", "FRAC": "FractalCoin", + "FRANK": "Frank", "FRATT": "Frogg and Ratt", "FRAX": "Frax", "FRAZ": "FrazCoin", @@ -5914,6 +6129,7 @@ "FREE": "FREE coin", "FREED": "FreedomCoin", "FREEDO": "Freedom", + "FREEDOG": "Freedogs", "FREEDOM": "Freedom Protocol Token", "FREELA": "DecentralFree", "FREEPAVEL": "Free Pavel", @@ -5923,6 +6139,7 @@ "FREN": "FREN", "FRENC": "Frencoin", "FRENCH": "French On Base", + "FRENPET": "Fren Pet", "FRENS": "Farmer Friends", "FRESCO": "Fresco", "FRF": "France REV Finance", @@ -5946,10 +6163,12 @@ "FROGCEO": "Frog Ceo", "FROGE": "Froge Finance", "FROGEX": "FrogeX", + "FROGGER": "FROGGER", "FROGGY": "Froggy", "FROGLIC": "Pink Hood Froglicker", "FROGO": "Frogo", "FROK": "Frok.ai", + "FROKAI": "FrokAI", "FRONK": "Fronk", "FRONT": "Frontier", "FROP": "Popo The Frog", @@ -5999,7 +6218,7 @@ "FTO": "FuturoCoin", "FTON": "Fanton", "FTP": "FuturePoints", - "FTR": "FactR", + "FTR": "Fautor", "FTRB": "Faith Tribe", "FTRC": "FutureCoin", "FTS": "Fortress Lending", @@ -6016,7 +6235,8 @@ "FUBAO": "FUBAO", "FUCK": "Fuck Token", "FUCKTRUMP": "FUCK TRUMP", - "FUD": "FUD.finance", + "FUD": "Fud the Pug", + "FUDFINANCE": "FUD.finance", "FUEGO": "FUEGO", "FUEL": "Fuel Network", "FUELX": "Fuel", @@ -6043,6 +6263,7 @@ "FUNK": "Cypherfunks Coin", "FUR": "Furio", "FURIE": "Matt Furie", + "FURM": "Furmula", "FURU": "Furucombo", "FURUKURU": "Furukuru", "FURY": "Engines of Fury", @@ -6051,6 +6272,7 @@ "FUSD": "Fantom USD", "FUSDC": "Fluidity", "FUSE": "Fuse Network Token", + "FUSIO": "FUSIO", "FUSION": "FusionBot", "FUSO": "Fusotao", "FUT": "FuturesAI", @@ -6070,6 +6292,7 @@ "FWT": "Freeway Token", "FWW": "Farmers World Wood", "FX": "Function X", + "FXAKV": "Akiverse Governance", "FXB": "FxBox", "FXC": "Flexacoin", "FXD": "Fathom Dollar", @@ -6084,6 +6307,7 @@ "FXUSD": "f(x) Protocol fxUSD", "FXY": "Floxypay", "FYD": "FYDcoin", + "FYDE": "Fyde", "FYDO": "Fly Doge", "FYN": "Affyn", "FYP": "FlypMe", @@ -6127,6 +6351,7 @@ "GAMBIT": "Gambit", "GAMBL": "Metagamble", "GAME": "GameBuild", + "GAME5BALL": "Game 5 BALL", "GAMEBUD": "GAMEBUD", "GAMEBYV": "GAME by Virtuals", "GAMEC": "Game", @@ -6145,6 +6370,7 @@ "GAMESTOP": "GameStop", "GAMESTUMP": "GAMESTUMP", "GAMET": "GAME Token", + "GAMETA": "Gameta", "GAMEX": "GameX", "GAMI": "GAMI World", "GAMIN": "Gaming Stars", @@ -6170,8 +6396,10 @@ "GASG": "Gasgains", "GASP": "GASP", "GASPCOIN": "gAsp", + "GASS": "Gasspas", "GASTRO": "GastroCoin", - "GAT": "GATCOIN", + "GAT": "Gather", + "GATCOIN": "GATCOIN", "GATE": "GATENet", "GATEWAY": "Gateway Protocol", "GATHER": "Gather", @@ -6238,9 +6466,10 @@ "GE": "GEchain", "GEA": "Goldea", "GEAR": "Gearbox Protocol", - "GEC": "Geco.one", + "GEC": "Gecko Inu", "GECKO": "Gecko Coin", "GECKY": "Gecky", + "GECO": "GECOIN", "GEEK": "De:Lithe Last Memories", "GEEQ": "Geeq", "GEF": "GemFlow", @@ -6283,6 +6512,7 @@ "GEOJ": "Geojam", "GEOL": "GeoLeaf", "GEON": "Geon", + "GEORGE": "GEORGE", "GEP": "Gaia", "GER": "GermanCoin", "GERA": "Gera Coin", @@ -6395,6 +6625,7 @@ "GIV": "Giveth", "GIVE": "GiveCoin", "GIZ": "GIZMOcoin", + "GIZA": "Giza", "GIZMO": "GIZMO•IMAGINARY• KITTEN (Runes)", "GJC": "Global Jobcoin", "GKAPPA": "Golden Kappa", @@ -6423,6 +6654,7 @@ "GLIESE": "GlieseCoin", "GLINK": "Gemlink", "GLINT": "BeamSwap", + "GLIZZY": "GLIZZY", "GLM": "Golem Network Token", "GLMR": "Moonbeam", "GLMV1": "Golem Network Token v1", @@ -6480,7 +6712,7 @@ "GMX": "GMX", "GN": "GN", "GNBT": "Genebank Token", - "GNC": "Greencoin", + "GNC": "Greenchie", "GND": "GND Protoco", "GNFT": "GNFT", "GNG": "GreenGold", @@ -6498,13 +6730,16 @@ "GNX": "Genaro Network", "GNY": "GNY", "GO": "GoChain", + "GO4": "GameonForge", "GOA": "GoaCoin", - "GOAL": "GOAL token", + "GOAL": "TopGoal Token", "GOALBON": "Goal Bonanza", "GOALS": "UnitedFans", + "GOALTOKEN": "GOAL token", "GOAT": "Goatseus Maximus", "GOATAI": "GOAT AI", "GOATCOIN": "Goat", + "GOATS": "GOATS", "GOATSE": "GOATSE", "GOB": "Goons of Balatroon", "GOC": "GoCrypto", @@ -6514,12 +6749,14 @@ "GODCAT": "GodcatExplodingKittens", "GODE": "Gode Chain", "GODEX": "GUARD OF DECENT", - "GODL": "GODL", + "GODL": "RoOLZ", + "GODLAPP": "GODL", "GODS": "Gods Unchained", "GODZ": "Cryptogodz", "GOETH": "Algomint", "GOF": "Golff", "GOFF": "Gift Off Token", + "GOFINDXR": "Gofind XR", "GOFX": "GooseFX", "GOG": "Guild of Guardians", "GOGLZ": "GOGGLES", @@ -6537,6 +6774,7 @@ "GOLDCOINETH": "Gold", "GOLDE": "GOLDEN AGE", "GOLDEN": "Golden Inu", + "GOLDENC": "GoldenCat", "GOLDENG": "Golden Goose", "GOLDF": "Gold Fever", "GOLDMIN": "GoldMiner", @@ -6571,8 +6809,10 @@ "GOOGLY": "Googly Cat", "GOOMPY": "Goompy by Matt Furie", "GOON": "Goonies", + "GOONC": "gooncoin", "GOP": "The Republican Party", "GOPX": "GOPX Token", + "GOR": "@gork", "GORA": "Gora", "GOREC": "GoRecruit", "GORGONZOLA": "Heroes 3 Foundation", @@ -6580,6 +6820,7 @@ "GORILLA": "Gorilla", "GORILLAD": "Gorilla Diamond", "GORILLAINU": "Gorilla Inu", + "GORK": "New XAI gork", "GORPLE": "GorplesCoin", "GOS": "Gosama", "GOSS": "GOSSIP-Coin", @@ -6601,6 +6842,7 @@ "GPAWS": "Golden Paws", "GPBP": "Genius Playboy Billionaire Philanthropist", "GPCX": "Good Person Coin", + "GPECTRA": "Pectra Giraffe", "GPKR": "Gold Poker", "GPL": "Gold Pressed Latinum", "GPLX": "Gplx", @@ -6643,6 +6885,7 @@ "GREARN": "GrEarn", "GREE": "Green God Candle", "GREEN": "GreenX", + "GREENCOIN": "Greencoin", "GREENH": "Greenheart CBD", "GREENMMT": "Green Mining Movement Token", "GREENPOWER": "GreenPower", @@ -6701,10 +6944,12 @@ "GROOOOOK": "Groooook", "GROOVE": "GROOVE", "GROW": "Grow Token", + "GROWAI": "SocialGrowAI", "GROWNCOIN": "GrownCoin", "GROWTH": "GROWTH DeFi", "GROYPER": "Groyper", "GRP": "Grape", + "GRPH": "Soul Graph", "GRPL": "Golden Ratio Per Liquidity", "GRS": "Groestlcoin", "GRT": "The Graph", @@ -6778,6 +7023,7 @@ "GUILD": "BlockchainSpace", "GUISE": "GUISE", "GULF": "GulfCoin", + "GULL": "GULL", "GUM": "Gourmet Galaxy", "GUMMIES": "GUMMIES", "GUMMY": "GUMMY", @@ -6805,10 +7051,12 @@ "GWGW": "GoWrap", "GWT": "Galaxy War", "GX": "GameX", + "GX3": "GX3ai", "GXA": "Galaxia", "GXC": "GXChain", "GXE": "XENO Governance", "GXT": "Gem Exchange And Trading", + "GYAT": "Gyat Coin", "GYEN": "GYEN", "GYM": "GYM Token", "GYMNET": "Gym Network", @@ -6839,6 +7087,7 @@ "HACHIKO": "Hachiko Inu Token", "HACHIONB": "Hachi On Base", "HACK": "HACK", + "HAEDAL": "Haedal Protocol", "HAGGIS": "New Born Haggis Pygmy Hippo", "HAHA": "Hasaki", "HAI": "Hacken Token", @@ -6848,20 +7097,23 @@ "HAKU": "HakuSwap", "HAL": "Halcyon", "HALF": "0.5X Long Bitcoin Token", + "HALFP": "Half Pizza", "HALFSHIT": "0.5X Long Shitcoin Index Token", "HALLO": "Halloween Coin", "HALLOWEEN": "HALLOWEEN", "HALO": "Halo Coin", "HALOPLATFORM": "Halo Platform", "HAM": "Hamster", + "HAMBURG": "Hamburg Eyes", "HAMI": "Hamachi Finance", "HAMMY": "SAD HAMSTER", "HAMS": "HamsterCoin", - "HAMSTER": "Space Hamster", + "HAMSTER": "Hamster", "HAMSTERB": "HamsterBase", "HAMSTR": "Hamster Coin", "HAN": "HanChain", - "HANA": "Hanacoin", + "HANA": "Hana", + "HANACOIN": "Hanacoin", "HANAETHCTO": "HANA", "HAND": "ShowHand", "HANDY": "Handy", @@ -6871,6 +7123,7 @@ "HAP": "Happy Train", "HAPI": "HAPI", "HAPPY": "Happy Cat", + "HAPPYC": "HappyCoin", "HAR": "Harambe Coin", "HARAM": "HARAM", "HARAMBE": "Harambe on Solana", @@ -6878,6 +7131,7 @@ "HARE": "Hare Token", "HAREPLUS": "Hare Plus", "HAROLD": "Harold", + "HAROLDDUCK": "Harold", "HARPER": "Harper", "HARR": "HARRIS DOGS", "HARRIS": "KAMALA HARRIS", @@ -6889,9 +7143,10 @@ "HASBIK": "Hasbulla", "HASH": "Provenance Blockchain", "HASHAI": "HashAI", + "HASHNET": "HashNet BitEco", "HASHT": "HASH Token", "HASUI": "Haedal", - "HAT": "Hawala.Exchange", + "HAT": "TOP HAT", "HATAY": "Hatayspor Token", "HATCHY": "Hatchyverse", "HATI": "Hati", @@ -6899,6 +7154,7 @@ "HAVOC": "Havoc", "HAVY": "Havy", "HAW": "Hawk Tuah", + "HAWALA": "HAWALA", "HAWK": "Hawksight", "HAWKCITY": "Hawk", "HAWKPTAH": "Hawk Ptah", @@ -6975,12 +7231,13 @@ "HEM": "Hemera", "HEMAN": "HE-MAN", "HEMULE": "Hemule", + "HENAI": "HenjinAI Token", "HENG": "HengCoin", "HENL": "henlo", "HENLO": "Henlo", "HENLOV1": "Henlo v1", "HEP": "Health Potion", - "HER": "Hero Node", + "HER": "Her.AI", "HERA": "Hero Arena", "HERAF": "Hera Finance", "HERB": "HerbCoin", @@ -6995,6 +7252,7 @@ "HEROESAI": "HEROES AI", "HEROESC": "HeroesChained", "HEROI": "Heroic Saga Shiba", + "HERONODE": "Hero Node", "HET": "HavEther", "HETA": "HetaChain", "HETH": "Huobi Ethereum", @@ -7040,6 +7298,7 @@ "HIGAZERS": "hiGAZERS", "HIGH": "Highstreet", "HIGHER": "Higher", + "HIGHKEY": "HighKey", "HIH": "HiHealth", "HIKARI": "Hikari Protocol", "HILL": "President Clinton", @@ -7074,6 +7333,7 @@ "HITOP": "Hitop", "HIUNDEAD": "hiUNDEAD", "HIVE": "Hive", + "HIVP": "HiveSwap", "HIX": "HELIX Orange", "HK": "Hongkong", "HKB": "HongKong BTC bank", @@ -7117,7 +7377,7 @@ "HMTT": "Hype Meme Token", "HMU": "hit meeee upp", "HMX": "HMX", - "HNB": "HashNet BitEco", + "HNB": "HNB Protocol", "HNC": "Hellenic Coin", "HNCN": "Huncoin", "HND": "Hundred Finance", @@ -7148,12 +7408,14 @@ "HOKK": "Hokkaidu Inu", "HOL": "Hololoot", "HOLA": "Hola Token", - "HOLD": "HOLD", + "HOLD": "Holdcoin", + "HOLDCO": "HOLD", "HOLDEX": "Holdex Finance", "HOLDON4": "HoldOn4DearLife", + "HOLDS": "Holdstation", "HOLY": "Holy Trinity", "HOM": "Homeety", - "HOME": "OtterHome", + "HOME": "Home", "HOMEBREW": "Homebrew Robotics Club", "HOMER": "Homer Simpson", "HOMERB": "Homer BSC", @@ -7187,6 +7449,7 @@ "HORUS": "HorusPay", "HOS": "Hotel of Secrets", "HOSHI": "Dejitaru Hoshi", + "HOSICO": "Hosico Cat", "HOSKY": "Hosky", "HOSTAI": "Host AI", "HOT": "Holo", @@ -7196,21 +7459,23 @@ "HOTN": "HotNow", "HOTT": "HOT Token", "HOUND": "BaseHoundBot by Virtuals", - "HOUSE": "Klaymore Stakehouse", + "HOUSE": "Housecoin", "HOW": "HowInu", "HOWL": "Coyote", "HP": "HeroPark", "HPAD": "HarmonyPad", "HPAY": "HedgePay", "HPB": "High Performance Blockchain", - "HPC": "HappyCoin", + "HPC": "Helal Para Coin", "HPL": "HappyLand (HPL)", "HPN": "HyperonChain", "HPO": "Hippocrat", + "HPOWSB10I": "HarryPotterObamaWallStreetBets10Inu", "HPT": "Huobi Pool Token", "HPX": "HUPAYX", "HPY": "Hyper Pay", "HPYPEPE": "Happy Pepe Token", + "HQ": "Metaverse HQ", "HQR": "Hayya Qatar", "HQT": "HyperQuant", "HQX": "HOQU", @@ -7268,6 +7533,7 @@ "HUHCAT": "huhcat", "HULEZHI": "HU LE ZHI", "HUM": "Humanscape", + "HUMA": "Huma Finance", "HUMAI": "Humanoid AI", "HUMP": "Hump", "HUMV1": "Humanscape v1", @@ -7314,16 +7580,18 @@ "HYDROP": "Hydro Protocol", "HYGH": "HYGH", "HYN": "Hyperion", - "HYP": "HyperStake", + "HYP": "HyperX", "HYPC": "HyperCycle", "HYPE": "Hyperliquid", - "HYPER": "HyperChainX", + "HYPER": "Hyperlane", "HYPERAI": "HyperHash AI", + "HYPERC": "HyperChainX", "HYPERCOIN": "HyperCoin", "HYPERD": "HyperDAO", "HYPERIONX": "HyperionX", "HYPERS": "HyperSpace", "HYPERSKIDS": "HYPERSKIDS", + "HYPERSTAKE": "HyperStake", "HYPES": "Supreme Finance", "HYPEV1": "Hype v1", "HYPR": "Hypr Network", @@ -7340,6 +7608,7 @@ "I7": "ImpulseVen", "I9C": "i9 Coin", "IAG": "IAGON", + "IAGV1": "IAGON v1", "IAI": "inheritance Art", "IAM": "IAME Identity", "IAOMIN": "Yao Ming", @@ -7411,7 +7680,9 @@ "IDM": "IDM", "IDNA": "Idena", "IDO": "Idexo", - "IDOL": "IDOLINU", + "IDOL": "MEET48 Token", + "IDOLINU": "IDOLINU", + "IDOODLES": "IDOODLES", "IDORU": "Vip2Fan", "IDRISS": "IDRISS", "IDRT": "Rupiah Token", @@ -7461,8 +7732,10 @@ "ILLUMINAT": "Illuminat", "ILT": "iOlite", "ILV": "Illuvium", + "IMAGE": "Imagen AI", "IMARO": "IMARO", "IMAYC": "IMAYC", + "IMBREX": "Imbrex", "IMBTC": "The Tokenized Bitcoin", "IMC": "i Money Crypto", "IME": "Imperium Empires", @@ -7535,6 +7808,7 @@ "INFTT": "iNFT Token", "INFX": "Influxcoin", "ING": "Infinity Games", + "INIT": "Initia", "INJ": "Injective", "INK": "Ink", "INN": "Innova", @@ -7548,10 +7822,11 @@ "INRXV1": "INRx v1", "INS": "Insolar (Old Chain)", "INSANE": "InsaneCoin", + "INSANECOIN": "InsaneCoin", "INSANITY": "Insanity Coin", "INSC": "INSC (Ordinals)", "INSE": "INSECT", - "INSN": "Insane Coin", + "INSN": "Industry Sonic", "INSP": "Inspect", "INSPI": "InspireAI", "INSR": "Insurabler", @@ -7596,8 +7871,9 @@ "IOETH": "ioETH", "IOEX": "ioeX", "IOI": "IOI Token", - "ION": "Ionomy", + "ION": "Ionic", "IONC": "IONChain", + "IONOMY": "Ionomy", "IONP": "Ion Power Token", "IONX": "Charged Particles", "IONZ": "IONZ", @@ -7629,6 +7905,7 @@ "IPX": "InpulseX", "IQ": "IQ", "IQ50": "IQ50", + "IQ6900": "IQ6900", "IQC": "IQ.cash", "IQG": "IQ Global", "IQN": "IQeon", @@ -7668,6 +7945,7 @@ "IST": "Inter Stable Token", "ISTEP": "iSTEP", "ITA": "Italian National Football Team Fan Token", + "ITALIANROT": "Italian Brainrot", "ITALOCOIN": "Italocoin", "ITAM": "ITAM Games", "ITAMCUBE": "CUBE", @@ -7676,6 +7954,7 @@ "ITF": "Intelligent Trading", "ITG": "iTrust Governance", "ITGR": "Integral", + "ITHACA": "Ithaca Protocol", "ITHEUM": "Itheum", "ITL": "Italian Lira", "ITLR": "MiTellor", @@ -7724,6 +8003,7 @@ "J8T": "JET8", "J9BC": "J9CASINO", "JACK": "Jack Token", + "JACKPOT": "Solana Jackpot", "JACS": "JACS", "JACY": "JACY", "JADE": "Jade Protocol", @@ -7740,6 +8020,7 @@ "JANE": "JaneCoin", "JANET": "Janet", "JANI": "JANI", + "JANITOR": "Janitor", "JANRO": "Janro The Rat", "JAPAN": "Japan Open Chain", "JAR": "Jarvis+", @@ -7782,8 +8063,9 @@ "JEN": "JEN COIN", "JENNER": "Caitlyn Jenner", "JENSEN": "Jensen Huang", - "JERRY": "Jerry Inu", + "JERRY": "jerry", "JERRYINU": "JERRYINU", + "JERRYINUCOM": "Jerry Inu", "JES": "Jesus", "JEST": "Jester", "JESUS": "Jesus Coin", @@ -7863,6 +8145,7 @@ "JONESUSDC": "Jones USDC", "JOOPS": "JOOPS", "JOPER": "Joker Pepe", + "JOS": "JuliaOS", "JOSE": "Jose", "JOTCHUA": "Perro Dinero", "JOULE": "Joule", @@ -7877,6 +8160,7 @@ "JPD": "JackpotDoge", "JPEG": "JPEG'd", "JPGC": "JPGold Coin", + "JPMORGAN": "JPMorgan", "JPYC": "JPYC", "JPYX": "eToro Japanese Yen", "JRIT": "JERITEX", @@ -7898,6 +8182,7 @@ "JUIC": "Juice", "JUICE": "Juice Finance", "JUICEB": "Juice", + "JUICET": "Juice Town", "JUL": "Joule", "JULB": "JustLiquidity Binance", "JULD": "JulSwap", @@ -7954,6 +8239,7 @@ "KAILY": "Kailith", "KAIM": "Kai Meme", "KAINET": "KAINET", + "KAIRO": "Kairo", "KAITO": "KAITO", "KAKA": "KAKA NFT World", "KAKAXA": "KAKAXA", @@ -7972,6 +8258,7 @@ "KAMAL": "Kamala Harris", "KAMALA": "Kamala Harris", "KAMALAHARRIS": "KAMALA HARRIS", + "KAMB": "Kambria", "KAMLA": "KAMALAMA (kamalama.org)", "KAMPAY": "KamPay", "KAN": "Bitkan", @@ -7979,6 +8266,7 @@ "KANG3N": "Kang3n", "KANGAL": "Kangal", "KANGO": "KANGO", + "KAON": "Kaon", "KAP": "KAP Games", "KAPPA": "Kappa", "KAPPY": "Kappy", @@ -8000,7 +8288,7 @@ "KASPY": "KASPY", "KASSIAHOME": "Kassia Home", "KASTA": "Kasta", - "KAT": "Kambria", + "KAT": "Karat", "KATA": "Katana Inu", "KATANA": "Katana Finance", "KATCHU": "Katchu Coin", @@ -8010,7 +8298,9 @@ "KAU": "Kinesis Gold", "KAVA": "Kava", "KAWA": "Kawakami Inu", + "KAWS": "Kaws", "KAYI": "Kayı", + "KBBB": "KILL BIG BEAUTIFUL BILL", "KBC": "Karatgold coin", "KBD": "Kyberdyne", "KBOND": "Klondike Bond", @@ -8022,7 +8312,8 @@ "KBX": "KuBitX", "KC": "Kernalcoin", "KCAKE": "KittyCake", - "KCAL": "Phantasma Energy", + "KCAL": "KCAL Token", + "KCALV2": "Phantasma Energy", "KCASH": "Kcash", "KCAT": "KING OF CATS", "KCATS": "KASPA CATS", @@ -8045,6 +8336,7 @@ "KEEMJONG": "KEEM JONG UNN", "KEEP": "Keep Network", "KEES": "Korea Entertainment Education & Shopping", + "KEETARD": "Keetard", "KEI": "Keisuke Inu", "KEIRA": "Keira", "KEK": "KekCoin", @@ -8114,7 +8406,8 @@ "KILLSOLANA": "KillSolana", "KILO": "KiloEx", "KILT": "KILT Protocol", - "KIM": "King Money", + "KIM": "KIM Token", + "KIMA": "Kima", "KIMBO": "Kimbo", "KIMCHI": "KIMCHI.finance", "KIMIAI": "Kimi AI Agent", @@ -8122,16 +8415,19 @@ "KIND": "Kind Ads", "KINE": "Kine Protocol", "KINET": "KinetixFi", - "KING": "KING", + "KING": "LRT Squared", "KING93": "King93", "KINGB": "King Bean", "KINGBONK": "King Bonk", "KINGCAT": "King Cat", + "KINGCOIN": "KING", "KINGD": "Kingdom of Ants", "KINGDOG": "King Dog Inu", + "KINGDOM": "KING", "KINGDOMQUEST": "Kingdom Quest", "KINGF": "King Finance", "KINGGROK": "King Grok", + "KINGMONEY": "King Money", "KINGNEIRO": "King Neiro", "KINGO": "King of memes", "KINGOF": "King Of Memes", @@ -8178,6 +8474,7 @@ "KKT": "Kingdom Karnage", "KLAP": "Klap Finance", "KLAUS": "Klaus", + "KLAYMORE": "Klaymore Stakehouse", "KLC": "KiloCoin", "KLD": "Koduck", "KLEE": "KleeKai", @@ -8225,6 +8522,7 @@ "KNUT": "Knut From Zoo", "KNW": "Knowledge", "KOAI": "KOI", + "KOBAN": "KOBAN", "KOBE": "Shabu Shabu", "KOBO": "KoboCoin", "KODA": "Koda Cryptocurrency", @@ -8240,7 +8538,9 @@ "KOIP": "KoiPond", "KOJI": "Koji", "KOK": "KOK Coin", - "KOKO": "KokoSwap", + "KOKO": "KOALA AI", + "KOKOK": "KoKoK The Roach", + "KOKOSWAP": "KokoSwap", "KOL": "Kollect", "KOLANA": "KOLANA", "KOLION": "Kolion", @@ -8259,7 +8559,9 @@ "KORC": "King of Referral Coin", "KORE": "KORE Vault", "KOREC": "Kore", + "KORI": "Kori The Pom", "KORRA": "KORRA", + "KOS": "KONTOS", "KOSS": "Koss", "KOTARO": "KOTARO", "KOTO": "Koto", @@ -8292,7 +8594,7 @@ "KRL": "Kryll", "KRM": "Karma", "KRN": "KRYZA Network", - "KRO": "Betoken", + "KRO": "Kroma", "KROM": "Kromatika", "KROME": "KROME Shares", "KRONE": "Kronecoin", @@ -8407,12 +8709,15 @@ "LAELAPS": "Laelaps", "LAFFIN": "Laffin Kamala", "LAI": "LayerAI", - "LAIKA": "Laika Protocol", + "LAIKA": "LAIKA", + "LAIKAPROTOCOL": "Laika Protocol", "LAINESOL": "Laine Staked SOL", + "LAIR": "Lair", "LAKE": "Data Lake", "LALA": "LaLa World", "LAMB": "Lambda", "LAMBO": "LAMBO", + "LAMPIX": "Lampix", "LAN": "Lanify", "LANA": "LanaCoin", "LANC": "Lanceria", @@ -8427,6 +8732,7 @@ "LANDWOLFETH": "Landwolf", "LANDWU": "LandWu", "LANE": "LaneAxis", + "LANLAN": "LanLan Cat", "LAO": "LC Token", "LAOS": "LAOS Network", "LAPI": "Lapis Inu", @@ -8445,6 +8751,8 @@ "LATX": "Latium", "LAUGHCOIN": "Laughcoin", "LAUNCH": "Launchblock.com", + "LAUNCHCOIN": "Launch Coin on Believe", + "LAUNCHMOBY": "Moby", "LAVA": "Lava Network", "LAVASWAP": "Lavaswap", "LAVAX": "LavaX Labs", @@ -8460,6 +8768,7 @@ "LAZYCAT": "LAZYCAT", "LB": "LoveBit", "LBA": "Cred", + "LBAI": "Lemmy The Bat", "LBC": "LBRY Credits", "LBK": "LBK", "LBL": "LABEL Foundation", @@ -8576,6 +8885,7 @@ "LGBT": "Let's Go Brandon Token", "LGBTQ": "LGBTQoin", "LGC": "LiveGreen Coin", + "LGCT": "Legacy Token", "LGCY": "LGCY Network", "LGD": "Legends Cryptocurrency", "LGG": "Let's Go Gambling", @@ -8595,6 +8905,7 @@ "LIBERA": "Libera Financial", "LIBERO": "Libero Financial", "LIBERTA": "The Libertarian Dog", + "LIBERTY": "Torch of Liberty", "LIBFX": "Libfx", "LIBRA": "Libra", "LIBRAP": "Libra Protocol", @@ -8602,6 +8913,7 @@ "LIC": "Ligercoin", "LICK": "PetLFG", "LICKER": "LICKER", + "LICKO": "LICKO", "LICO": "Liquid Collectibles", "LID": "Liquidity Dividends Protocol", "LIDER": "Lider Token", @@ -8665,6 +8977,7 @@ "LISAS": "Lisa Simpson", "LIST": "KList Protocol", "LISTA": "Lista DAO", + "LISTEN": "Listen", "LISUSD": "lisUSD", "LIT": "Litentry", "LITE": "Lite USD", @@ -8677,9 +8990,11 @@ "LITT": "LitLab Games", "LIV": "LiviaCoin", "LIVE": "TRONbetLive", + "LIVENCOIN": "LivenPay", "LIVESEY": "Dr. Livesey", "LIVESTARS": "Live Stars", "LIXX": "Libra Incentix", + "LIY": "Lily", "LIZ": "Lizus Payment", "LIZA": "Liza", "LIZARD": "LIZARD", @@ -8710,7 +9025,7 @@ "LMF": "Lamas Finance", "LMQ": "Lightning McQueen", "LMR": "Lumerin", - "LMT": "Lympo Market Token", + "LMT": "LIMITUS", "LMTOKEN": "LM Token", "LMWR": "LimeWire Token", "LMXC": "LimonX", @@ -8725,7 +9040,8 @@ "LNKC": "Linker Coin", "LNL": "LunarLink", "LNQ": "LinqAI", - "LNR": "Lunar", + "LNR": "LNR", + "LNRV2": "Lunar", "LNT": "Lottonation", "LNX": "Lunox Token", "LOA": "League of Ancients", @@ -8752,6 +9068,7 @@ "LOG": "Wood Coin", "LOGO": "LOGOS", "LOGOS": "LOGOSAI", + "LOGT": "Lord of Dragons Governance Token", "LOGX": "LogX Network", "LOIS": "Lois Token", "LOKA": "League of Kingdoms", @@ -8798,7 +9115,7 @@ "LOUD": "Loud Market", "LOULOU": "LOULOU", "LOV": "LoveChain", - "LOVE": "Deesse", + "LOVE": "Love Monster", "LOVELY": "Lovely finance", "LOVELYV1": "Lovely Inu Finance", "LOVESNOOPY": "I LOVE SNOOPY", @@ -8816,6 +9133,7 @@ "LPNT": "Luxurious Pro Network Token", "LPOOL": "Launchpool", "LPT": "Livepeer", + "LPTV1": "Livepeer v1", "LPV": "Lego Pepe Vision", "LPY": "LeisurePay", "LQ": "Liqwid Finance", @@ -8833,7 +9151,6 @@ "LRG": "Largo Coin", "LRN": "Loopring [NEO]", "LRT": "LandRocker", - "LRT2": "LRT Squared", "LSC": "LS Coin", "LSD": "Pontem Liquidswap", "LSDOGE": "LSDoge", @@ -8901,7 +9218,9 @@ "LUCKYSLP": "LuckysLeprecoin", "LUCRE": "Lucre", "LUCY": "Lucy", + "LUCYAI": "Pitch Lucy AI", "LUDO": "Ludo", + "LUDUS": "Ludus", "LUFC": "Leeds United Fan Token", "LUFFY": "Luffy", "LUFFYG": "Luffy G5", @@ -8915,6 +9234,7 @@ "LUMI": "LUMI Credits", "LUMIA": "Lumia", "LUMIO": "Solana Mascot", + "LUMO": "Lumo-8B-Instruct", "LUMOS": "Lumos", "LUN": "Lunyr", "LUNA": "Terra", @@ -8936,6 +9256,7 @@ "LUT": "Cinemadrom", "LUTETIUM": "Lutetium Coin", "LUX": "Lux Token", + "LUXAI": "Lux Token", "LUXCOIN": "LUXCoin", "LUXO": "Luxo", "LUXU": "Luxury Travel Token", @@ -8944,10 +9265,12 @@ "LVIP": "Limitless VIP", "LVL": "Level", "LVLUSD": "Level USD", + "LVLY": "LyvelyToken", "LVM": "LakeViewMeta", - "LVN": "LivenPay", + "LVN": "Levana Protocol", "LVVA": "Levva Protocol Token", "LVX": "Level01", + "LWA": "LUMIWAVE", "LWC": "Linework Coin", "LWF": "Local World Forwarders", "LX": "Moonlight", @@ -8964,10 +9287,13 @@ "LYK": "Loyakk Vega", "LYL": "LoyalCoin", "LYM": "Lympo", + "LYMPO": "Lympo Market Token", "LYN": "LYNCHPIN Token", "LYNK": "Lynked.World", - "LYNX": "Lynx", + "LYNX": "Lynex", + "LYNXCOIN": "Lynx", "LYO": "LYO Credit", + "LYP": "Lympid Token", "LYQD": "eLYQD", "LYR": "Lyra", "LYRA": "Lyra", @@ -8985,6 +9311,7 @@ "M2O": "M2O Token", "M3M3": "M3M3", "M87": "MESSIER", + "MA": "Mind-AI", "MAAL": "Maal Chain", "MABA": "Make America Based Again", "MAC": "MachineCoin", @@ -8998,9 +9325,11 @@ "MADOG": "MarvelDoge", "MADP": "Mad Penguin", "MADPEPE": "Mad Pepe", + "MAECENAS": "Maecenas", "MAEP": "Maester Protocol", "MAF": "MetaMAFIA", "MAG": "Magnify Cash", + "MAG7SSI": "MAG7.ssi", "MAGA": "MAGA", "MAGA2024": "MAGA2024", "MAGA47": "MAGA 47", @@ -9035,13 +9364,15 @@ "MAGPAC": "MAGA Meme PAC", "MAH": "Mahabibi Bin Solman", "MAHA": "MahaDAO", - "MAI": "Mindsync", + "MAI": "MAI", "MAIA": "Maia", "MAID": "MaidSafe Coin", "MAIL": "CHAINMAIL", "MAINSTON": "Ston", + "MAIV": "MAIV", + "MAJ": "Major Frog", "MAJO": "Majo", - "MAJOR": "Major Frog", + "MAJOR": "Major", "MAK": "MetaCene", "MAKE": "MAKE", "MAKEA": "Make America Healthy Again", @@ -9053,8 +9384,11 @@ "MALOU": "MALOU Token", "MAMAI": "MammothAI", "MAMBA": "Mamba", + "MAMBO": "Mambo", + "MAMO": "Mamo", "MAN": "Matrix AI Network", "MANA": "Decentraland", + "MANA3": "MANA3", "MANC": "Mancium", "MAND": "Mandala Exchange Token", "MANDALA": "Mandala Exchange Token", @@ -9067,6 +9401,7 @@ "MANIFEST": "Manifest", "MANNA": "Manna", "MANORUKA": "ManoRuka", + "MANSONCOIN": "Manson Coin", "MANT": "Mantle USD", "MANTA": "Manta Network", "MANTI": "Mantis", @@ -9079,6 +9414,7 @@ "MAP": "MAP Protocol", "MAPC": "MapCoin", "MAPE": "Mecha Morphing", + "MAPO": "MAP Protocol", "MAPR": "Maya Preferred 223", "MAPS": "MAPS", "MAR3": "Mar3 AI", @@ -9096,15 +9432,17 @@ "MARLEY": "Marley Token", "MARMAJ": "marmaj", "MARO": "Maro", - "MARS": "MarsCoin", + "MAROV1": "TTC PROTOCOL", + "MARS": "Mars", "MARS4": "MARS4", "MARSC": "MarsCoin", + "MARSCOIN": "MarsCoin", "MARSH": "Unmarshal", "MARSO": "Marso.Tech", "MARSRISE": "MarsRise", "MARSUPILAMI": "MARSUPILAMI INU", "MARSW": "Marswap", - "MART": "Monart", + "MART": "ArtMeta", "MARTIA": "Colonize Mars", "MARTK": "Martkist", "MARTY": "Marty Inu", @@ -9117,6 +9455,7 @@ "MARYJ": "MaryJane Coin", "MAS": "Midas Protocol", "MASA": "Masa", + "MASHA": "Masha", "MASK": "Mask Network", "MASP": "Market.space", "MASQ": "MASQ", @@ -9125,9 +9464,10 @@ "MASTER": "Mastercoin", "MASTERCOIN": "MasterCoin", "MASTERMINT": "MasterMint", + "MASTERMIX": "Master MIX Token", "MASTERTRADER": "MasterTraderCoin", "MASYA": "MASYA", - "MAT": "MiniApps", + "MAT": "My Master Wa", "MATA": "Ninneko", "MATAR": "MATAR AI", "MATCH": "Matching Game", @@ -9137,7 +9477,8 @@ "MATIC": "Polygon", "MATICX": "Stader MaticX", "MATPAD": "MaticPad", - "MATRIX": "Matrix Labs", + "MATRIX": "Matrix One", + "MATRIXLABS": "Matrix Labs", "MATT": "Matt Furie", "MATTER": "AntiMatter", "MAU": "MAU", @@ -9288,6 +9629,7 @@ "MEER": "Qitmeer Network", "MEET": "CoinMeet", "MEETONE": "MEET.ONE", + "MEETPLE": "Meetple", "MEF": "MEFLEX", "MEFA": "Metaverse Face", "MEGA": "MegaFlash", @@ -9296,6 +9638,7 @@ "MEGAHERO": "MEGAHERO", "MEGALAND": "Metagalaxy Land", "MEGALANDV1": "Metagalaxy Land v1", + "MEGATECH": "Megatech", "MEGAX": "Megahex", "MEGE": "MEGE", "MEH": "meh", @@ -9305,7 +9648,9 @@ "MELANIA": "Melania Meme", "MELANIATRUMP": "Melania Trump", "MELB": "Minelab", - "MELD": "MELD", + "MELD": "MetaElfLand Token", + "MELDV1": "MELD v1", + "MELDV2": "MELD", "MELI": "Meli Games", "MELLO": "Mello Token", "MELLOW": "Mellow Man", @@ -9317,14 +9662,17 @@ "MELT": "Defrost Finance", "MEM": "Memecoin", "MEMAGX": "Meta Masters Guild Games", + "MEMBERSHIP": "Membership Placeholders", "MEMD": "MemeDAO", "MEMDEX": "Memdex100", "MEME": "Memecoin", "MEMEA": "MEME AI", "MEMEAI": "Meme Ai", + "MEMEBRC": "MEME", "MEMECUP": "Meme Cup", "MEMEETF": "Meme ETF", "MEMEFI": "MemeFi", + "MEMEFICASH": "MemeFi", "MEMEINU": "Meme Inu", "MEMEM": "Meme Man", "MEMEME": "MEMEME", @@ -9345,6 +9693,7 @@ "MENLO": "Menlo One", "MEO": "Meow Of Meme", "MEOW": "Zero Tech", + "MEOWCAT": "MeowCat", "MEOWETH": "Meow", "MEOWG": "MeowGangs", "MEOWIF": "Meowifhat", @@ -9401,9 +9750,10 @@ "METATI": "Metatime Coin", "METATR": "MetaTrace Utility Token", "METAUFO": "MetaUFO", - "METAV": "MetaVPad", + "METAV": "METAVERSE", "METAVE": "Metaverse Convergence", "METAVIE": "Metavie", + "METAVPAD": "MetaVPad", "METAW": "MetaWorth", "METAX": "MetaverseX", "METEOR": "Meteorite Network", @@ -9461,7 +9811,7 @@ "MGOD": "MetaGods", "MGP": "MangoChain", "MGPT": "MotoGP Fan Token", - "MGT": "Megatech", + "MGT": "Moongate", "MGUL": "Mogul Coin", "MGX": "MargiX", "MHAM": "Metahamster", @@ -9481,8 +9831,9 @@ "MICHI": "michi", "MICK": "Mickey Meme", "MICKEY": "Steamboat Willie", - "MICRO": "Micromines", + "MICRO": "Micro GPT", "MICRODOGE": "MicroDoge", + "MICROMINES": "Micromines", "MIDAI": "Midway AI", "MIDAS": "Midas", "MIDASDOLLAR": "Midas Dollar Share", @@ -9495,7 +9846,9 @@ "MIGGLEI": "Migglei", "MIGGLES": "Mr Miggles", "MIGMIG": "MigMig Swap", + "MIH": "MINE COIN", "MIHARU": "Smiling Dolphin", + "MIHV1": "MINE COIN v1", "MIIDAS": "Miidas NFT", "MIININGNFT": "MiningNFT", "MIKE": "Mike", @@ -9504,9 +9857,10 @@ "MILA": "MILADY MEME TOKEN", "MILE": "milestoneBased", "MILEI": "MILEI", - "MILK": "Milkshake Swap", + "MILK": "MilkyWay", "MILK2": "Spaceswap MILK2", "MILKBAG": "MILKBAG", + "MILKSHAKE": "Milkshake Swap", "MILKYWAY": "MilkyWayZone", "MILLI": "Million", "MILLY": "milly", @@ -9529,6 +9883,7 @@ "MINDEX": "Mindexcoin", "MINDGENE": "Mind Gene", "MINDS": "Minds", + "MINDSYNC": "Mindsync", "MINE": "SpaceMine", "MINEA": "Mine AI", "MINER": "MINER", @@ -9538,6 +9893,7 @@ "MINEX": "Minex", "MINGO": "Mingo", "MINI": "mini", + "MINIAPPS": "MiniApps", "MINIBNBTIGER": "MiniBNBTiger", "MINID": "Mini Donald", "MINIDO": "MiniDoge", @@ -9554,7 +9910,8 @@ "MINO": "MINO INU", "MINOCOINCTO": "MINO", "MINS": "Minswap", - "MINT": "Mint Club", + "MINT": "Mintify", + "MINTCHAIN": "Mint", "MINTCOIN": "MintCoin", "MINTE": "Minter HUB", "MINTME": "MintMe.com Coin", @@ -9569,9 +9926,12 @@ "MIR": "Mirror Protocol", "MIRA": "Chains of War", "MIRACLE": "MIRACLE", - "MIRAI": "MIRAI", + "MIRACLETELE": "Miracle Tele", + "MIRAI": "Project MIRAI", + "MIRAIBUILD": "MIRAI", "MIRC": "MIR COIN", "MIRT": "MIR Token", + "MIRX": "Mirada AI", "MIS": "Mithril Share", "MISA": "Sangkara", "MISCOIN": "MIScoin", @@ -9597,6 +9957,7 @@ "MIXAI": "Mixcash AI", "MIXCOIN": "Mixaverse", "MIXER": "TON Mixer", + "MIXIE": "Mixie", "MIY": "Icel Idman Yurdu Token", "MIZ": "Mizar", "MJT": "MojitoSwap", @@ -9644,7 +10005,7 @@ "MMS": "Marsverse", "MMSC": "MMSC PLATFORM", "MMSS": "MMSS (Ordinals)", - "MMT": "Master MIX Token", + "MMT": "MeMusic", "MMTM": "Momentum", "MMUI": "MetaMUI", "MMULTI": "Multichain (via Multichain Cross-Chain Router)", @@ -9673,6 +10034,7 @@ "MNR": "Mineral", "MNRB": "MoneyRebel", "MNRCH": "Monarch", + "MNRY": "Moonray", "MNS": "Monnos", "MNSRY": "MANSORY", "MNST": "MoonStarter", @@ -9702,7 +10064,7 @@ "MOBIU": "Mobius Money", "MOBU": "MOBU", "MOBX": "MOBIX", - "MOBY": "Moby", + "MOBY": "Moby AI", "MOBYONBASE": "Moby", "MOBYONBASEV1": "Moby v1", "MOC": "Mossland", @@ -9744,8 +10106,9 @@ "MOI": "MyOwnItem", "MOIN": "MoinCoin", "MOJI": "Moji", - "MOJO": "Mojocoin", + "MOJO": "Planet Mojo", "MOJOB": "Mojo on Base", + "MOJOCOIN": "Mojocoin", "MOK": "MocktailSwap", "MOL": "Molecule", "MOLA": "MoonLana", @@ -9762,14 +10125,17 @@ "MONA": "MonaCoin", "MONAIZE": "Monaize", "MONARCH": "TRUEMONARCH", + "MONART": "Monart", "MONAV": "Monavale", "MONB": "MonbaseCoin", "MONDO": "mondo", + "MONEROCHAN": "Monerochan", "MONET": "Claude Monet Memeory Coin", "MONETA": "Moneta", "MONEY": "MoneyCoin", "MONEYBEE": "MONEYBEE", "MONEYBYTE": "MoneyByte", + "MONEYGOD": "Money God One", "MONEYIMT": "MoneyToken", "MONF": "Monfter", "MONG": "MongCoin", @@ -9807,10 +10173,12 @@ "MOODENGWIF": "MOODENGWIF", "MOOI": "Moonai", "MOOLA": "Degen Forest", + "MOOLAH": "Moolah", "MOOLYA": "moolyacoin", "MOON": "r/CryptoCurrency Moons", "MOONARCH": "Moonarch", "MOONB": "Moon Base", + "MOONBEANS": "Moonbeans", "MOONBI": "Moonbix", "MOONBIX": "MOONBIX MEME", "MOONC": "MoonCoin", @@ -9824,6 +10192,7 @@ "MOONION": "Moonions", "MOONKIZE": "MoonKize", "MOONLIGHT": "Moonlight Token", + "MOONPIG": "Moonpig", "MOONR": "PulseMoonR", "MOONS": "Sailor Moons", "MOONSHOT": "Moonshot", @@ -9848,7 +10217,7 @@ "MOS": "MOS Coin", "MOSS": "MOSS AI", "MOST": "MOST Global", - "MOT": "Olympus Labs", + "MOT": "Mobius Token", "MOTA": "MotaCoin", "MOTG": "MetaOctagon", "MOTH": "MOTH", @@ -9870,9 +10239,10 @@ "MOWA": "Moniwar", "MOXIE": "Moxie", "MOYA": "MOYA", - "MOZ": "Mozik", + "MOZ": "Lumoz token", "MOZA": "Mozaic", - "MP": "Membership Placeholders", + "MOZIK": "Mozik", + "MP": "MerlinSwap Token", "MP3": "MP3", "MPAA": "MPAA", "MPAD": "MultiPad", @@ -9889,7 +10259,8 @@ "MPM": "Monopoly Meta", "MPRO": "MediumProject", "MPS": "Mt Pelerin Shares", - "MPT": "Meetple", + "MPT": "Miracleplay Token", + "MPTV1": "Miracleplay Token v1", "MPWR": "Empower", "MPX": "Morphex", "MPXT": "Myplacex", @@ -9935,7 +10306,7 @@ "MSHEESHA": "Sheesha Finance Polygon", "MSHIB": "Magic Shiba Starter", "MSHIP": "MetaShipping", - "MSN": "Manson Coin", + "MSN": "Meson.Network", "MSOL": "Marinade Staked SOL", "MSOT": "BTour Chain", "MSP": "Mothership", @@ -9971,10 +10342,12 @@ "MTL": "Metal", "MTLM3": "Metal Music v3", "MTLS": "eMetals", + "MTLV1": "Metal v1", "MTLX": "Mettalex", "MTMS": "MTMS Network", "MTN": "TrackNetToken", "MTO": "Merchant Token", + "MTOS": "MomoAI", "MTP": "Macro Protocol", "MTR": "Meter Stable", "MTRA": "MetaRare", @@ -9989,6 +10362,7 @@ "MTT": "MulTra", "MTTCOIN": "Money of Tommorow, Today", "MTV": "MultiVAC", + "MTV1": "Mint Club", "MTVT": "Metaverser", "MTW": "Meta Space 2045", "MTX": "Matryx", @@ -10052,6 +10426,7 @@ "MVG": "Mad Viking Games", "MVI": "Metaverse Index", "MVL": "MVL", + "MVOYA": "VOYA (Merlin Bridge)", "MVP": "MAGA VP", "MVPC": "MVP Coin", "MVRS": "Meta MVRS", @@ -10128,7 +10503,9 @@ "NAFT": "Nafter", "NAH": "Strayacoin", "NAI": "Nuklai", + "NAIIVE": "Naiive", "NAILONG": "Nailong", + "NAIT": "Node AI Token", "NAKA": "Nakamoto Games", "NAKAV1": "Nakamoto Games v1", "NALA": "Not a lion, a...", @@ -10233,8 +10610,9 @@ "NEBU": "Nebuchadnezzar", "NEC": "Nectar", "NEER": "Metaverse.Network Pioneer", - "NEET": "NEET Finance", + "NEET": "Not in Employment, Education, or Training", "NEETCOIN": "Neetcoin", + "NEETFINANCE": "NEET Finance", "NEF": "NefariousCoin", "NEFTIPEDIA": "NEFTiPEDiA", "NEFTY": "NeftyBlocks", @@ -10256,6 +10634,7 @@ "NEKOARC": "Neko Arc", "NEKOIN": "Nekoin", "NEKOS": "Nekocoin", + "NEKTAR": "Nektar Token", "NEMO": "NEMO", "NEMS": "The Nemesis", "NEO": "NEO", @@ -10277,9 +10656,10 @@ "NEST": "Nest Protocol", "NESTREE": "Nestree", "NESTV1": "Nest Protocol v1", - "NET": "NetCoin", + "NET": "NET", "NETA": "Negative Tax", "NETC": "NetworkCoin", + "NETCOI": "NetCoin", "NETCOIN": "Netcoincapital", "NETCOINV1": "Netcoincapital v1", "NETK": "Netkoin", @@ -10294,6 +10674,7 @@ "NEURA": "Neurahub", "NEURAL": "NeuralAI", "NEURALINK": "Neuralink", + "NEURO": "NeuroWeb", "NEURON": "Cerebrum DAO", "NEURONI": "Neuroni AI", "NEUROS": "Shockwaves", @@ -10305,7 +10686,6 @@ "NEVANETWORK": "Neva", "NEVE": "NEVER SURRENDER", "NEVER": "neversol", - "NEW": "Newton", "NEWB": "Newbium", "NEWBV1": "Newbium v1", "NEWC": "New Cat", @@ -10324,6 +10704,7 @@ "NEXAI": "NexAI", "NEXBOX": "NexBox", "NEXBT": "Native XBTPro Exchange Token", + "NEXD": "Nexade", "NEXEA": "NEXEA", "NEXG": "NexGami", "NEXM": "Nexum", @@ -10370,6 +10751,7 @@ "NFTY": "NFTY Token", "NFTYP": "NFTY DeFi Protocol", "NFUP": "Natural Farm Union Protocol", + "NFX": "Nova Fox", "NFXC": "NFX Coin", "NFY": "Non-Fungible Yearn", "NGA": "NGA Tiger", @@ -10382,6 +10764,7 @@ "NHCT": "Nano Healthcare Token", "NHI": "Non Human Intelligence", "NHT": "Neighbourhoods", + "NIANNIAN": "NianNian", "NIAO": "NIAO", "NIBBLES": "Nibbles", "NIBI": "Nibiru Chain", @@ -10403,6 +10786,7 @@ "NIK": "NIKPLACE", "NIKO": "NikolAI", "NIL": "Nillion", + "NILA": "MindWave", "NILE": "Nile", "NIM": "Nimiq", "NIMBUS": "Nimbus AI", @@ -10440,7 +10824,7 @@ "NKN": "NKN", "NKT": "NakomotoDark", "NKYC": "NKYC Token", - "NLC": "NoLimitCoin", + "NLC": "Nelore Coin", "NLC2": "NoLimitCoin", "NLG": "Gulden", "NLINK": "Neuralink", @@ -10468,6 +10852,7 @@ "NOA": "NOA PLAY", "NOAH": "NOAHCOIN", "NOBL": "NobleCoin", + "NOBODY": "Nobody Sausage", "NOBS": "No BS Crypto", "NOCHILL": "AVAX HAS NO CHILL", "NODE": "NodelyAI", @@ -10485,7 +10870,7 @@ "NOKU": "NOKU Master token", "NOKUV1": "NOKU Master token v1", "NOLA": "Nola", - "NOM": "Finom NOM Token", + "NOM": "Onomy Protocol", "NOMAI": "nomAI by Virtuals", "NOMNOM": "nomnom", "NOMOX": "NOMOEX Token", @@ -10581,6 +10966,7 @@ "NTR": "Nether", "NTRN": "Neutron", "NTS": "Notarised", + "NTV": "NativToken", "NTVRK": "Netvrk", "NTWK": "Network Token", "NTX": "NuNet", @@ -10597,8 +10983,10 @@ "NULS": "Nuls", "NUM": "Numbers Protocol", "NUMBERS": "NumbersCoin", - "NUMI": "Numitor", + "NUMI": "NUMINE Token", + "NUMITOR": "Numitor", "NUR": "Nurcoin", + "NURA": "Nura Labs", "NUSA": "Nusa", "NUSD": "Nomin USD", "NUT": "Native Utility Token", @@ -10635,6 +11023,7 @@ "NXM": "Nexus Mutual", "NXMC": "NextMindCoin", "NXN": "Naxion", + "NXPC": "NXPC", "NXQ": "NexQloud", "NXRA": "AllianceBlock Nexera", "NXS": "Nexus", @@ -10643,7 +11032,8 @@ "NXTT": "Next Earth", "NXTTY": "NXTTY", "NYA": "Nya", - "NYAN": "NyanCoin", + "NYAN": "NYAN", + "NYANCOIN": "NyanCoin", "NYANDOGE": "NyanDOGE International", "NYANTE": "Nyantereum International", "NYBBLE": "Nybble", @@ -10680,6 +11070,7 @@ "OBI": "Orbofi AI", "OBICOIN": "OBI Real Estate", "OBITS": "Obits Coin", + "OBOL": "Obol Network", "OBOT": "Obortech", "OBROK": "OBRok", "OBS": "One Basis Cash", @@ -10689,12 +11080,13 @@ "OBSUSHI": "Sushi (OmniBridge)", "OBT": "Oobit", "OBTC": "Obitan Chain", + "OBVIOUS": "OBVIOUS COIN", "OBX": "OpenBlox", "OC": "OrangeCoin", "OCADA": "OCADA.AI", "OCAI": "Onchain AI", "OCAVU": "Ocavu Network Token", - "OCB": "BLOCKMAX", + "OCB": "OneCoinBuy", "OCC": "OccamFi", "OCD": "On-Chain Dynamics", "OCE": "OceanEX Token", @@ -10794,6 +11186,7 @@ "OKSE": "Okse", "OKT": "OKT Chain", "OL": "Open Loot", + "OLA": "Ola", "OLAF": "Olaf Token", "OLAND": "Oceanland", "OLAS": "Autonolas", @@ -10803,6 +11196,7 @@ "OLEA": "Olea Token", "OLEV1": "OpenLeverage v1", "OLIVE": "Olive", + "OLIVIA": "AIGOV", "OLOID": "OLOID", "OLT": "OneLedger", "OLV": "OldV", @@ -10810,9 +11204,11 @@ "OLY": "Olyseum", "OLYMP": "OlympCoin", "OLYMPE": "OLYMPÉ", + "OLYMPUSLABS": "Olympus Labs", "OLYN": "Olyn by Virtuals", "OM": "MANTRA", "OMA": "OmegaCoin", + "OMALLEY": "O'Malley", "OMAX": "Omax", "OMAXV1": "Omax v1", "OMC": "Omchain", @@ -10849,6 +11245,7 @@ "ONDO": "Ondo", "ONDOAI": "Ondo DeFAI", "ONE": "Harmony", + "ONEROOT": "OneRoot Network", "ONES": "OneSwap DAO", "ONET": "ONE Token", "ONEX": "ONE TECH", @@ -10859,6 +11256,7 @@ "ONIGIRI": "Onigiri The Cat", "ONION": "DeepOnion", "ONIT": "ONBUFF", + "ONIX": "Onix", "ONL": "On.Live", "ONLINE": "Onlinebase", "ONLY": "OnlyCam", @@ -10870,7 +11268,7 @@ "ONT": "Ontology", "ONTACT": "OnTact", "ONUS": "ONUS", - "ONX": "Onix", + "ONX": "OnX.finance", "OOE": "OpenOcean", "OOFP": "OOFP", "OOGI": "OOGI", @@ -10883,6 +11281,7 @@ "OOW": "OPP Open WiFi", "OP": "Optimism", "OPA": "Option Panda Platform", + "OPAI": "Optopia AI", "OPAIG": "OvalPixel", "OPC": "OP Coin", "OPCA": "OP_CAT(BIP-420)", @@ -10924,6 +11323,7 @@ "OPTIG": "Catgirl Optimus", "OPTIM": "Optimus X", "OPTIMOUSE": "Optimouse", + "OPTIMUS": "Optimus", "OPTIO": "Optio", "OPTION": "OptionCoin", "OPU": "Opu Coin", @@ -10943,15 +11343,18 @@ "ORAO": "ORAO Network", "ORARE": "OneRare", "ORB": "KlayCity ORB", + "ORBI": "Orbs", "ORBIS": "Orbis", "ORBIT": "Orbit Protocol", "ORBITCOIN": "Orbitcoin", "ORBK": "Ordibank", "ORBR": "Orbler", "ORBS": "Orbs", - "ORBT": "Orbitt Pro", + "ORBT": "Orbitt Token", + "ORBTV1": "Orbitt Pro", "ORC": "Orbit Chain", "ORCA": "Orca", + "ORCAI": "ORCA", "ORD": "ordinex", "ORDER": "Orderly Network", "ORDI": "Ordinals ", @@ -10975,6 +11378,7 @@ "ORME": "Ormeus Coin", "ORMO": "Ormolus", "ORN": "Orion Protocol", + "ORNG": "Juice Town", "ORNJ": "Orange", "ORO": "Operon Origins", "OROC": "Orocrypt", @@ -11000,6 +11404,7 @@ "OSIS": "OSIS", "OSK": "OSK", "OSKDAO": "OSK DAO", + "OSKY": "OpenSky Token", "OSL": "OSL AI", "OSMI": "OSMI", "OSMO": "Osmosis", @@ -11017,6 +11422,7 @@ "OTO": "OTOCASH", "OTSEA": "OTSea", "OTT": "Coost", + "OTTERHOME": "OtterHome", "OTTERSPACE": "Otter Space", "OTX": "Octanox", "OUCHI": "OUCHI", @@ -11027,16 +11433,20 @@ "OUSE": "OUSE Token", "OUSG": "OUSG", "OUT": "Netscouters", + "OUTL": "Outlanders Token", + "OVATO": "Ovato", "OVC": "OVCODE", + "OVER": "OverProtocol", "OVERLORD": "Overlord", "OVN": "Overnight", - "OVO": "Ovato", + "OVO": "OVO", "OVR": "Ovr", "OWC": "Oduwa", "OWD": "Owlstand", "OWL": "OWL Token", - "OWN": "Ownly", + "OWN": "OTHERWORLD", "OWNDATA": "OWNDATA", + "OWNLY": "Ownly", "OWO": "SoMon", "OX": "Open Exchange Token", "OXAI": "OxAI.com", @@ -11063,6 +11473,7 @@ "P": "PUPS•WORLD•PEACE", "P202": "Project 202", "P2PS": "P2P Solutions Foundation", + "P33L": "THE P33L", "P3D": "3DPass", "P404": "Potion 404", "PAAL": "PAAL AI", @@ -11077,12 +11488,14 @@ "PACOCA": "Pacoca", "PACP": "PAC Protocol", "PACT": "impactMarket", + "PACTV1": "impactMarket v1", "PAD": "NearPad", "PAF": "Pacific", "PAGE": "Page", - "PAI": "Project Pai", + "PAI": "ParallelAI", "PAID": "PAID Network", "PAIDV1": "PAID Network v1", + "PAIN": "PAIN", "PAINT": "MurAll", "PAIRED": "PairedWorld", "PAJAMAS": "The First Youtube Cat", @@ -11167,8 +11580,10 @@ "PAVO": "Pavocoin", "PAW": "PAWSWAP", "PAWPAW": "PawPaw", - "PAWS": "PawStars", + "PAWS": "PAWS", + "PAWSE": "PAWSE", "PAWSTA": "dogeatingpasta", + "PAWSTARS": "PawStars", "PAWTH": "Pawthereum", "PAXE": "Paxe", "PAXEX": "PAXEX", @@ -11209,7 +11624,7 @@ "PCCM": "Poseidon Chain", "PCD": " Phecda", "PCE": "PEACE COIN", - "PCH": "POPCHAIN", + "PCH": "Pichi", "PCHS": "Peaches.Finance", "PCI": "PayProtocol Paycoin", "PCKB": "pCKB (via Godwoken Bridge from CKB)", @@ -11272,6 +11687,7 @@ "PEG": "PegNet", "PEGA": "PEGA", "PEGAMAGA": "Pepe Maga", + "PEGASCOIN": "Pegascoin", "PEGG": "PokPok Golden Egg", "PEGS": "PegShares", "PEIPEI": "PeiPei", @@ -11301,6 +11717,7 @@ "PENTA": "Penta", "PEON": "Peon", "PEOPLE": "ConstitutionDAO", + "PEOPLEFB": "PEOPLE", "PEOSONE": "pEOS", "PEP": "Pepechain", "PEPA": "Pepa Inu", @@ -11320,7 +11737,8 @@ "PEPEBURN": "Pepeburn", "PEPEC": "Pepe Chain", "PEPECASH": "Pepe Cash", - "PEPECAT": "PEPE CAT", + "PEPECAT": "PEPECAT", + "PEPECATCLUB": "PEPE CAT", "PEPECEO": "REAL PEPE CEO", "PEPECHAIN": "PEPE Chain", "PEPECO": "PEPE COIN BSC", @@ -11386,6 +11804,7 @@ "PERU": "PeruCoin", "PERX": "PeerEx Network", "PESA": "Credible", + "PESETACOIN": "PesetaCoin", "PESHI": "PESHI", "PESOBIT": "PesoBit", "PESTO": "Pesto the Baby King Penguin", @@ -11401,6 +11820,7 @@ "PETOSHI": "Petoshi", "PETS": "PolkaPets", "PETT": "Pett Network", + "PETUNIA": "Petunia", "PEUSD": "peg-eUSD", "PEW": "pepe in a memes world", "PEX": "Pexcoin", @@ -11408,11 +11828,12 @@ "PFID": "Pofid Dao", "PFL": "Professional Fighters League Fan Token", "PFR": "PayFair", - "PFT": "Pitch Finance Token", + "PFT": "PolarFighters", + "PFVS": "Puffverse Token", "PFY": "Portify", "PG": "Pepe Grow", "PGALA": "pGALA", - "PGC": "Pegascoin", + "PGC": "PiggyPiggyCoin", "PGEN": "Polygen", "PGF7T": "PGF500", "PGL": "Prospectors", @@ -11471,11 +11892,13 @@ "PICKLE": "Pickle Finance", "PICO": "PicoGo", "PICOLO": "PICOLO", + "PIDOG": "Pi Network Dog", "PIDOGE": "Pi Network Doge", "PIE": "Persistent Information Exchange", "PIERRE": "sacré bleu", "PIF": "Pepe Wif Hat", "PIG": "Pig Finance", + "PIGC": "Pigcoin", "PIGE": "Pige", "PIGEON": "Pigeon In Yellow Boots", "PIGEONC": "Pigeoncoin", @@ -11485,6 +11908,7 @@ "PIGONK": "PIGONK", "PIGS": "Elon Vitalik Pigs", "PIIN": "piin (Ordinals)", + "PIK": "Pika Protocol", "PIKA": "Pikaboss", "PIKACHU": "Pikachu Inu", "PIKACRYPTO": "Pika", @@ -11501,6 +11925,7 @@ "PINETWORKDEFI": "Pi Network DeFi", "PINEYE": "PinEye", "PING": "CryptoPing", + "PINGO": "PinGo", "PINK": "PINK - The Panther", "PINKCOIN": "PinkCoin", "PINKSALE": "PinkSale", @@ -11530,24 +11955,28 @@ "PIST": "Pist Trust", "PIT": "Pitbull", "PITCH": "PITCH", + "PITCHFINANCE": "Pitch Finance Token", + "PITISCOIN": "Pitis Coin", "PIUU": "PIXIU", "PIVN": "PIVN", "PIVX": "Private Instant Verified Transaction", - "PIX": "Lampix", + "PIX": "PixelSwap", "PIXEL": "Pixels", "PIXELV": "PixelVerse", "PIXFI": "Pixelverse", "PIXL": "PIXL", - "PIZA": "Half Pizza", + "PIZA": "PIZA", "PIZPEPE": "Pepe Pizzeria", - "PIZZA": "PizzaSwap", + "PIZZA": "Pizza", "PIZZACOIN": "PizzaCoin", + "PIZZASWAP": "PizzaSwap", "PJM": "Pajama.Finance", "PKB": "ParkByte", "PKC": "Pikciochain", "PKD": "PetKingdom", "PKF": "PolkaFoundry", "PKG": "PKG Token", + "PKIN": "PUMPKIN", "PKN": "Poken", "PKOIN": "Pocketcoin", "PKT": "PKT", @@ -11581,6 +12010,7 @@ "PLEA": "Plearn", "PLEB": "PLEBToken", "PLEBONBASE": "PLEB", + "PLENA": "PLENA", "PLENTY": "Plenty DeFi", "PLEO": "Empleos", "PLERF": "Plerf", @@ -11638,11 +12068,13 @@ "PMR": "Pomerium Utility Token", "PMT": "POWER MARKET", "PMTN": "Peer Mountain", + "PMX": "Primex Finance", "PNB": "Pink BNB", "PNC": "PlatiniumCoin", "PND": "PandaCoin", "PNDC": "Pond Coin", "PNDN": "Pandana", + "PNDO": "Pondo", "PNDR": "Pandora Finance", "PNFT": "Pawn My NFT", "PNG": "Pangolin", @@ -11743,6 +12175,7 @@ "POP": "Popcoin", "POPC": "PopChest", "POPCAT": "Popcat", + "POPCHAIN": "POPCHAIN", "POPCO": "Popcorn", "POPDOG": "PopDog", "POPE": "PopPepe", @@ -11751,9 +12184,11 @@ "POPG": "POPG", "POPGOAT": "Goatseus Poppimus", "POPK": "POPKON", + "POPMART": "POP MART", "POPO": "popo", "POPOETH": "POPO", "POPSICLE": "Popsicle Finance", + "POPU": "Populous", "POPULARCOIN": "PopularCoin", "POR": "Portugal National Team Fan Token", "PORA": "PORA AI", @@ -11787,7 +12222,7 @@ "POUW": "Pouwifhat", "POW": "PowBlocks", "POWELL": "Jerome Powell", - "POWER": "UniPower", + "POWER": "Powerloom Token", "POWR": "Power Ledger", "POWSCHE": "Powsche", "POX": "Monkey Pox", @@ -11809,10 +12244,11 @@ "PPP": "PayPie", "PPR": "Papyrus", "PPS": "PopulStay", - "PPT": "Populous", + "PPT": "Pop Token", "PPY": "Peerplays", "PQT": "Prediqt", "PRA": "ProChain", + "PRAI": "Privasea AI", "PRARE": "Polkarare", "PRB": "Paribu Net", "PRC": "ProsperCoin", @@ -11862,6 +12298,7 @@ "PROFITHUNTERS": "Profit Hunters Coin", "PROGE": "Protector Roge", "PROJECT89": "Project89", + "PROJECTPAI": "Project Pai", "PROLIFIC": "Prolific Game Studio", "PROM": "Prometeus", "PROMPT": "Wayfinder", @@ -11906,7 +12343,8 @@ "PSEUD": "PseudoCash", "PSF": "Prime Shipping Foundation", "PSG": "Paris Saint-Germain Fan Token", - "PSI": "PSIcoin", + "PSI": "Trident", + "PSICOIN": "PSIcoin", "PSILOC": "Psilocybin", "PSK": "Pool of Stake", "PSL": "Pastel", @@ -11927,7 +12365,7 @@ "PT": "Phemex", "PTA": "PentaCoin", "PTAS": "La Peseta", - "PTC": "PesetaCoin", + "PTC": "Particle Trade", "PTD": "Pilot", "PTERIA": "Pteria", "PTF": "PowerTrade Fuel", @@ -11942,6 +12380,7 @@ "PTP": "Platypus Finance", "PTR": "Petro", "PTRUMP": "Pepe Trump", + "PTS": "Petals", "PTT": "Pink Taxi Token", "PTU": "Pintu Token", "PTX": "PlatinX", @@ -11965,7 +12404,8 @@ "PUMA": "Puma", "PUMBAA": "Pumbaa", "PUMLX": "PUMLx", - "PUMP": "PUMP", + "PUMP": "Big Pump", + "PUMPAI": "PumpAI", "PUMPB": "Pump", "PUMPBTC": "pumpBTC", "PUMPFUNBAN": "Pump Fun Ban", @@ -11994,6 +12434,7 @@ "PURA": "Pura", "PURE": "Puriever", "PUREALT": "Pure", + "PURGE": "Forgive Me Father", "PURP": "Purple Platform io", "PURPE": "Purple Pepe", "PURPLEBTC": "Purple Bitcoin", @@ -12014,7 +12455,8 @@ "PUX": "pukkamex", "PVC": "PVC Meta", "PVFYBO": "JRVGCUPVSC", - "PVP": "PVPChain", + "PVP": "PvP", + "PVPCHAIN": "PVPChain", "PVT": "Pivot Token", "PVU": "Plant vs Undead Token", "PWAR": "PolkaWar", @@ -12093,6 +12535,7 @@ "QIE": "QI Blockchain", "QINGWA": "ShangXin QingWa", "QISWAP": "QiSwap", + "QKA": "Qkacoin", "QKC": "QuarkChain", "QKNTL": "Quick Intel", "QLC": "Kepple [OLD]", @@ -12119,6 +12562,7 @@ "QRP": "Cryptics", "QRT": "Qrkita Token", "QRX": "QuiverX", + "QSHX": "Queen Sherex", "QSLV": "Quicksilver coin", "QSP": "Quantstamp", "QSR": "Quasar", @@ -12134,6 +12578,7 @@ "QTO": "QToken", "QTUM": "QTUM", "QTZ": "Quartz", + "QU3": "QU3ai", "QUA": "Quantum Tech", "QUAC": "QUACK", "QUACK": "Rich Quack", @@ -12186,6 +12631,7 @@ "RABB": "Rabbit INU", "RABBI": "Len \"rabbi\" Sassaman", "RABBIT": "Rabbit Finance", + "RABBITC": "RabBitcoin", "RABI": "Rabi", "RAC": "RAcoin", "RACA": "Radio Caca", @@ -12238,7 +12684,8 @@ "RAT": "RatCoin", "RATECOIN": "Ratecoin", "RATING": "DPRating", - "RATIO": "Ratio", + "RATIO": "Ratio Governance Token", + "RATO": "Rato The Rat", "RATS": "Rats", "RATWIF": "RatWifHat", "RAVE": "Ravendex", @@ -12297,10 +12744,11 @@ "RDEX": "Orders.Exchange", "RDF": "ReadFi", "RDGX": "R-DEE Protocol", + "RDMP": "Roadmap Coin", "RDN": "Raiden Network Token", "RDNT": "Radiant Capital", "RDNTV1": "Radiant Capital v1", - "RDO": "Rodeo Finance", + "RDO": "RDO Token", "RDOG": "Repost Dog", "RDPX": "Dopex Rebate Token", "RDR": "Rise of Defenders", @@ -12310,12 +12758,16 @@ "REA": "Realisto", "REACH": "/Reach", "REACT": "Reactive Network", + "READY": "READY!", "REAL": "RealLink", "REALESTATE": "RealEstate", + "REALIS": "Realis Worlds", "REALM": "Realm", "REALMS": "Realms of Ethernity", "REALP": "Real Pepe", "REALPLATFORM": "REAL", + "REALPUMPITCOIN": "PUMP", + "REALR": "Real Realm", "REALTRACT": "RealTract", "REALUSD": "Real USD", "REALUSDV1": "Real USD v1", @@ -12373,7 +12825,9 @@ "REI": "REI Network", "REIGN": "Reign of Terror", "REINDEER": "Reindeer", - "REKT": "REKT", + "REK": "Rekt", + "REKT": "Rekt", + "REKTV1": "REKT", "REKTV2": "REKT 2.0", "REKTV3": "REKT v3 (rekt.game)", "REL": "Reliance", @@ -12411,11 +12865,13 @@ "REQ": "Request Network", "RES": "Resistance", "RESCUE": "Rescue", + "RESOLV": "Resolv", "REST": "Restore", "RET": "Renewable Energy", "RETA": "Realital Metaverse", "RETAIL": "Retail.Global", "RETAR": "Retard Finder Coin", + "RETARD": "retardcoin", "RETARDIA": "RETARDIA", "RETARDIO": "RETARDIO", "RETH": "Rocket Pool ETH", @@ -12440,7 +12896,7 @@ "REW": "Review.Network", "REWARD": "Rewardable", "REWARDS": "Solana Rewards", - "REX": "Imbrex", + "REX": "REVOX", "REXBT": "rexbt by VIRTUALS", "REXHAT": "rexwifhat", "REZ": "Renzo", @@ -12476,8 +12932,9 @@ "RIBB": "Ribbit", "RIBBIT": "Ribbit", "RIC": "Riecoin", - "RICE": "RiceFarm", + "RICE": "DAOSquare Governance Token", "RICECOIN": "RiceCoin", + "RICEFARM": "RiceFarm", "RICHIE": "Richie2.0", "RICHIEV1": "Richie", "RICHOFME": "Rich Of Memes", @@ -12520,6 +12977,7 @@ "RISEP": "Rise Protocol", "RISEVISION": "Rise", "RISITA": "Risitas", + "RITA": "Rita Elite Order", "RITE": "ritestream", "RITO": "Ritocoin", "RITZ": "Ritz.Game", @@ -12533,6 +12991,7 @@ "RIZZMAS": "Rizzmas", "RJV": "Rejuve.AI", "RKC": "Royal Kingdom Coin", + "RKEY": "RKEY", "RKI": "RAKHI", "RKN": "RAKON", "RKR": "REAKTOR", @@ -12566,7 +13025,7 @@ "RNDX": "Round X", "RNEAR": "Near (Rainbow Bridge)", "RNS": "RenosCoin", - "RNT": "OneRoot Network", + "RNT": "REAL NIGGER TATE", "RNTB": "BitRent", "RNX": "ROONEX", "ROAD": "ROAD", @@ -12584,7 +13043,7 @@ "ROBOTAXI": "ROBOTAXI", "ROC": "Rasputin Online Coin", "ROCCO": "Just A Rock", - "ROCK": "Bedrock", + "ROCK": "Zenrock", "ROCK2": "Ice Rock Mining", "ROCKET": "Team Rocket", "ROCKETCOIN": "RocketCoin", @@ -12594,6 +13053,7 @@ "ROCKYCOIN": "ROCKY", "ROCO": "ROCO FINANCE", "RODAI": "ROD.AI", + "RODEO": "Rodeo Finance", "ROE": "Rover Coin", "ROG": "ROGin AI", "ROGER": "ROGER", @@ -12601,6 +13061,7 @@ "ROK": "Rockchain", "ROKM": "Rocket Ma", "ROKO": "Roko", + "ROLLSROYCE": "RollsRoyce", "ROLS": "RollerSwap", "ROM": "ROMCOIN", "ROME": "Rome", @@ -12641,6 +13102,7 @@ "ROUTEV1": "Router Protocol v1", "ROUTINE": "Morning Routine", "ROVI": "ROVI", + "ROVR": "ROVR Network", "ROW": "Rage On Wheels", "ROWAN": "Sifchain", "ROX": "Robotina", @@ -12677,6 +13139,7 @@ "RSG": "RSG TOKEN", "RSIC": "RSIC•GENESIS•RUNE", "RSIN": "Roketsin", + "RSO": "Real Sociedad Fan Token", "RSPN": "Respan", "RSR": "Reserve Rights", "RSRV": "Reserve", @@ -12705,8 +13168,9 @@ "RUBB": "Rubber Ducky Cult", "RUBCASH": "RUBCASH", "RUBIT": "Rublebit", + "RUBIUS": "Rubius", "RUBX": "eToro Russian Ruble", - "RUBY": "Rubius", + "RUBY": "RubyToken", "RUBYEX": "Ruby.Exchange", "RUC": "Rush", "RUFF": "Ruff", @@ -12718,7 +13182,9 @@ "RUM": "RUM Pirates of The Arrland Token", "RUN": "Run", "RUNE": "Thorchain", + "RUNESX": "RUNES·X·BITCOIN", "RUNEVM": "RUNEVM", + "RUNI": "Runesterminal", "RUNNER": "Runner", "RUNY": "Runy", "RUP": "Rupee", @@ -12749,7 +13215,7 @@ "RVST": "Revest Finance", "RVT": "Rivetz", "RVX": "Rivex", - "RWA": "Xend Finance", + "RWA": "RWA Inc.", "RWAECO": "RWA Ecosystem", "RWAS": "RWA Finance", "RWB": "RawBlock", @@ -12762,6 +13228,7 @@ "RXCG": "RXCGames", "RXD": "Radiant", "RXO": "RocketXRP Official", + "RXR": "RXR Coin", "RXT": "RIMAUNANGIS", "RYAN": "OFFICIAL RYAN", "RYC": "RoyalCoin", @@ -12786,6 +13253,7 @@ "SAAD": "Saad Boi", "SAAS": "SaaSGo", "SABAI": "Sabai Protocol", + "SABER": "Saber", "SABLE": "Sable Finance", "SABR": "SABR Coin", "SAC1": "Sable Coin", @@ -12842,7 +13310,7 @@ "SAMMY": "Samoyed", "SAMO": "Samoyedcoin", "SAMS": "Samsara.Build", - "SAN": "Santiment", + "SAN": "San Chan", "SANA": "Storage Area Network Anywhere", "SANCHO": "Sancho", "SAND": "The Sandbox", @@ -12856,6 +13324,7 @@ "SANTA": "SANTA CHRISTMAS INU", "SANTAGROK": "Santa Grok", "SANTAHAT": "SANTA HAT", + "SANTI": "Santiment", "SANTOS": "Santos FC Fan Token", "SAO": "Sator", "SAP": "SwapAll", @@ -12873,14 +13342,17 @@ "SATA": "Signata", "SATAN": "MrBeast's Cat", "SATO": "Atsuko Sato", + "SATOEXCHANGE": "SatoExchange Token", + "SATOPAY": "SatoPay", "SATORI": "Satori Network", "SATOSHINAKAMOTO": "Satoshi Nakamoto", + "SATOTHEDOG": "Sato The Dog", "SATOX": "Satoxcoin", "SATOZ": "Satozhi", "SATS": "SATS (Ordinals)", "SATSALL": "ALL BEST ICO SATOSHI", "SATT": "SaTT", - "SATX": "SatoExchange Token", + "SATX": "SATX", "SAUBER": "Alfa Romeo Racing ORLEN Fan Token", "SAUCE": "SaucerSwap", "SAUCEINU": "SAUCEINU", @@ -12890,13 +13362,16 @@ "SAUNA": "SaunaFinance Token", "SAV": "Save America", "SAV3": "SAV3", + "SAVEOCEAN": "Save The Ocean", "SAVG": "SAVAGE", "SAVM": "SatoshiVM", + "SAVVA": "SAVVA", "SAY": "SAY Coin", "SB": "DragonSB", "SBA": "simplyBrand", "SBABE": "SNOOPYBABE", "SBAE": "Salt Bae For The People", + "SBB": "Slim Beautiful Bill", "SBC": "StableCoin", "SBCC": "Smart Block Chain City", "SBCH": "Smart Bitcoin Cash", @@ -12908,7 +13383,7 @@ "SBIO": "Vector Space Biosciences, Inc.", "SBNB": "Binance Coin (SpookySwap)", "SBOX": "SUIBOXER", - "SBR": "Saber", + "SBR": "STRATEGIC BITCOIN RESERVE", "SBRT": "SaveBritney", "SBSC": "Subscriptio", "SBT": "SOLBIT", @@ -13008,12 +13483,14 @@ "SDX": "SwapDEX", "SEAGULL": "SEAGULL SAM", "SEAIO": "Second Exchange Alliance", - "SEAL": "Seal Finance", + "SEAL": "Seal", + "SEALFINANCE": "Seal Finance", "SEALN": "Seal Network", "SEAM": "Seamless Protocol", "SEAMLESS": "SeamlessSwap", "SEAN": "Starfish Finance", - "SEAT": "SeatlabNFT", + "SEAT": "Seamans Token", + "SEATLABNFT": "SeatlabNFT", "SEBA": "Seba", "SEC": "SecureCryptoPayments", "SECO": "Serum Ecosystem Token", @@ -13048,6 +13525,7 @@ "SENATE": "SENATE", "SENC": "Sentinel Chain", "SEND": "Suilend", + "SENDCOIN": "Sendcoin", "SENDOR": "Sendor", "SENK": "Senk", "SENNO": "SENNO", @@ -13107,7 +13585,7 @@ "SFRC": "Safari Crush", "SFRXETH": "Frax Staked Ether", "SFRXUSD": "Staked Frax USD", - "SFT": "SportsFix", + "SFT": "Fightly", "SFTMX": "Stader sFTMX", "SFTY": "Stella Fantasy", "SFU": "Saifu", @@ -13180,6 +13658,7 @@ "SHIB05": "Half Shiba Inu", "SHIB1": "Shib1", "SHIB2": "SHIB2", + "SHIB20": "Shib2.0", "SHIBA": "Shibaqua", "SHIBAAI": "SHIBAAI", "SHIBAC": "SHIBA CLASSIC", @@ -13188,6 +13667,7 @@ "SHIBAI": "AiShiba", "SHIBAKEN": "Shibaken Finance", "SHIBAMOM": "Shiba Mom", + "SHIBANCE": "Shibance Token", "SHIBAR": "Shibarium Name Service", "SHIBARMY": "Shib Army", "SHIBAW": "Shiba $Wing", @@ -13242,6 +13722,7 @@ "SHK": "Shrike", "SHL": "Oyster Shell", "SHLD": "ShieldCoin", + "SHM": "Shardeum", "SHND": "StrongHands", "SHNT": "Sats Hunters", "SHO": "Showcase Token", @@ -13298,9 +13779,10 @@ "SIFU": "SIFU", "SIG": "Signal", "SIGMA": "SIGMA", - "SIGN": "Sign Token", + "SIGN": "Sign", "SIGNA": "Signa", "SIGNAT": "SignatureChain", + "SIGNMETA": "Sign Token", "SIGT": "Signatum", "SIGU": "Singular", "SIKA": "SikaSwap", @@ -13365,6 +13847,7 @@ "SJCX": "StorjCoin", "SKAI": "Skillful AI", "SKAIN": "SKAINET", + "SKATE": "Skate", "SKB": "SkullBuzz", "SKBDI": "Skibidi Toilet", "SKC": "Skeincoin", @@ -13403,9 +13886,11 @@ "SKX": "SKPANAX", "SKY": "Sky", "SKYA": "Sekuya Multiverse", + "SKYAI": "SKYAI", "SKYCOIN": "Skycoin", "SKYFT": "SKYFchain", "SKYM": "SkyMap", + "SKYOPS": "Skyops", "SKYRIM": "Skyrim Finance", "SKYX": "SKUYX", "SLA": "SUPERLAUNCH", @@ -13432,6 +13917,7 @@ "SLING": "Sling Coin", "SLINK": "Soft Link", "SLISBNB": "Lista Staked BNB", + "SLK": "SLK", "SLM": "SlimCoin", "SLN": "Smart Layer Network", "SLND": "Solend", @@ -13458,8 +13944,9 @@ "SMAC": "Social Media Coin", "SMAK": "Smartlink", "SMARS": "SafeMars", - "SMART": "SmartCash", + "SMART": "Smart game", "SMARTB": "Smart Coin", + "SMARTCASH": "SmartCash", "SMARTCREDIT": "SmartCredit Token", "SMARTH": "SmartHub", "SMARTLOX": "SmartLOX", @@ -13470,6 +13957,7 @@ "SMARTSHARE": "Smartshare", "SMARTUP": "Smartup", "SMAT": "Smathium", + "SMB": "SMB Token", "SMBR": "Sombra", "SMBSWAP": "SimbCoin Swap", "SMC": "SmartCoin", @@ -13483,7 +13971,9 @@ "SMI": "SafeMoon Inu", "SMIDGE": "Smidge", "SMIDGEETH": "Smidge", - "SMILE": "Smile Token", + "SMIL": "Smile Token", + "SMILE": "bitSmiley", + "SMILEAI": "Smile AI", "SMILEK": "Smilek to the Bank", "SMILEY": "SMILEY", "SMILY": "Smily Trump", @@ -13522,11 +14012,14 @@ "SNAI": "SwarmNode.ai", "SNAIL": "SnailBrook", "SNAKE": "snake", + "SNAKEAI": "Snake-ai", "SNAKEMOON": "Snakemoon", "SNAKES": "Snakes Game", + "SNAKETOKEN": "Snake Token", "SNAKT": "Sna-King Trump", "SNAP": "SnapEx", "SNAPCAT": "Snapcat", + "SNAPKERO": "SNAP", "SNB": "SynchroBitcoin", "SNC": "SunContract", "SNCT": "SnakeCity", @@ -13541,12 +14034,13 @@ "SNG": "SINERGIA", "SNGLS": "SingularDTV", "SNGT": "SNG Token", - "SNIBBU": "Snibbu The Crab", + "SNIBBU": "Snibbu", + "SNIBBUTHEC": "Snibbu The Crab", "SNIFT": "StarryNift", "SNIP": "LyrnAI", "SNIPPEPE": "SNIPING PEPE", "SNITCH": "Randall", - "SNK": "Snake Token", + "SNK": "Snook", "SNL": "Sport and Leisure", "SNM": "SONM", "SNMT": "Satoshi Nakamoto Token", @@ -13566,6 +14060,7 @@ "SNPAD": "SNP adverse", "SNPC": "SnapCoin", "SNPS": "Snaps", + "SNPT": "SNPIT TOKEN", "SNRG": "Synergy", "SNRK": "Snark Launch", "SNS": "Synesis One", @@ -13629,6 +14124,7 @@ "SOLAV": "SOLAV TOKEN", "SOLBET": "SOL STREET BETS", "SOLBO": "SolBoss", + "SOLBOX": "SolBox", "SOLBULL": "SOLBULL", "SOLC": "SolCard", "SOLCASH": "SOLCash", @@ -13694,11 +14190,15 @@ "SONICWIF": "SonicWifHat", "SONNE": "Sonne Finance", "SONOF": "Son of Solana", - "SOON": "Soonaverse", + "SONOR": "SonorusToken", + "SOON": "SOON Token", + "SOONAVERSE": "Soonaverse", "SOONCOIN": "SoonCoin", + "SOONTOKEN": "SOON", "SOOTCASE": "I like my sootcase", "SOP": "SoPay", "SOPH": "Sophon", + "SOPHIA": "SophiaVerse", "SOPHON": "Sophon (Atomicals)", "SOR": "Sorcery", "SORA": "Sora Validator Token", @@ -13707,14 +14207,13 @@ "SORAETH": "SORA", "SORAI": "Sora AI", "SORAPORN": "Sora Porn", - "SOSNOVKINO": "Sosnovkino", "SOSO": "SoSoValue", - "SOSWAP": "Solana Swap", "SOT": "Soccer Crypto", "SOTA": "SOTA Finance", "SOUL": "Phantasma", "SOULO": "SouloCoin", - "SOULS": "Soulsaver", + "SOULS": "Unfettered Ecosystem", + "SOULSA": "Soulsaver", "SOUND": "Sound Coin", "SOURCE": "ReSource Protocol", "SOUTH": "DeepSouth AI", @@ -13729,9 +14228,11 @@ "SP8DE": "Sp8de", "SPA": "Sperax", "SPAC": "SPACE DOGE", - "SPACE": "Spacelens", + "SPACE": "MicroVisionChain", "SPACECOIN": "SpaceCoin", "SPACED": "SPACE DRAGON", + "SPACEHAMSTER": "Space Hamster", + "SPACELENS": "Spacelens", "SPACEM": "Spacem Token", "SPACEPI": "SpacePi", "SPAD": "SolPad", @@ -13785,7 +14286,8 @@ "SPHYNXV3": "Sphynx Token v3", "SPHYNXV4": "Sphynx Token v4", "SPI": "Shopping.io", - "SPICE": "Spice", + "SPICE": "SPICE", + "SPICETOKEN": "Spice", "SPIDER": "Spider Man", "SPIDERMAN": "SPIDERMAN BITCOIN", "SPIDEY": "Spidey", @@ -13816,7 +14318,10 @@ "SPORE": "Spore", "SPORT": "SportsCoin", "SPORTS": "ZenSports", + "SPORTSFIX": "SportsFix", "SPORTSP": "SportsPie", + "SPOT": "Defispot", + "SPOTCOIN": "Spotcoin", "SPOTS": "Spots", "SPOX": "Sports Future Exchange Token", "SPRING": "Spring", @@ -13839,6 +14344,7 @@ "SPXC": "SpaceXCoin", "SPY": "Smarty Pay", "SPYRO": "SPYRO", + "SQ3": "Squad3", "SQAT": "Syndiqate", "SQD": "SQD", "SQG": "Squid Token", @@ -13860,6 +14366,7 @@ "SQUIDGROWV1": "SquidGrow v1", "SQUIDV1": "Squid Game v1", "SQUIDW": "Squidward Coin", + "SQUIRT": "SQUIRTLE", "SQUOGE": "DogeSquatch", "SR30": "SatsRush", "SRBP": "Super Rare Ball Potion", @@ -13869,6 +14376,7 @@ "SRCX": "Source Token", "SREUR": "SocialRemit", "SRG": "Street Runner NFT", + "SRGD": "Studio Releasing Gold", "SRK": "SparkPoint", "SRLTY": "SaitaRealty", "SRLY": "Rally (Solana)", @@ -13880,6 +14388,7 @@ "SRWD": "ShibRWD", "SRX": "StorX", "SS": "Sharder", + "SS20": "Shell Trade", "SSB": "SatoshiStreetBets", "SSC": "SelfSell", "SSD": "Sonic Screw Driver Coin", @@ -13915,6 +14424,7 @@ "STACK": "StackOS", "STACKS": " STACKS PAY", "STACS": "STACS Token", + "STAGE": "Stage", "STAK": "Jigstack", "STAKE": "xDai Chain", "STAKEDETH": "StakeHound Staked Ether", @@ -13923,7 +14433,7 @@ "STAN": "Stank Memes", "STANDARD": "Stakeborg DAO", "STAPT": "Ditto Staked Aptos", - "STAR": "FileStar", + "STAR": "StarHeroes", "STAR10": "Ronaldinho Coin", "STARAMBA": "Staramba", "STARBASE": "Starbase", @@ -13946,7 +14456,8 @@ "STARTER": "Starter.xyz", "STARWARS": "Star Wars", "STARX": "STARX TOKEN", - "STASH": "BitStash", + "STASH": "STASH INU", + "STASHV1": "BitStash", "STAT": "STAT", "STATE": "New World Order", "STATER": "Stater", @@ -13995,6 +14506,7 @@ "STHYPE": "Staked HYPE", "STI": "Seek Tiger", "STIC": "StickMan", + "STICKMAN": "stickman", "STIK": "Staika", "STIMA": "STIMA", "STING": "Sting", @@ -14016,10 +14528,11 @@ "STMAN": "Stickman Battleground", "STMATIC": "Lido Staked Matic", "STMX": "StormX", + "STMXV1": "StormX v1", "STND": "Standard Protocol", "STNEAR": "Staked NEAR", "STNK": "Stonks", - "STO": "Save The Ocean", + "STO": "StakeStone", "STOC": "STO Cash", "STOCK": "Digital Asset Stockpile", "STOG": "Stooges", @@ -14029,8 +14542,8 @@ "STONE": "Stone Token", "STONEDE": "Stone DeFi", "STONK": "STONK", - "STONKS": "HarryPotterObamaWallStreetBets10Inu", - "STOP": "SatoPay", + "STONKS": "STONKS", + "STOP": "LETSTOP", "STOR": "Self Storage Coin", "STORE": "Bit Store", "STOREP": "Storepay", @@ -14052,7 +14565,8 @@ "STRAY": "Stray Dog", "STRD": "Stride", "STRDY": "Sturdy", - "STREAM": "STREAMIT COIN", + "STREAM": "Streamflow", + "STREAMIT": "STREAMIT COIN", "STREETH": "STREETH", "STRI": "Strite", "STRIKE": "Strike", @@ -14105,9 +14619,12 @@ "SUCR": "Sucre", "SUD": "Sudo Labs", "SUDO": "sudoswap", + "SUEDE": "Johnny Suede", "SUGAR": "Sugar Exchange", + "SUGARB": "SugarBlock", "SUI": "Sui", "SUIA": "SUIA", + "SUIAGENT": "aiSUI", "SUIAI": "SUI Agents", "SUIB": "Suiba Inu", "SUIDEPIN": "Sui DePIN", @@ -14117,6 +14634,7 @@ "SUIMON": "Sui Monster", "SUIP": "SuiPad", "SUIRWA": "Sui RWA", + "SUIRWAPIN": "SUIRWAPIN", "SUISHIB": "SuiShiba", "SUITE": "Suite", "SUKI": "SUKI", @@ -14160,6 +14678,7 @@ "SUPEROETHB": "Super OETH", "SUPERT": "Super Trump", "SUPERTX": "SuperTX", + "SUPFRIEND": "SuperFriend", "SUPR": "SuperDapp", "SUPRA": "Supra", "SUPREMEFINANCE": "Hype", @@ -14174,6 +14693,7 @@ "SUSDX": "Staked USDX", "SUSHI": "Sushi", "SUSX": "Savings USX", + "SUT": "SuperTrust", "SUTEKU": "Suteku", "SUTER": "Suterusu", "SUWI": "suwi", @@ -14234,6 +14754,7 @@ "SWISE": "StakeWise", "SWITCH": "Switch", "SWM": "Swarm Fund", + "SWO": "SwordMagicToken", "SWOLE": "Swole Doge", "SWOP": "Swop", "SWORD": "eZKalibur", @@ -14257,6 +14778,7 @@ "SXM": "saxumdao", "SXP": "SXP", "SXS": "Sphere", + "SXT": "Space and Time", "SXUT": "SPECTRE Utility Token", "SYA": "SaveYourAssets", "SYBC": "SYB Coin", @@ -14293,12 +14815,14 @@ "SYS": "Syscoin", "SZCB": "Zugacoin", "T": "Threshold Network Token", + "T1": "Trump Mobile", "T23": "T23", "T99": "Tethereum", "TAAS": "Token as a Service", "TAB": "MollyCoin", "TABOO": "Taboo Token", "TAC": "Traceability Chain", + "TACC": "TACC", "TACHYON": "Tachyon Protocol", "TAD": "Tadpole", "TADA": "Ta-da", @@ -14327,17 +14851,19 @@ "TANG": "Tangent", "TANGO": "keyTango", "TANGYUAN": "TangYuan", - "TANK": "CryptoTanks", + "TANK": "AgentTank", "TANPIN": "Tanpin", "TANUKI": "Tanuki", "TANUPAD": "Tanuki Launchpad", "TAO": "Bittensor", "TAOBOT": "tao.bot", + "TAOCAT": "TAOCat by Virtuals", "TAONU": "TAO INU", "TAOP": "TaoPad", "TAOTOOLS": "TAOTools", "TAP": "TAP FANTASY", "TAPC": "Tap Coin", + "TAPCOIN": "TAP FANTASY", "TAPPINGCOIN": "TappingCoin", "TAPROOT": "Taproot Exchange", "TAPS": "TapSwap", @@ -14346,17 +14872,20 @@ "TARAL": "TARALITY", "TARD": "Tard", "TARDI": "Tardi", + "TARGETCOIN": "TargetCoin", "TARI": "Tari World", "TAROT": "Tarot", "TAROTV1": "Tarot v1", "TARP": "Totally A Rug Pull", "TAS": "TARUSH", "TASH": "Smart Trip Platform", + "TASSHUB": "TASS HUB", "TASTE": "TasteNFT", "TAT": "Tatcoin", "TATA": "TATA Coin", - "TATE": "Tate", + "TATE": "Tate Terminal", "TATES": "Tate Stop", + "TATETOKENETH": "Tate", "TATSU": "Taτsu", "TAU": "Lamden Tau", "TAUC": "Taurus Coin", @@ -14437,7 +14966,7 @@ "TEITEI": "TeiTei", "TEK": "TekCoin", "TEL": "Telcoin", - "TELE": "Miracle Tele", + "TELE": "Tele", "TELEBTC": "teleBTC", "TELEPORT": "Teleport System Token", "TELL": "Tellurion", @@ -14445,6 +14974,7 @@ "TELO": "Telo Meme Coin", "TELOS": "Teloscoin", "TEM": "Temtum", + "TEMA": "Tema", "TEMCO": "TEMCO", "TEMM": "TEM MARKET", "TEMP": "Tempus", @@ -14474,6 +15004,7 @@ "TERR": "Terrier", "TERRA": "Terraport", "TERRAB": "TERRABYTE AI", + "TERRACOIN": "TerraCoin", "TERRY": "Terry The Disgruntled Turtle", "TERZ": "SHELTERZ", "TES": "TeslaCoin", @@ -14485,6 +15016,7 @@ "TETH": "Treehouse ETH", "TETHYS": "Tethys", "TETRA": "Tetra", + "TETSUO": "Tetsuo Coin", "TETU": "TETU", "TEVA": "Tevaera", "TEW": "Trump in a memes world", @@ -14495,6 +15027,7 @@ "TFI": "TrustFi Network Token", "TFL": "True Flip Lottery", "TFLOW": "TradeFlow", + "TFNY": "TFNY", "TFS": "TFS Token", "TFT": "The Famous Token", "TFUEL": "Theta Fuel", @@ -14504,7 +15037,7 @@ "TGPT": "Trading GPT", "TGRAM": "TG20 TGram", "TGRASS": "Top Grass Club", - "TGT": "TargetCoin", + "TGT": "Tokyo Games Token", "TGW": "The Green World", "TH": "Team Heretics Fan Token", "THALES": "Thales", @@ -14543,6 +15076,7 @@ "THG": "Thetan Arena", "THIK": "ThikDik", "THING": "Nothing", + "THINGSOP": "ThingsOperatingSystem", "THINKWAREAI": "ThinkwareAI", "THISISF": "This is Fine", "THL": "Thala", @@ -14568,6 +15102,7 @@ "TI": "Titanium22", "TIA": "Celestia", "TIANHE": "Tianhe", + "TIBBIR": "Ribbita", "TIC": "TrueInvestmentCoin", "TICO": "Tico", "TIDAL": "Tidal Finance", @@ -14581,6 +15116,7 @@ "TIGER": "TIGER", "TIGERC": "TigerCash", "TIGERMOON": "TigerMoon", + "TIGERSHARK": "Tiger Shark", "TIGRA": "Tigra", "TIGRES": "Tigres Fan Token", "TIIM": "TriipMiles", @@ -14601,15 +15137,16 @@ "TINU": "Telegram Inu", "TINY": "TinyBits", "TIOX": "TIOx", - "TIP": "Tip Blockchain", + "TIP": "Tip", "TIPC": "Tipcoin", "TIPINU": "Tip Inu", "TIPS": "FedoraCoin", "TIPSY": "TipsyCoin", "TIT": "TittieCoin", "TITA": "Titan Hunters", - "TITAN": "TitanSwap", + "TITAN": "SATOSHI•RUNE•TITAN (Runes)", "TITANO": "Titano", + "TITANSWAP": "TitanSwap", "TITANX": "TitanX", "TITC": "TitCoin", "TITCOIN": "titcoin", @@ -14674,13 +15211,14 @@ "TOC": "TouchCon", "TODAY": "TodayCoin", "TODD": "TURBO TODD", - "TOK": "Tokenplace", + "TOK": "Tokai", "TOKA": "Tonka Finance", "TOKAMAK": "Tokamak Network", "TOKAU": "Tokyo AU", "TOKC": "Tokyo Coin", "TOKE": "Tokemak", "TOKEN": "TokenFi", + "TOKENPLACE": "Tokenplace", "TOKENSTARS": "TokenStars", "TOKERO": "TOKERO LevelUP Token", "TOKKI": "CRYPTOKKI", @@ -14691,7 +15229,9 @@ "TOLO": "Tolo Yacoloco", "TOLYCAT": "Toly's Cat", "TOM": "TOM Finance", + "TOMA": "Tomarket", "TOMAHAWKCOIN": "Tomahawkcoin", + "TOMAINFO": "TomaInfo", "TOMAN": "IRR", "TOMB": "Tomb", "TOMC": "TOM CAT", @@ -14738,7 +15278,7 @@ "TORO": "Toro Inoue", "TOROSOL": "Toro", "TORSY": "TORSY", - "TOS": "ThingsOperatingSystem", + "TOS": "Cryptos", "TOSA": "TosaInu BSC", "TOSC": "T.OS", "TOSDIS": "TosDis", @@ -14773,6 +15313,7 @@ "TPU": "TensorSpace", "TPV": "TravGoPV", "TPY": "Thrupenny", + "TQ": "TonQuestion", "TQRT": "TokoQrt", "TR3": "Tr3zor", "TRA": "Trabzonspor Fan Token", @@ -14801,7 +15342,7 @@ "TRB": "Tellor", "TRBT": "Tribute", "TRBV1": "Tellor Tributes v1", - "TRC": "TerraCoin", + "TRC": "Terrace", "TRCB": "TRCB Chain", "TRCL": "Treecle", "TRCT": "Tracto", @@ -14810,12 +15351,14 @@ "TRDS": "Traders Token", "TRDT": "Trident", "TRDX": "Trendix", - "TREAT": "Treat", + "TREA": "Treat", + "TREAT": "Shiba Inu Treat", "TREB": "Treble", "TRECENTO": "Trecento Blockchain Capital", "TREE": "Tree", "TREEB": "Retreeb", "TREMP": "Doland Tremp", + "TRENCHER": "Trencher", "TRESTLE": "TRESTLE", "TRET": "Tourist Review", "TRG": "The Rug Game", @@ -14831,9 +15374,11 @@ "TRICKLE": "Trickle", "TRIG": "Trigger", "TRINI": "Trinity Network Credit", - "TRIO": "Tripio", + "TRIO": "TRIO", "TRIPAD": "TripAdvisor, Inc.", + "TRIPIO": "Tripio", "TRIPPKI": "Trippki", + "TRISIG": "TRI SIGMA", "TRITON": "Triton", "TRIVIA": "Trivians", "TRIX": "TriumphX", @@ -14845,10 +15390,12 @@ "TRNGUY": "Tron Guy Project", "TROG": "Trog", "TROGE": "Troge", - "TROLL": "Trollcoin", + "TROLL": "TROLL", + "TROLLC": "Trollcoin", "TROLLHEIM": "Trollheim", "TROLLICTO": "TROLLI CTO", "TROLLMODE": "TROLL MODE", + "TROLLRUN": "TROLL", "TROLLS": "trolls in a memes world", "TRONDOG": "TronDog", "TRONI": "Tron Inu", @@ -14891,7 +15438,8 @@ "TRUMPCAT": "TRUMPCAT", "TRUMPCATF": "Trump Cat Family", "TRUMPCATS": "Trump Golden Cat", - "TRUMPCOIN": "TrumpCoin", + "TRUMPCOIN": "MAGA: Fight for Trump", + "TRUMPCOINROCKS": "TrumpCoin", "TRUMPDAO": "TRUMP DAO", "TRUMPDO": "TRUMP", "TRUMPDOGE": "Trump Doge", @@ -14955,6 +15503,7 @@ "TSLT": "Tamkin", "TSN": "Tsunami Exchange Token", "TSO": "Thesirion", + "TSOTCHKE": "tsotchke", "TSR": "Tesra", "TST": "Test", "TSTAI": "Test AI", @@ -14965,7 +15514,7 @@ "TSUKA": "Dejitaru Tsuka", "TSX": "TradeStars", "TT": "ThunderCore", - "TTC": "TTC PROTOCOL", + "TTC": "TonTycoon", "TTF": "TurboTrix Finance", "TTK": "The Three Kingdoms", "TTM": "Tradetomato", @@ -14981,9 +15530,11 @@ "TUDA": "Tutor's Diary", "TUF": "TUF Token", "TUGOU": "TuGou", + "TUKI": "Tuki", "TULIP": "Tulip Protocol", "TUNA": "TUNACOIN", "TUNE": "Bitune", + "TUNETRADEX": "TuneTrade", "TUP": "Tenup", "TUPE": "Turtle Pepe", "TUR": "Turron", @@ -15028,13 +15579,14 @@ "TX20": "Trex20", "TXA": "TXA", "TXAG": "tSILVER", + "TXAGV1": "AurusSILVER", "TXAI": "TrumpX Ai", "TXAU": "tGOLD", "TXBIT": "Txbit Token", "TXC": "TEXITcoin", "TXG": "TRUSTxGAMING", "TXL": "Autobahn Network", - "TXT": "TuneTrade", + "TXT": "Taxa Token", "TYBENG": "TYBENG", "TYBG": "Base God", "TYBGSc": "Base Goddess", @@ -15044,6 +15596,7 @@ "TYLER": "Tyler", "TYOGHOUL": "TYO GHOUL", "TYPE": "TypeAI", + "TYPEL": "TypeIt", "TYPERIUM": "Typerium", "TYPUS": "Typus", "TYRANT": "Fable Of The Dragon", @@ -15052,9 +15605,12 @@ "TYT": "Tianya Token", "TZC": "TrezarCoin", "TZKI": "Tsuzuki Inu", + "TZPEPE": "Tezos Pepe", "TZU": "Sun Tzu", "U": "Unidef", + "U2U": "U2U Network", "U8D": "Universal Dollar", + "UA1": "UA1", "UAEC": "United Arab Emirates Coin", "UAHG": "UAHg", "UAT": "UltrAlpha", @@ -15152,6 +15708,7 @@ "UMT": "UnityMeta", "UMX": "UniMex Network", "UMY": "KaraStar UMY", + "UNA": "Unagi Token", "UNAT": "Unattanium", "UNB": "Unbound Finance", "UNBNK": "Unbanked", @@ -15159,6 +15716,7 @@ "UNC": "UnCoin", "UNCL": "UNCL", "UNCN": "Unseen", + "UNCOMMONGOODS": "UNCOMMON•GOODS", "UNCX": "UniCrypt", "UND": "United Network Distribution", "UNDB": "unibot.cash", @@ -15185,8 +15743,11 @@ "UNIL": "UniLayer", "UNIM": "Unicorn Milk", "UNIO": "Unio Coin", + "UNIPOWER": "UniPower", + "UNIPT": "Universal Protocol Token", "UNIQ": "Uniqredit", "UNIQUE": "Unique One", + "UNIR": "UniRouter", "UNISD": "unified Stable Dollar", "UNISDV1": "uniswap State Dollar", "UNISTAKE": "Unistake", @@ -15232,7 +15793,7 @@ "UPR": "Upfire", "UPRO": "ULTRAPRO", "UPS": "UPFI Network", - "UPT": "Universal Protocol Token", + "UPT": "UPROCK", "UPTOS": "UPTOS", "UPUNK": "Unicly CryptoPunks Collection", "UPUSD": "Universal US Dollar", @@ -15242,7 +15803,9 @@ "URAC": "Uranus", "URALS": "Urals Coin", "URFA": "Urfaspor Token", - "URO": "UroCoin", + "URMOM": "urmom", + "URO": "Urolithin A", + "UROCOIN": "UroCoin", "URQA": "UREEQA", "URS": "URUS", "URUS": "Urus Token", @@ -15255,7 +15818,7 @@ "USCC": "USC", "USCOIN": "USCoin", "USD0": "Usual", - "USD1": "USD1", + "USD1": "World Liberty Financial USD", "USD3": "Web 3 Dollar", "USDA": "USDa", "USDACC": "USDA", @@ -15278,6 +15841,7 @@ "USDE": "Ethena USDe", "USDEBT": "USDEBT", "USDEX": "eToro US Dollar", + "USDF": "Falcon USD", "USDFL": "USDFreeLiquidity", "USDG": "Global Dollar", "USDGLOBI": "Globiance USD Stablecoin", @@ -15292,6 +15856,7 @@ "USDMA": "USD mars", "USDN": "Neutral AI", "USDO": "USD Open Dollar", + "USDONE": "Currency One USD", "USDP": "Pax Dollar", "USDPLUS": "Overnight.fi USD+", "USDQ": "Quantoz USDQ", @@ -15306,6 +15871,7 @@ "USDTV": "TetherTV", "USDTZ": "USDtez", "USDU": "Upper Dollar", + "USDUC": "Unstable Coin", "USDV": "Verified USD", "USDW": "USD DWIN", "USDX": "USDX Stablecoin", @@ -15313,6 +15879,7 @@ "USDZ": "Zedxion USDZ", "USE": "Usechain Token", "USEDCAR": "A Gently Used 2001 Honda", + "USELESS": "USELESS COIN", "USETH": "USETH", "USG": "USGold", "USH": "unshETHing_Token", @@ -15396,6 +15963,7 @@ "VANCE": "JD Vance", "VANCEMEME": "Vance Meme", "VANF": "Van Fwogh", + "VANKEDISI": "vankedisi", "VANRY": "Vanar Chain", "VANT": "Vanta Network", "VANY": "Vanywhere", @@ -15427,6 +15995,7 @@ "VCF": "Valencia CF Fan Token", "VCG": "VCGamers", "VCHF": "VNX Swiss Franc", + "VCI": "VinciToken", "VCK": "28VCK", "VCNT": "ViciCoin", "VCORE": "VCORE", @@ -15457,9 +16026,11 @@ "VEIL": "VEIL", "VEKTOR": "VEKTOR", "VELA": "Vela Token", + "VELAAI": "velaai", "VELAR": "Velar", "VELO": "Velo", "VELOD": "Velodrome Finance", + "VELODV1": "Velodrome v1", "VELOX": "Velox", "VELOXPROJECT": "Velox", "VEMP": "vEmpire DDAO", @@ -15481,7 +16052,9 @@ "VERO": "VEROPAD", "VERSA": "Versa Token", "VERSACE": "VERSACE", - "VERSE": "Verse", + "VERSE": "Verse World", + "VERSEBIT": "Verse", + "VERT": "VERT", "VERTAI": "Vertical AI", "VERTEX": "Vertex", "VERUM": "Verum Coin", @@ -15549,6 +16122,7 @@ "VIS": "Vigorus", "VISIO": "Visio", "VISION": "VisionGame", + "VISIONCITY": "Vision City", "VISR": "Visor", "VIST": "VISTA", "VISTA": "Ethervista", @@ -15567,12 +16141,13 @@ "VITY": "Vitteey", "VIU": "Viuly", "VIVEK": "Head of D.O.G.E", + "VIVI": "LH VIVI", "VIVID": "Vivid Coin", "VIVO": "VIVO Coin", "VIX": "VIXCO", "VIX7": "VIX777", "VIXV1": "VIXCO v1", - "VIZ": "Vision City", + "VIZ": "VIZ Token", "VIZION": "ViZion Protocol", "VIZSLASWAP": "VizslaSwap", "VKNF": "VKENAF", @@ -15627,6 +16202,7 @@ "VOLTX": "VolatilityX", "VOLTZ": "Voltz", "VOLX": "VolumeX", + "VON": "Vameon", "VONE": "Vone", "VONSPEED": "Andrea Von Speed", "VOOT": "VootCoin", @@ -15636,7 +16212,7 @@ "VOX": "Vox.Finance", "VOXEL": "Voxies", "VOY": "enVoy DeFi", - "VOYA": "Voyacoin", + "VOYACOIN": "Voyacoin", "VP": "Torah Network", "VPAD": "VLaunch", "VPK": "Vulture Peak", @@ -15647,6 +16223,7 @@ "VPS": "VPS AI", "VPT": "Veritas Protocol", "VR": "Victoria", + "VR1": "VR1", "VRA": "Verasity", "VRC": "Virtual Coin", "VRGW": "Virtual Reality Game World", @@ -15677,7 +16254,8 @@ "VSTA": "Vesta Finance", "VSTR": "Vestra DAO", "VSUI": "Volo Staked SUI", - "VSX": "Vsync", + "VSX": "Versus-X", + "VSYNC": "Vsync", "VSYS": "V Systems", "VT": "Virtual Tourist", "VTC": "Vertcoin", @@ -15727,10 +16305,12 @@ "W12": "W12 Protocol", "W2E": "Walk To Earn", "W3C": "W3Coin", + "W3GG": "W3GG Token", "W3M": "Web3Met", "W3S": "Web3Shot", "W3W": "Web3 Whales", "W8BIT": "8Bit Chain", + "WA7A5": "Wrapped A7A5", "WAAC": "Wrapped AyeAyeCoin", "WAB": "WABnetwork", "WABI": "WABI", @@ -15788,10 +16368,13 @@ "WASSIE": "WASSIE", "WASTED": "WastedLands", "WASTR": "Wrapped Astar", - "WAT": "Wat", + "WAT": "WATCoin", + "WAT0X63": "Wat", "WATC": "WATCoin", "WATCH": "Yieldwatch", - "WATER": "doginwotah", + "WATER": "Waterfall", + "WATERCOIN": "WATER", + "WATT": "WATTTON", "WAVAX": "Wrapped AVAX", "WAVES": "Waves", "WAVESCOMM": "Waves Community Token", @@ -15858,6 +16441,7 @@ "WEALTH": "WealthCoin", "WEAPON": "MEGAWEAPON", "WEAR": "MetaWear", + "WEAVE6": "Weave6", "WEB": "Webcoin", "WEB3": "WEB3 Inu", "WEB4": "WEB4 AI", @@ -15885,6 +16469,7 @@ "WELA": "Wrapped Elastos", "WELD": "Weld", "WELL": "Moonwell", + "WELL3": "WELL3", "WELLTOKEN": "Well", "WELLV1": "Moonwell v1", "WELON": "WrappedElon", @@ -15941,6 +16526,7 @@ "WHALE": "WHALE", "WHALES": "Whales Market", "WHAT": "What the Duck", + "WHATSONPIC": "WhatsOnPic", "WHBAR": "Wrapped HBAR", "WHC": "Whales Club", "WHEAT": "Wheat Token", @@ -15953,7 +16539,8 @@ "WHIRL": "Whirl Finance", "WHISK": "Whiskers", "WHISKEY": "WHISKEY", - "WHITE": "Whiteheart", + "WHITE": "WhiteRock", + "WHITEHEART": "Whiteheart", "WHL": "WhaleCoin", "WHO": "Truwho", "WHOLE": "Whole Network", @@ -15964,6 +16551,8 @@ "WHX": "WHITEX", "WHY": "WHY", "WHYCAT": "WhyCat", + "WHYPAD": "Unamano", + "WHYPADV1": "Unamano v1", "WIB": "Wibson", "WIBE": "Wibegram", "WIC": "Wi Coin", @@ -16005,6 +16594,7 @@ "WINTER": "Winter", "WINU": "Walter Inu", "WINX": "WinX.io", + "WIOTA": "wIOTA", "WIOTX": "Wrapped IoTeX", "WIRE": "717ai by Virtuals", "WIRTUAL": "Wirtual", @@ -16020,6 +16610,7 @@ "WIWI": "Wiggly Willy", "WIX": "Wixlar", "WIZA": "Wizardia", + "WIZZ": "Wizzwoods Token", "WJD": "WJD", "WJEWEL": "WJEWEL", "WJXN": "Jax.Network", @@ -16029,6 +16620,7 @@ "WKC": "Wiki Cat", "WKD": "Wakanda Inu", "WKEYDAO": "WebKey DAO", + "WLAI": "Weblume AI", "WLD": "Worldcoin", "WLF": "Wolfs Group", "WLFI": "World Liberty Financial", @@ -16062,6 +16654,7 @@ "WNCG": "Wrapped NCG", "WND": "WonderHero", "WNDR": "Wonderman Nation", + "WNE": "Winee3", "WNEAR": "Wrapped Near", "WNEON": "Wrapped Neon EVM", "WNET": "Wavesnode.net", @@ -16075,7 +16668,7 @@ "WNYC": "Wrapped NewYorkCoin", "WNZ": "Winerz", "WOA": "Wrapped Origin Axie", - "WOD": "World of Defish", + "WOD": "World of Dypians", "WOETH": "Wrapped Origin Ether", "WOFM": "World of Masters", "WOID": "WORLD ID", @@ -16105,9 +16698,10 @@ "WONE": "Wrapped Harmony", "WOO": "WOO Network", "WOOD": "Mindfolk Wood", - "WOOF": "Shibance Token", + "WOOF": "WoofWork.io", "WOOFY": "Woofy", "WOOL": "Wolf Game Wool", + "WOOLLY": "Miniature Woolly Mammoth", "WOONK": "Woonkly", "WOOO": "wooonen", "WOOOOO": "Wooooo! Coin", @@ -16116,10 +16710,12 @@ "WOP": "WorldPay", "WOR": "Hollywood Capital Group WARRIOR", "WORK": "Work X", + "WORKCHAIN": "WorkChain.io", "WORKE": "Worken", "WORKIE": "Workie", "WORL": "World Record Banana", "WORLD": "World Token", + "WORLDOFD": "World of Defish", "WORM": "HealthyWorm", "WORX": "Worx", "WOS": "Wolf Of Solana", @@ -16151,6 +16747,7 @@ "WRTCOIN": "WRTcoin", "WRX": "WazirX", "WRZ": "Weriz", + "WS": "Wrapped Sonic", "WSB": "WallStreetBets DApp", "WSBABY": "Wall Street Baby", "WSBC": "WSB Coin", @@ -16233,6 +16830,8 @@ "X": "X Empire", "X2": "X2Coin", "X2Y2": "X2Y2", + "X314": "X314", + "X314V1": "X314 v1", "X33": "Shadow Liquid Staking Token", "X42": "X42 Protocol", "X7": "X7", @@ -16260,6 +16859,7 @@ "XAUR": "Xaurum", "XAUT": "Tether Gold", "XAVA": "Avalaunch", + "XAVIER": "Xavier: Renegade Angel", "XAYA": "XAYA", "XB": "XBANKING", "XBASE": "ETERBASE", @@ -16296,6 +16896,7 @@ "XCFX": "Nucleon", "XCG": "Xchange", "XCH": "Chia", + "XCHAT": "XChat", "XCHF": "CryptoFranc", "XCHNG": "Chainge Finance", "XCI": "Cannabis Industry Coin", @@ -16339,7 +16940,8 @@ "XELS": "XELS Coin", "XEM": "NEM", "XEN": "XEN Crypto", - "XEND": "Xend Finance", + "XENDV1": "Xend Finance", + "XENDV2": "Xend Finance", "XENIX": "XenixCoin", "XENO": "Xeno", "XENOVERSE": "Xenoverse", @@ -16354,8 +16956,8 @@ "XFINANCE": "Xfinance", "XFIT": "Xfit", "XFLOKI": "XFLOKI", - "XFT": "Fantasy Cash", - "XFTC": "Offshift", + "XFT": "Offshift", + "XFTV1": "Offshift v1", "XFUEL": "XFUEL", "XFUND": "xFund", "XFYI": "XCredit", @@ -16365,6 +16967,7 @@ "XGD": "X Gold", "XGEM": "Exchange Genesis Ethlas Medium", "XGLI": "Glitter Finance", + "XGN": "0xGen", "XGOLD": "XGOLD COIN", "XGOX": "Go!", "XGP": "XGP", @@ -16440,6 +17043,7 @@ "XNO": "Xeno Token", "XNODE": "XNODE", "XNP": "ExenPay Token", + "XNPCS": "NPCS AI", "XNS": "Insolar", "XNT": "Exenium", "XNV": "Nerva", @@ -16454,6 +17058,7 @@ "XOXO": "XO Protocol", "XP": "Xphere", "XPA": "XPA", + "XPARTY": "X Party", "XPAT": "Bitnation Pangea", "XPAY": "Wallet Pay", "XPB": "Pebble Coin", @@ -16489,6 +17094,7 @@ "XQN": "Quotient", "XQR": "Qredit", "XQUOK": "XQUOK", + "XR": "Xraders", "XRA": "Xriba", "XRAI": "X-Ratio A", "XRAY": "Ray Network", @@ -16496,6 +17102,7 @@ "XRD": "Radix", "XRDOGE": "XRdoge", "XRE": "RevolverCoin", + "XREA": "XREATORS", "XRGB": "XRGB", "XRISE": "Xrise", "XRL": "Rialto.AI", @@ -16508,6 +17115,7 @@ "XRPAYNET": "XRPayNet", "XRPC": "Xrp Classic", "XRPCHAIN": "Ripple Chain", + "XRPCV1": "XRP Classic v1", "XRPEPE": "XRPEPE", "XRPH": "XRP Healthcare", "XRS": "Xrius", @@ -16517,7 +17125,7 @@ "XSAUCE": "xSAUCE", "XSC": "Hyperspace", "XSD": "SounDAC", - "XSEED": "BitSeeds", + "XSEED": "XSEED", "XSGD": "XSGD", "XSH": "SHIELD", "XSHIB": "XSHIB", @@ -16556,6 +17164,7 @@ "XTRM": "XTRM COIN", "XTRUMP": "X TRUMP", "XTT": "XSwap Treasure", + "XTTA": "XTTA", "XTTB20": "XTblock", "XTUSD": "XT Stablecoin XTUSD", "XTV": "XTV", @@ -16585,6 +17194,7 @@ "XY": "XY Finance", "XYM": "Symbol", "XYO": "XY Oracle", + "XYRO": "XYRO", "XYZ": "Universe.XYZ", "XZK": "Mystiko Network", "Y24": "Yield 24", @@ -16605,6 +17215,7 @@ "YAMV2": "YAM v2", "YAOYAO": "Yaoyao's Cat", "YAP": "Yap Stone", + "YAPSTER": "YAPSTER", "YARL": "Yarloo", "YAW": "Yawww", "YAWN": "YAWN", @@ -16612,6 +17223,7 @@ "YAY": "YAY Games", "YAYCOIN": "YAYcoin", "YBC": "YbCoin", + "YBDBD": "YBDBD", "YBO": "Young Boys Fan Token", "YBR": "YieldBricks", "YCC": "Yuan Chain Coin", @@ -16687,6 +17299,7 @@ "YOD": "Year of the Dragon", "YODA": "YODA", "YODE": "YodeSwap", + "YOEX": "YO EXCHANGE", "YOLO": "YoloNolo", "YOM": "YOM", "YONNY": "YONNY", @@ -16705,6 +17318,7 @@ "YOUSIM": "YouSim", "YOVI": "YobitVirtualCoin", "YOYOW": "Yoyow", + "YOZI": "YoZi Protocol", "YPC": "YoungParrot", "YPIE": "PieDAO Yearn Ecosystem Pie", "YPRISMA": "Yearn yPRISMA", @@ -16745,20 +17359,23 @@ "YYE": "YYE Energy", "YYFI": "YYFI.Protocol", "YYOLO": "yYOLO", - "YZY": "Yeezy", + "YZY": "Swasticoin", "Z3": "Z-Cubed", + "ZAAR": "THE•ORDZAAR•RUNES", "ZABAKU": "Zabaku Inu", "ZACK": "Zack Morris", "ZAFI": "ZakumiFi", - "ZAI": "Zero Collateral Dai", + "ZAI": "Zen AI", "ZAIF": "Zaif Token", + "ZAIFIN": "Zero Collateral Dai", "ZAM": "Zamio", "ZAMZAM": "ZAMZAM", "ZANO": "Zano", "ZAO": "zkTAO", - "ZAP": "Zap", + "ZAP": "ZAP", "ZAPI": "Zapicorn", "ZAPO": "Zapo AI", + "ZAPTOKEN": "Zap", "ZARP": "ZARP Stablecoin", "ZARX": "eToro South African Rand", "ZASH": "ZIMBOCASH", @@ -16794,32 +17411,36 @@ "ZEBU": "ZEBU", "ZEC": "ZCash", "ZECD": "ZCashDarkCoin", - "ZED": "ZED Token", - "ZEDCOIN": "ZedCoin", + "ZED": "ZedCoins", "ZEDD": "ZedDex", "ZEDTOKEN": "Zed Token", "ZEDX": "ZEDX Сoin", "ZEDXION": "Zedxion", "ZEDXIONV1": "Zedxion v1", "ZEE": "ZeroSwap", + "ZEEP": "ZEEPR", "ZEFI": "ZCore Finance", "ZEFU": "Zenfuse", "ZEIT": "ZeitCoin", "ZEL": "Zelcash", "ZELIX": "ZELIX", "ZEN": "Horizen", + "ZENAD": "Zenad", + "ZENAI": "Zen AI", "ZENC": "Zenc Coin", "ZEND": "zkLend", "ZENF": "Zenland", "ZENI": "Zennies", "ZENIQ": "Zeniq Coin", "ZENITH": "Zenith Chain", + "ZENPROTOCOL": "Zen Protocol", "ZENQ": "Zenqira", "ZENT": "Zentry", "ZEON": "Zeon Network", "ZEP": "Zeppelin Dao", "ZEPH": "Zephyr Protocol", "ZER": "Zero", + "ZERC": "zkRace Coin", "ZEREBRO": "Zerebro", "ZERO": "ZeroLend", "ZEROB": "ZeroBank", @@ -16864,7 +17485,8 @@ "ZIPT": "Zippie", "ZIRVE": "Zirve Coin", "ZIV4": "Ziv4 Labs", - "ZIX": "ZIX Token", + "ZIX": "Coinzix Token", + "ZIXTOKEN": "ZIX Token", "ZIZLE": "Zizle", "ZIZY": "ZIZY", "ZJLT": "ZJLT Distributed Factoring Network", @@ -16912,7 +17534,7 @@ "ZMBE": "RugZombie", "ZMN": "ZMINE", "ZMT": "Zipmex Token", - "ZND": "Zenad", + "ZND": "ZND Token", "ZNE": "ZoneCoin", "ZNN": "Zenon", "ZNT": "Zenith Finance", @@ -16935,12 +17557,13 @@ "ZOOMER": "Zoomer Coin", "ZOON": "CryptoZoon", "ZOOT": "Zoo Token", - "ZORA": "Zoracles", + "ZORA": "Zora", + "ZORACLES": "Zoracles", "ZORKSEES": "Zorksees", "ZORO": "Zoro Inu", "ZORRO": "Zorro", "ZORT": "Zort", - "ZP": "Zen Protocol", + "ZP": "Zombie Power", "ZPAE": "ZelaaPayAE", "ZPAY": "ZoidPay", "ZPC": "Zen Panda Coin", @@ -16949,7 +17572,8 @@ "ZPRO": "ZAT Project", "ZPT": "Zeepin", "ZPTC": "Zeptacoin", - "ZRC": "ZrCoin", + "ZRC": "Zircuit", + "ZRCOIN": "ZrCoin", "ZRO": "LayerZero", "ZRPY": "Zerpaay", "ZRS": "Zaros", @@ -16966,6 +17590,7 @@ "ZUC": "Zeux", "ZUCKPEPE": "ZuckPepe", "ZUKI": "Zuki Moba", + "ZULU": "Zulu Network", "ZUM": "ZumCoin", "ZUN": "Zunami Governance Token", "ZUNA": "ZUNA", @@ -16994,7 +17619,9 @@ "ZYTARA": "Zytara dollar", "ZZ": "ZigZag", "ZZC": "ZudgeZury", - "ZZZ": "zzz.finance", + "ZZZ": "ZZZ", + "ZZZV1": "zzz.finance", + "anyeth1": "anyeth1", "eFIC": "FIC Network", "ePRX": "eProxy", "gOHM": "Governance OHM", diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 2343f6c01..fb2a5403e 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -4,595 +4,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> - - - https://ghostfol.io/de - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/blog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/blog/2021/07/hallo-ghostfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/features - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/haeufig-gestellte-fragen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/maerkte - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/preise - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/registrierung - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/lexikon - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/maerkte - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ressourcen/ratgeber - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ueber-uns - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ueber-uns/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ueber-uns/datenschutzbestimmungen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ueber-uns/lizenz - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/de/ueber-uns/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/development/storybook - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/about - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/about/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/about/license - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/about/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2021/07/hello-ghostfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2022/01/ghostfolio-first-months-in-open-source - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2022/07/ghostfolio-meets-internet-identity - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2022/07/how-do-i-get-my-finances-in-order - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2022/08/500-stars-on-github - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2022/10/hacktoberfest-2022 - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2022/11/black-friday-2022 - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2022/12/the-importance-of-tracking-your-personal-finances - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/02/ghostfolio-meets-umbrel - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/03/ghostfolio-reaches-1000-stars-on-github - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/05/unlock-your-financial-potential-with-ghostfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/07/exploring-the-path-to-fire - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/08/ghostfolio-joins-oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/09/ghostfolio-2 - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/09/hacktoberfest-2023 - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/11/black-week-2023 - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2023/11/hacktoberfest-2023-debriefing - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2024/09/hacktoberfest-2024 - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/blog/2024/11/black-weeks-2024 - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/faq - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/saas - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/self-hosting - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/features - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/markets - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/pricing - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/register - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/resources - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/resources/glossary - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/resources/guides - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/resources/markets - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/en/resources/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/funcionalidades - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/mercados - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/precios - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/preguntas-mas-frecuentes - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/recursos - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/recursos/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/registro - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/sobre - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/sobre/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/sobre/licencia - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/sobre/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/es/sobre/politica-de-privacidad - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/licence - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/a-propos/politique-de-confidentialite - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/enregistrement - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/fonctionnalites - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/foire-aux-questions - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/marches - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/prix - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/ressources - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/fr/ressources/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/domande-piu-frequenti - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/funzionalita - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/informativa-sulla-privacy - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/licenza - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/informazioni-su/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/iscrizione - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/mercati - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/prezzi - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/it/risorse/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/bronnen/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/functionaliteiten - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/markten - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/open - daily - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/licentie - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/over/privacybeleid - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/prijzen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/registratie - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/nl/veelgestelde-vragen - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pl - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pl/blog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pl/cennik - ${currentDate}T00:00:00+00:00 - - - - https://ghostfol.io/pl/funkcje - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pl/o-ghostfolio - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pl/open - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pl/rynki - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pl/zarejestruj - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/blog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/funcionalidades - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/mercados - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/open - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/perguntas-mais-frequentes - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/precos - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/recursos - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/recursos/personal-finance-tools - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/registo - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/sobre - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/sobre/changelog - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/sobre/licenca - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/sobre/oss-friends - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/pt/sobre/politica-de-privacidade - ${currentDate}T00:00:00+00:00 - - - https://ghostfol.io/tr - ${currentDate}T00:00:00+00:00 - - - - https://ghostfol.io/zh - ${currentDate}T00:00:00+00:00 - + ${publicRoutes} ${personalFinanceTools} diff --git a/apps/api/src/helper/object.helper.spec.ts b/apps/api/src/helper/object.helper.spec.ts index b0370fa3f..d7caf9bc9 100644 --- a/apps/api/src/helper/object.helper.spec.ts +++ b/apps/api/src/helper/object.helper.spec.ts @@ -1515,6 +1515,7 @@ describe('redactAttributes', () => { } }, summary: { + activityCount: 29, annualizedPerformancePercent: 0.16690880197786, annualizedPerformancePercentWithCurrencyEffect: 0.1694019484552876, cash: null, @@ -1538,7 +1539,6 @@ describe('redactAttributes', () => { interest: null, items: null, liabilities: null, - ordersCount: 29, totalInvestment: null, totalValueInBaseCurrency: null, currentNetWorth: null @@ -3018,6 +3018,7 @@ describe('redactAttributes', () => { } }, summary: { + activityCount: 29, annualizedPerformancePercent: 0.16690880197786, annualizedPerformancePercentWithCurrencyEffect: 0.1694019484552876, cash: null, @@ -3041,7 +3042,6 @@ describe('redactAttributes', () => { interest: null, items: null, liabilities: null, - ordersCount: 29, totalInvestment: null, totalValueInBaseCurrency: null, currentNetWorth: null diff --git a/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts b/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts index b24fb8404..1600bd137 100644 --- a/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts +++ b/apps/api/src/interceptors/transform-data-source-in-request/transform-data-source-in-request.interceptor.ts @@ -43,7 +43,16 @@ export class TransformDataSourceInRequestInterceptor const dataSourceValue = request[type]?.dataSource; if (dataSourceValue && !DataSource[dataSourceValue]) { - request[type].dataSource = decodeDataSource(dataSourceValue); + // In Express 5, request.query is read-only, so request[type].dataSource cannot be directly modified + Object.defineProperty(request, type, { + configurable: true, + enumerable: true, + value: { + ...request[type], + dataSource: decodeDataSource(dataSourceValue) + }, + writable: true + }); } } } diff --git a/apps/api/src/main.ts b/apps/api/src/main.ts index 73502525c..41f156cbf 100644 --- a/apps/api/src/main.ts +++ b/apps/api/src/main.ts @@ -1,7 +1,8 @@ import { DEFAULT_HOST, DEFAULT_PORT, - STORYBOOK_PATH + STORYBOOK_PATH, + SUPPORTED_LANGUAGE_CODES } from '@ghostfolio/common/config'; import { @@ -18,7 +19,6 @@ import helmet from 'helmet'; import { AppModule } from './app/app.module'; import { environment } from './environments/environment'; -import { HtmlTemplateMiddleware } from './middlewares/html-template.middleware'; async function bootstrap() { const configApp = await NestFactory.create(AppModule); @@ -44,7 +44,15 @@ async function bootstrap() { defaultVersion: '1', type: VersioningType.URI }); - app.setGlobalPrefix('api', { exclude: ['sitemap.xml'] }); + app.setGlobalPrefix('api', { + exclude: [ + 'sitemap.xml', + ...SUPPORTED_LANGUAGE_CODES.map((languageCode) => { + // Exclude language-specific routes with an optional wildcard + return `/${languageCode}{/*wildcard}`; + }) + ] + }); app.useGlobalPipes( new ValidationPipe({ forbidNonWhitelisted: true, @@ -77,8 +85,6 @@ async function bootstrap() { }); } - app.use(HtmlTemplateMiddleware); - const HOST = configService.get('HOST') || DEFAULT_HOST; const PORT = configService.get('PORT') || DEFAULT_PORT; diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index 403b09610..5cf353e9a 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -7,30 +7,14 @@ import { } from '@ghostfolio/common/config'; import { DATE_FORMAT, interpolate } from '@ghostfolio/common/helper'; +import { Injectable, Logger, NestMiddleware } from '@nestjs/common'; import { format } from 'date-fns'; import { NextFunction, Request, Response } from 'express'; import * as fs from 'fs'; import { join } from 'path'; -const i18nService = new I18nService(); - -let indexHtmlMap: { [languageCode: string]: string } = {}; - const title = 'Ghostfolio'; -try { - indexHtmlMap = SUPPORTED_LANGUAGE_CODES.reduce( - (map, languageCode) => ({ - ...map, - [languageCode]: fs.readFileSync( - join(__dirname, '..', 'client', languageCode, 'index.html'), - 'utf8' - ) - }), - {} - ); -} catch {} - const locales = { '/de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt': { featureGraphicPath: 'assets/images/blog/ghostfolio-x-sackgeld.png', @@ -94,71 +78,93 @@ const locales = { } }; -const isFileRequest = (filename: string) => { - if (filename === '/assets/LICENSE') { - return true; - } else if ( - filename.includes('auth/ey') || - filename.includes( - 'personal-finance-tools/open-source-alternative-to-de.fi' - ) || - filename.includes( - 'personal-finance-tools/open-source-alternative-to-markets.sh' - ) - ) { - return false; - } +@Injectable() +export class HtmlTemplateMiddleware implements NestMiddleware { + private indexHtmlMap: { [languageCode: string]: string } = {}; - return filename.split('.').pop() !== filename; -}; + public constructor(private readonly i18nService: I18nService) { + try { + this.indexHtmlMap = SUPPORTED_LANGUAGE_CODES.reduce( + (map, languageCode) => ({ + ...map, + [languageCode]: fs.readFileSync( + join(__dirname, '..', 'client', languageCode, 'index.html'), + 'utf8' + ) + }), + {} + ); + } catch (error) { + Logger.error( + 'Failed to initialize index HTML map', + error, + 'HTMLTemplateMiddleware' + ); + } + } -export const HtmlTemplateMiddleware = async ( - request: Request, - response: Response, - next: NextFunction -) => { - const path = request.originalUrl.replace(/\/$/, ''); - let languageCode = path.substr(1, 2); + public use(request: Request, response: Response, next: NextFunction) { + const path = request.originalUrl.replace(/\/$/, ''); + let languageCode = path.substr(1, 2); - if (!SUPPORTED_LANGUAGE_CODES.includes(languageCode)) { - languageCode = DEFAULT_LANGUAGE_CODE; - } + if (!SUPPORTED_LANGUAGE_CODES.includes(languageCode)) { + languageCode = DEFAULT_LANGUAGE_CODE; + } - const currentDate = format(new Date(), DATE_FORMAT); - const rootUrl = process.env.ROOT_URL || environment.rootUrl; + const currentDate = format(new Date(), DATE_FORMAT); + const rootUrl = process.env.ROOT_URL || environment.rootUrl; - if ( - path.startsWith('/api/') || - path.startsWith(STORYBOOK_PATH) || - isFileRequest(path) || - !environment.production - ) { - // Skip - next(); - } else { - const indexHtml = interpolate(indexHtmlMap[languageCode], { - currentDate, - languageCode, - path, - rootUrl, - description: i18nService.getTranslation({ + if ( + path.startsWith('/api/') || + path.startsWith(STORYBOOK_PATH) || + this.isFileRequest(path) || + !environment.production + ) { + // Skip + next(); + } else { + const indexHtml = interpolate(this.indexHtmlMap[languageCode], { + currentDate, languageCode, - id: 'metaDescription' - }), - featureGraphicPath: - locales[path]?.featureGraphicPath ?? 'assets/cover.png', - keywords: i18nService.getTranslation({ - languageCode, - id: 'metaKeywords' - }), - title: - locales[path]?.title ?? - `${title} – ${i18nService.getTranslation({ + path, + rootUrl, + description: this.i18nService.getTranslation({ + languageCode, + id: 'metaDescription' + }), + featureGraphicPath: + locales[path]?.featureGraphicPath ?? 'assets/cover.png', + keywords: this.i18nService.getTranslation({ languageCode, - id: 'slogan' - })}` - }); + id: 'metaKeywords' + }), + title: + locales[path]?.title ?? + `${title} – ${this.i18nService.getTranslation({ + languageCode, + id: 'slogan' + })}` + }); - return response.send(indexHtml); + return response.send(indexHtml); + } } -}; + + private isFileRequest(filename: string) { + if (filename === '/assets/LICENSE') { + return true; + } else if ( + filename.includes('auth/ey') || + filename.includes( + 'personal-finance-tools/open-source-alternative-to-de.fi' + ) || + filename.includes( + 'personal-finance-tools/open-source-alternative-to-markets.sh' + ) + ) { + return false; + } + + return filename.split('.').pop() !== filename; + } +} diff --git a/apps/api/src/models/rule.ts b/apps/api/src/models/rule.ts index 187527fbb..0870be03e 100644 --- a/apps/api/src/models/rule.ts +++ b/apps/api/src/models/rule.ts @@ -1,5 +1,6 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; import { groupBy } from '@ghostfolio/common/helper'; import { PortfolioPosition, @@ -14,28 +15,28 @@ import { RuleInterface } from './interfaces/rule.interface'; export abstract class Rule implements RuleInterface { private key: string; - private name: string; + private languageCode: string; public constructor( protected exchangeRateDataService: ExchangeRateDataService, { key, - name + languageCode = DEFAULT_LANGUAGE_CODE }: { key: string; - name: string; + languageCode?: string; // TODO: Make mandatory } ) { this.key = key; - this.name = name; + this.languageCode = languageCode; } public getKey() { return this.key; } - public getName() { - return this.name; + public getLanguageCode() { + return this.languageCode; } public groupCurrentHoldingsByAttribute( @@ -73,5 +74,7 @@ export abstract class Rule implements RuleInterface { PortfolioReportRule['configuration'] >; + public abstract getName(): string; + public abstract getSettings(aUserSettings: UserSettings): T; } diff --git a/apps/api/src/models/rules/account-cluster-risk/current-investment.ts b/apps/api/src/models/rules/account-cluster-risk/current-investment.ts index 564af935d..501c9b803 100644 --- a/apps/api/src/models/rules/account-cluster-risk/current-investment.ts +++ b/apps/api/src/models/rules/account-cluster-risk/current-investment.ts @@ -1,22 +1,23 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; -import { - PortfolioDetails, - PortfolioPosition, - UserSettings -} from '@ghostfolio/common/interfaces'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; +import { PortfolioDetails, UserSettings } from '@ghostfolio/common/interfaces'; + +import { Account } from '@prisma/client'; export class AccountClusterRiskCurrentInvestment extends Rule { private accounts: PortfolioDetails['accounts']; public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, accounts: PortfolioDetails['accounts'] ) { super(exchangeRateDataService, { - key: AccountClusterRiskCurrentInvestment.name, - name: 'Investment' + languageCode, + key: AccountClusterRiskCurrentInvestment.name }); this.accounts = accounts; @@ -24,54 +25,62 @@ export class AccountClusterRiskCurrentInvestment extends Rule { public evaluate(ruleSettings: Settings) { const accounts: { - [symbol: string]: Pick & { + [symbol: string]: Pick & { investment: number; }; } = {}; for (const [accountId, account] of Object.entries(this.accounts)) { accounts[accountId] = { - name: account.name, - investment: account.valueInBaseCurrency + investment: account.valueInBaseCurrency, + name: account.name }; } - let maxItem: (typeof accounts)[0]; + let maxAccount: (typeof accounts)[0]; let totalInvestment = 0; for (const account of Object.values(accounts)) { - if (!maxItem) { - maxItem = account; + if (!maxAccount) { + maxAccount = account; } // Calculate total investment totalInvestment += account.investment; // Find maximum - if (account.investment > maxItem?.investment) { - maxItem = account; + if (account.investment > maxAccount?.investment) { + maxAccount = account; } } - const maxInvestmentRatio = maxItem?.investment / totalInvestment || 0; + const maxInvestmentRatio = maxAccount?.investment / totalInvestment || 0; if (maxInvestmentRatio > ruleSettings.thresholdMax) { return { - evaluation: `Over ${ - ruleSettings.thresholdMax * 100 - }% of your current investment is at ${maxItem.name} (${( - maxInvestmentRatio * 100 - ).toPrecision(3)}%)`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.accountClusterRiskCurrentInvestment.false', + languageCode: this.getLanguageCode(), + placeholders: { + maxAccountName: maxAccount.name, + maxInvestmentRatio: (maxInvestmentRatio * 100).toPrecision(3), + thresholdMax: ruleSettings.thresholdMax * 100 + } + }), value: false }; } return { - evaluation: `The major part of your current investment is at ${ - maxItem.name - } (${(maxInvestmentRatio * 100).toPrecision(3)}%) and does not exceed ${ - ruleSettings.thresholdMax * 100 - }%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.accountClusterRiskCurrentInvestment.true', + languageCode: this.getLanguageCode(), + placeholders: { + maxAccountName: maxAccount.name, + maxInvestmentRatio: (maxInvestmentRatio * 100).toPrecision(3), + thresholdMax: ruleSettings.thresholdMax * 100 + } + }), value: true }; } @@ -88,6 +97,13 @@ export class AccountClusterRiskCurrentInvestment extends Rule { }; } + public getName() { + return this.i18nService.getTranslation({ + id: 'rule.accountClusterRiskCurrentInvestment', + languageCode: this.getLanguageCode() + }); + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/account-cluster-risk/single-account.ts b/apps/api/src/models/rules/account-cluster-risk/single-account.ts index ef549e579..c35cabd9a 100644 --- a/apps/api/src/models/rules/account-cluster-risk/single-account.ts +++ b/apps/api/src/models/rules/account-cluster-risk/single-account.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PortfolioDetails, UserSettings } from '@ghostfolio/common/interfaces'; export class AccountClusterRiskSingleAccount extends Rule { @@ -8,11 +9,13 @@ export class AccountClusterRiskSingleAccount extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, accounts: PortfolioDetails['accounts'] ) { super(exchangeRateDataService, { - key: AccountClusterRiskSingleAccount.name, - name: 'Single Account' + languageCode, + key: AccountClusterRiskSingleAccount.name }); this.accounts = accounts; @@ -23,13 +26,22 @@ export class AccountClusterRiskSingleAccount extends Rule { if (accounts.length === 1) { return { - evaluation: `Your net worth is managed by a single account`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.accountClusterRiskSingleAccount.false', + languageCode: this.getLanguageCode() + }), value: false }; } return { - evaluation: `Your net worth is managed by ${accounts.length} accounts`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.accountClusterRiskSingleAccount.true', + languageCode: this.getLanguageCode(), + placeholders: { + accountsLength: accounts.length + } + }), value: true }; } @@ -38,6 +50,14 @@ export class AccountClusterRiskSingleAccount extends Rule { return undefined; } + public getName() { + return this.i18nService.getTranslation({ + id: 'rule.accountClusterRiskSingleAccount', + languageCode: this.getLanguageCode() + }); + return 'Single Account'; + } + public getSettings({ xRayRules }: UserSettings): RuleSettings { return { isActive: xRayRules?.[this.getKey()].isActive ?? true diff --git a/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts b/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts index b67e01e61..704cfdb85 100644 --- a/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts +++ b/apps/api/src/models/rules/asset-class-cluster-risk/equity.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces'; export class AssetClassClusterRiskEquity extends Rule { @@ -8,11 +9,13 @@ export class AssetClassClusterRiskEquity extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, holdings: PortfolioPosition[] ) { super(exchangeRateDataService, { - key: AssetClassClusterRiskEquity.name, - name: 'Equity' + languageCode, + key: AssetClassClusterRiskEquity.name }); this.holdings = holdings; @@ -41,26 +44,39 @@ export class AssetClassClusterRiskEquity extends Rule { if (equityValueRatio > ruleSettings.thresholdMax) { return { - evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) exceeds ${( - ruleSettings.thresholdMax * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity.false.max', + languageCode: this.getLanguageCode(), + placeholders: { + equityValueRatio: (equityValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3) + } + }), value: false }; } else if (equityValueRatio < ruleSettings.thresholdMin) { return { - evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) is below ${( - ruleSettings.thresholdMin * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity.false.min', + languageCode: this.getLanguageCode(), + placeholders: { + equityValueRatio: (equityValueRatio * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: false }; } - return { - evaluation: `The equity contribution of your current investment (${(equityValueRatio * 100).toPrecision(3)}%) is within the range of ${( - ruleSettings.thresholdMin * 100 - ).toPrecision( - 3 - )}% and ${(ruleSettings.thresholdMax * 100).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity.true', + languageCode: this.getLanguageCode(), + placeholders: { + equityValueRatio: (equityValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: true }; } @@ -78,6 +94,13 @@ export class AssetClassClusterRiskEquity extends Rule { }; } + public getName() { + return this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskEquity', + languageCode: this.getLanguageCode() + }); + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts b/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts index eb744a143..e0ca92311 100644 --- a/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts +++ b/apps/api/src/models/rules/asset-class-cluster-risk/fixed-income.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces'; export class AssetClassClusterRiskFixedIncome extends Rule { @@ -8,11 +9,13 @@ export class AssetClassClusterRiskFixedIncome extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, holdings: PortfolioPosition[] ) { super(exchangeRateDataService, { - key: AssetClassClusterRiskFixedIncome.name, - name: 'Fixed Income' + languageCode, + key: AssetClassClusterRiskFixedIncome.name }); this.holdings = holdings; @@ -41,26 +44,39 @@ export class AssetClassClusterRiskFixedIncome extends Rule { if (fixedIncomeValueRatio > ruleSettings.thresholdMax) { return { - evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) exceeds ${( - ruleSettings.thresholdMax * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome.false.max', + languageCode: this.getLanguageCode(), + placeholders: { + fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3) + } + }), value: false }; } else if (fixedIncomeValueRatio < ruleSettings.thresholdMin) { return { - evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) is below ${( - ruleSettings.thresholdMin * 100 - ).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome.false.min', + languageCode: this.getLanguageCode(), + placeholders: { + fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: false }; } - return { - evaluation: `The fixed income contribution of your current investment (${(fixedIncomeValueRatio * 100).toPrecision(3)}%) is within the range of ${( - ruleSettings.thresholdMin * 100 - ).toPrecision( - 3 - )}% and ${(ruleSettings.thresholdMax * 100).toPrecision(3)}%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome.true', + languageCode: this.getLanguageCode(), + placeholders: { + fixedIncomeValueRatio: (fixedIncomeValueRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toPrecision(3), + thresholdMin: (ruleSettings.thresholdMin * 100).toPrecision(3) + } + }), value: true }; } @@ -78,6 +94,13 @@ export class AssetClassClusterRiskFixedIncome extends Rule { }; } + public getName() { + return this.i18nService.getTranslation({ + id: 'rule.assetClassClusterRiskFixedIncome', + languageCode: this.getLanguageCode() + }); + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts index 90ee29c54..0bf93e9b9 100644 --- a/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts +++ b/apps/api/src/models/rules/currency-cluster-risk/base-currency-current-investment.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { PortfolioPosition, UserSettings } from '@ghostfolio/common/interfaces'; export class CurrencyClusterRiskBaseCurrencyCurrentInvestment extends Rule { @@ -8,11 +9,13 @@ export class CurrencyClusterRiskBaseCurrencyCurrentInvestment extends Rule { @@ -8,11 +9,13 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, - holdings: PortfolioPosition[] + private i18nService: I18nService, + holdings: PortfolioPosition[], + languageCode: string ) { super(exchangeRateDataService, { key: CurrencyClusterRiskCurrentInvestment.name, - name: 'Investment' + languageCode }); this.holdings = holdings; @@ -42,21 +45,29 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { if (maxValueRatio > ruleSettings.thresholdMax) { return { - evaluation: `Over ${ - ruleSettings.thresholdMax * 100 - }% of your current investment is in ${maxItem.groupKey} (${( - maxValueRatio * 100 - ).toPrecision(3)}%)`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.currencyClusterRiskCurrentInvestment.false', + languageCode: this.getLanguageCode(), + placeholders: { + currency: maxItem.groupKey as string, + maxValueRatio: (maxValueRatio * 100).toPrecision(3), + thresholdMax: ruleSettings.thresholdMax * 100 + } + }), value: false }; } return { - evaluation: `The major part of your current investment is in ${ - maxItem?.groupKey ?? ruleSettings.baseCurrency - } (${(maxValueRatio * 100).toPrecision(3)}%) and does not exceed ${ - ruleSettings.thresholdMax * 100 - }%`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.currencyClusterRiskCurrentInvestment.true', + languageCode: this.getLanguageCode(), + placeholders: { + currency: maxItem.groupKey as string, + maxValueRatio: (maxValueRatio * 100).toPrecision(3), + thresholdMax: ruleSettings.thresholdMax * 100 + } + }), value: true }; } @@ -73,6 +84,13 @@ export class CurrencyClusterRiskCurrentInvestment extends Rule { }; } + public getName() { + return this.i18nService.getTranslation({ + id: 'rule.currencyClusterRiskCurrentInvestment', + languageCode: this.getLanguageCode() + }); + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts b/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts index 15e113927..8f3ef0d65 100644 --- a/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts +++ b/apps/api/src/models/rules/economic-market-cluster-risk/developed-markets.ts @@ -13,8 +13,7 @@ export class EconomicMarketClusterRiskDevelopedMarkets extends Rule { developedMarketsValueInBaseCurrency: number ) { super(exchangeRateDataService, { - key: EconomicMarketClusterRiskDevelopedMarkets.name, - name: 'Developed Markets' + key: EconomicMarketClusterRiskDevelopedMarkets.name }); this.currentValueInBaseCurrency = currentValueInBaseCurrency; @@ -67,6 +66,10 @@ export class EconomicMarketClusterRiskDevelopedMarkets extends Rule { }; } + public getName() { + return 'Developed Markets'; + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts b/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts index 8fccdf1d8..48eff22cf 100644 --- a/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts +++ b/apps/api/src/models/rules/economic-market-cluster-risk/emerging-markets.ts @@ -13,8 +13,7 @@ export class EconomicMarketClusterRiskEmergingMarkets extends Rule { emergingMarketsValueInBaseCurrency: number ) { super(exchangeRateDataService, { - key: EconomicMarketClusterRiskEmergingMarkets.name, - name: 'Emerging Markets' + key: EconomicMarketClusterRiskEmergingMarkets.name }); this.currentValueInBaseCurrency = currentValueInBaseCurrency; @@ -67,6 +66,10 @@ export class EconomicMarketClusterRiskEmergingMarkets extends Rule { }; } + public getName() { + return 'Emerging Markets'; + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts index d13f2ffc5..67c0f297e 100644 --- a/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts +++ b/apps/api/src/models/rules/emergency-fund/emergency-fund-setup.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { UserSettings } from '@ghostfolio/common/interfaces'; export class EmergencyFundSetup extends Rule { @@ -8,11 +9,13 @@ export class EmergencyFundSetup extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, emergencyFund: number ) { super(exchangeRateDataService, { - key: EmergencyFundSetup.name, - name: 'Emergency Fund: Set up' + languageCode, + key: EmergencyFundSetup.name }); this.emergencyFund = emergencyFund; @@ -21,13 +24,19 @@ export class EmergencyFundSetup extends Rule { public evaluate() { if (!this.emergencyFund) { return { - evaluation: 'No emergency fund has been set up', + evaluation: this.i18nService.getTranslation({ + id: 'rule.emergencyFundSetup.false', + languageCode: this.getLanguageCode() + }), value: false }; } return { - evaluation: 'An emergency fund has been set up', + evaluation: this.i18nService.getTranslation({ + id: 'rule.emergencyFundSetup.true', + languageCode: this.getLanguageCode() + }), value: true }; } @@ -36,6 +45,13 @@ export class EmergencyFundSetup extends Rule { return undefined; } + public getName() { + return this.i18nService.getTranslation({ + id: 'rule.emergencyFundSetup', + languageCode: this.getLanguageCode() + }); + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts b/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts index fa9d7e7bc..89fe32dbf 100644 --- a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts +++ b/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts @@ -1,6 +1,7 @@ import { RuleSettings } from '@ghostfolio/api/models/interfaces/rule-settings.interface'; import { Rule } from '@ghostfolio/api/models/rule'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { UserSettings } from '@ghostfolio/common/interfaces'; export class FeeRatioInitialInvestment extends Rule { @@ -9,12 +10,14 @@ export class FeeRatioInitialInvestment extends Rule { public constructor( protected exchangeRateDataService: ExchangeRateDataService, + private i18nService: I18nService, + languageCode: string, totalInvestment: number, fees: number ) { super(exchangeRateDataService, { - key: FeeRatioInitialInvestment.name, - name: 'Fee Ratio' + languageCode, + key: FeeRatioInitialInvestment.name }); this.fees = fees; @@ -28,17 +31,27 @@ export class FeeRatioInitialInvestment extends Rule { if (feeRatio > ruleSettings.thresholdMax) { return { - evaluation: `The fees do exceed ${ - ruleSettings.thresholdMax * 100 - }% of your initial investment (${(feeRatio * 100).toPrecision(3)}%)`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.feeRatioInitialInvestment.false', + languageCode: this.getLanguageCode(), + placeholders: { + feeRatio: (ruleSettings.thresholdMax * 100).toFixed(2), + thresholdMax: (feeRatio * 100).toPrecision(3) + } + }), value: false }; } return { - evaluation: `The fees do not exceed ${ - ruleSettings.thresholdMax * 100 - }% of your initial investment (${(feeRatio * 100).toPrecision(3)}%)`, + evaluation: this.i18nService.getTranslation({ + id: 'rule.feeRatioInitialInvestment.true', + languageCode: this.getLanguageCode(), + placeholders: { + feeRatio: (feeRatio * 100).toPrecision(3), + thresholdMax: (ruleSettings.thresholdMax * 100).toFixed(2) + } + }), value: true }; } @@ -55,6 +68,13 @@ export class FeeRatioInitialInvestment extends Rule { }; } + public getName() { + return this.i18nService.getTranslation({ + id: 'rule.feeRatioInitialInvestment', + languageCode: this.getLanguageCode() + }); + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts b/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts index d49849d54..823da9e27 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/asia-pacific.ts @@ -14,8 +14,7 @@ export class RegionalMarketClusterRiskAsiaPacific extends Rule { asiaPacificValueInBaseCurrency: number ) { super(exchangeRateDataService, { - key: RegionalMarketClusterRiskAsiaPacific.name, - name: 'Asia-Pacific' + key: RegionalMarketClusterRiskAsiaPacific.name }); this.asiaPacificValueInBaseCurrency = asiaPacificValueInBaseCurrency; @@ -66,6 +65,10 @@ export class RegionalMarketClusterRiskAsiaPacific extends Rule { }; } + public getName() { + return 'Asia-Pacific'; + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts b/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts index 2d9a3b394..b1ab74e1f 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/emerging-markets.ts @@ -14,8 +14,7 @@ export class RegionalMarketClusterRiskEmergingMarkets extends Rule { emergingMarketsValueInBaseCurrency: number ) { super(exchangeRateDataService, { - key: RegionalMarketClusterRiskEmergingMarkets.name, - name: 'Emerging Markets' + key: RegionalMarketClusterRiskEmergingMarkets.name }); this.currentValueInBaseCurrency = currentValueInBaseCurrency; @@ -68,6 +67,10 @@ export class RegionalMarketClusterRiskEmergingMarkets extends Rule { }; } + public getName() { + return 'Emerging Markets'; + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts b/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts index d33190ceb..3b069cf57 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/europe.ts @@ -14,8 +14,7 @@ export class RegionalMarketClusterRiskEurope extends Rule { europeValueInBaseCurrency: number ) { super(exchangeRateDataService, { - key: RegionalMarketClusterRiskEurope.name, - name: 'Europe' + key: RegionalMarketClusterRiskEurope.name }); this.currentValueInBaseCurrency = currentValueInBaseCurrency; @@ -66,6 +65,10 @@ export class RegionalMarketClusterRiskEurope extends Rule { }; } + public getName() { + return 'Europe'; + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts b/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts index 4694b0006..511393cfb 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/japan.ts @@ -14,8 +14,7 @@ export class RegionalMarketClusterRiskJapan extends Rule { japanValueInBaseCurrency: number ) { super(exchangeRateDataService, { - key: RegionalMarketClusterRiskJapan.name, - name: 'Japan' + key: RegionalMarketClusterRiskJapan.name }); this.currentValueInBaseCurrency = currentValueInBaseCurrency; @@ -66,6 +65,10 @@ export class RegionalMarketClusterRiskJapan extends Rule { }; } + public getName() { + return 'Japan'; + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts b/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts index 4563b7c54..5bea57db1 100644 --- a/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts +++ b/apps/api/src/models/rules/regional-market-cluster-risk/north-america.ts @@ -14,8 +14,7 @@ export class RegionalMarketClusterRiskNorthAmerica extends Rule { northAmericaValueInBaseCurrency: number ) { super(exchangeRateDataService, { - key: RegionalMarketClusterRiskNorthAmerica.name, - name: 'North America' + key: RegionalMarketClusterRiskNorthAmerica.name }); this.currentValueInBaseCurrency = currentValueInBaseCurrency; @@ -66,6 +65,10 @@ export class RegionalMarketClusterRiskNorthAmerica extends Rule { }; } + public getName() { + return 'North America'; + } + public getSettings({ baseCurrency, xRayRules }: UserSettings): Settings { return { baseCurrency, diff --git a/apps/api/src/services/benchmark/benchmark.service.ts b/apps/api/src/services/benchmark/benchmark.service.ts index f37f26bfc..4b1d9a65f 100644 --- a/apps/api/src/services/benchmark/benchmark.service.ts +++ b/apps/api/src/services/benchmark/benchmark.service.ts @@ -106,9 +106,9 @@ export class BenchmarkService { enableSharing = false } = {}): Promise[]> { const symbolProfileIds: string[] = ( - ((await this.propertyService.getByKey( + (await this.propertyService.getByKey( PROPERTY_BENCHMARKS - )) as BenchmarkProperty[]) ?? [] + )) ?? [] ) .filter((benchmark) => { if (enableSharing) { @@ -154,9 +154,9 @@ export class BenchmarkService { } let benchmarks = - ((await this.propertyService.getByKey( + (await this.propertyService.getByKey( PROPERTY_BENCHMARKS - )) as BenchmarkProperty[]) ?? []; + )) ?? []; benchmarks.push({ symbolProfileId: assetProfile.id }); @@ -191,9 +191,9 @@ export class BenchmarkService { } let benchmarks = - ((await this.propertyService.getByKey( + (await this.propertyService.getByKey( PROPERTY_BENCHMARKS - )) as BenchmarkProperty[]) ?? []; + )) ?? []; benchmarks = benchmarks.filter(({ symbolProfileId }) => { return symbolProfileId !== assetProfile.id; diff --git a/apps/api/src/services/cron/cron.module.ts b/apps/api/src/services/cron/cron.module.ts new file mode 100644 index 000000000..06f9d2caa --- /dev/null +++ b/apps/api/src/services/cron/cron.module.ts @@ -0,0 +1,23 @@ +import { UserModule } from '@ghostfolio/api/app/user/user.module'; +import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; +import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; +import { DataGatheringModule } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.module'; +import { TwitterBotModule } from '@ghostfolio/api/services/twitter-bot/twitter-bot.module'; + +import { Module } from '@nestjs/common'; + +import { CronService } from './cron.service'; + +@Module({ + imports: [ + ConfigurationModule, + DataGatheringModule, + ExchangeRateDataModule, + PropertyModule, + TwitterBotModule, + UserModule + ], + providers: [CronService] +}) +export class CronModule {} diff --git a/apps/api/src/services/cron.service.ts b/apps/api/src/services/cron/cron.service.ts similarity index 79% rename from apps/api/src/services/cron.service.ts rename to apps/api/src/services/cron/cron.service.ts index 3d4aff08b..b770aa2d7 100644 --- a/apps/api/src/services/cron.service.ts +++ b/apps/api/src/services/cron/cron.service.ts @@ -1,4 +1,9 @@ import { UserService } from '@ghostfolio/api/app/user/user.service'; +import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; +import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { DataGatheringService } from '@ghostfolio/api/services/queues/data-gathering/data-gathering.service'; +import { TwitterBotService } from '@ghostfolio/api/services/twitter-bot/twitter-bot.service'; import { DATA_GATHERING_QUEUE_PRIORITY_LOW, GATHER_ASSET_PROFILE_PROCESS_JOB_NAME, @@ -10,12 +15,6 @@ import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { Injectable } from '@nestjs/common'; import { Cron, CronExpression } from '@nestjs/schedule'; -import { ConfigurationService } from './configuration/configuration.service'; -import { ExchangeRateDataService } from './exchange-rate-data/exchange-rate-data.service'; -import { PropertyService } from './property/property.service'; -import { DataGatheringService } from './queues/data-gathering/data-gathering.service'; -import { TwitterBotService } from './twitter-bot/twitter-bot.service'; - @Injectable() export class CronService { private static readonly EVERY_SUNDAY_AT_LUNCH_TIME = '0 12 * * 0'; @@ -43,7 +42,9 @@ export class CronService { @Cron(CronExpression.EVERY_DAY_AT_5PM) public async runEveryDayAtFivePm() { - this.twitterBotService.tweetFearAndGreedIndex(); + if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { + this.twitterBotService.tweetFearAndGreedIndex(); + } } @Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT) diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index 94a466742..8b76ae86b 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -23,7 +23,9 @@ import type { Price } from 'yahoo-finance2/esm/src/modules/quoteSummary-iface'; @Injectable() export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { - private readonly yahooFinance = new YahooFinance(); + private readonly yahooFinance = new YahooFinance({ + suppressNotices: ['yahooSurvey'] + }); public constructor( private readonly cryptocurrencyService: CryptocurrencyService diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 3d8f2e553..a850991f3 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -29,7 +29,7 @@ import { import { hasRole } from '@ghostfolio/common/permissions'; import type { Granularity, UserWithSettings } from '@ghostfolio/common/types'; -import { Inject, Injectable, Logger } from '@nestjs/common'; +import { Inject, Injectable, Logger, OnModuleInit } from '@nestjs/common'; import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { eachDayOfInterval, format, isBefore, isValid } from 'date-fns'; @@ -37,7 +37,7 @@ import { groupBy, isEmpty, isNumber, uniqWith } from 'lodash'; import ms from 'ms'; @Injectable() -export class DataProviderService { +export class DataProviderService implements OnModuleInit { private dataProviderMapping: { [dataProviderName: string]: string }; public constructor( @@ -48,15 +48,13 @@ export class DataProviderService { private readonly prismaService: PrismaService, private readonly propertyService: PropertyService, private readonly redisCacheService: RedisCacheService - ) { - this.initialize(); - } + ) {} - public async initialize() { + public async onModuleInit() { this.dataProviderMapping = - ((await this.propertyService.getByKey(PROPERTY_DATA_SOURCE_MAPPING)) as { + (await this.propertyService.getByKey<{ [dataProviderName: string]: string; - }) ?? {}; + }>(PROPERTY_DATA_SOURCE_MAPPING)) ?? {}; } public async checkQuote(dataSource: DataSource) { @@ -163,8 +161,10 @@ export class DataProviderService { } public async getDataSources({ + includeGhostfolio = false, user }: { + includeGhostfolio?: boolean; user: UserWithSettings; }): Promise { let dataSourcesKey: 'DATA_SOURCES' | 'DATA_SOURCES_LEGACY' = 'DATA_SOURCES'; @@ -183,11 +183,11 @@ export class DataProviderService { return DataSource[dataSource]; }); - const ghostfolioApiKey = (await this.propertyService.getByKey( + const ghostfolioApiKey = await this.propertyService.getByKey( PROPERTY_API_KEY_GHOSTFOLIO - )) as string; + ); - if (ghostfolioApiKey || hasRole(user, 'ADMIN')) { + if (includeGhostfolio || ghostfolioApiKey) { dataSources.push('GHOSTFOLIO'); } @@ -663,9 +663,6 @@ export class DataProviderService { // Only allow symbols with supported currency return currency ? true : false; }) - .sort(({ name: name1 }, { name: name2 }) => { - return name1?.toLowerCase().localeCompare(name2?.toLowerCase()); - }) .map((lookupItem) => { if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { if (user.subscription.type === 'Premium') { @@ -679,7 +676,21 @@ export class DataProviderService { lookupItem.dataProviderInfo.isPremium = false; } + if ( + lookupItem.assetSubClass === 'CRYPTOCURRENCY' && + user?.Settings?.settings.isExperimentalFeatures + ) { + // Remove DEFAULT_CURRENCY at the end of cryptocurrency names + lookupItem.name = lookupItem.name.replace( + new RegExp(` ${DEFAULT_CURRENCY}$`), + '' + ); + } + return lookupItem; + }) + .sort(({ name: name1 }, { name: name2 }) => { + return name1?.toLowerCase().localeCompare(name2?.toLowerCase()); }); return { diff --git a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts index d0e674c4d..a9f171f13 100644 --- a/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts +++ b/apps/api/src/services/data-provider/financial-modeling-prep/financial-modeling-prep.service.ts @@ -22,6 +22,7 @@ import { LookupItem, LookupResponse } from '@ghostfolio/common/interfaces'; +import { MarketState } from '@ghostfolio/common/types'; import { Injectable, Logger } from '@nestjs/common'; import { @@ -378,12 +379,22 @@ export class FinancialModelingPrepService implements DataProviderInterface { ); for (const { price, symbol } of quotes) { + let marketState: MarketState = 'delayed'; + + if ( + isCurrency( + symbol.substring(0, symbol.length - DEFAULT_CURRENCY.length) + ) + ) { + marketState = 'open'; + } + response[symbol] = { + marketState, currency: currencyBySymbolMap[symbol]?.currency, dataProviderInfo: this.getDataProviderInfo(), dataSource: DataSource.FINANCIAL_MODELING_PREP, - marketPrice: price, - marketState: 'delayed' + marketPrice: price }; } } catch (error) { diff --git a/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts b/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts index 90354ace5..3fd9e1bea 100644 --- a/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts +++ b/apps/api/src/services/data-provider/ghostfolio/ghostfolio.service.ts @@ -295,9 +295,9 @@ export class GhostfolioService implements DataProviderInterface { } private async getRequestHeaders() { - const apiKey = (await this.propertyService.getByKey( + const apiKey = await this.propertyService.getByKey( PROPERTY_API_KEY_GHOSTFOLIO - )) as string; + ); return { [HEADER_KEY_TOKEN]: `Api-Key ${apiKey}` diff --git a/apps/api/src/services/data-provider/manual/manual.service.ts b/apps/api/src/services/data-provider/manual/manual.service.ts index 66e625e47..1c1c4c2da 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -104,7 +104,7 @@ export class ManualService implements DataProviderInterface { } return historical; - } else if (selector === undefined || url === undefined) { + } else if (!selector || !url) { return {}; } @@ -162,7 +162,11 @@ export class ManualService implements DataProviderInterface { const symbolProfilesWithScraperConfigurationAndInstantMode = symbolProfiles.filter(({ scraperConfiguration }) => { - return scraperConfiguration?.mode === 'instant'; + return ( + scraperConfiguration?.mode === 'instant' && + scraperConfiguration?.selector && + scraperConfiguration?.url + ); }); const scraperResultPromises = @@ -282,14 +286,12 @@ export class ManualService implements DataProviderInterface { ) }); + let value: string; + if (response.headers.get('content-type')?.includes('application/json')) { const data = await response.json(); - const value = String( - jsonpath.query(data, scraperConfiguration.selector)[0] - ); - - return extractNumberFromString({ locale, value }); + value = String(jsonpath.query(data, scraperConfiguration.selector)[0]); } else { const $ = cheerio.load(await response.text()); @@ -299,10 +301,24 @@ export class ManualService implements DataProviderInterface { } catch {} } + value = $(scraperConfiguration.selector).first().text(); + + const lines = value?.split('\n') ?? []; + + const lineWithDigits = lines.find((line) => { + return /\d/.test(line); + }); + + if (lineWithDigits) { + value = lineWithDigits; + } + return extractNumberFromString({ locale, - value: $(scraperConfiguration.selector).first().text() + value }); } + + return extractNumberFromString({ locale, value }); } } diff --git a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts index 05f1c0e5d..5675f1eb0 100644 --- a/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts +++ b/apps/api/src/services/data-provider/rapid-api/rapid-api.service.ts @@ -11,7 +11,10 @@ import { IDataProviderHistoricalResponse, IDataProviderResponse } from '@ghostfolio/api/services/interfaces/interfaces'; -import { ghostfolioFearAndGreedIndexSymbol } from '@ghostfolio/common/config'; +import { + ghostfolioFearAndGreedIndexSymbol, + ghostfolioFearAndGreedIndexSymbolStocks +} from '@ghostfolio/common/config'; import { DATE_FORMAT, getYesterday } from '@ghostfolio/common/helper'; import { DataProviderInfo, @@ -62,11 +65,16 @@ export class RapidApiService implements DataProviderInterface { [symbol: string]: { [date: string]: IDataProviderHistoricalResponse }; }> { try { - if (symbol === ghostfolioFearAndGreedIndexSymbol) { + if ( + [ + ghostfolioFearAndGreedIndexSymbol, + ghostfolioFearAndGreedIndexSymbolStocks + ].includes(symbol) + ) { const fgi = await this.getFearAndGreedIndex(); return { - [ghostfolioFearAndGreedIndexSymbol]: { + [symbol]: { [format(getYesterday(), DATE_FORMAT)]: { marketPrice: fgi.previousClose.value } @@ -99,11 +107,16 @@ export class RapidApiService implements DataProviderInterface { try { const symbol = symbols[0]; - if (symbol === ghostfolioFearAndGreedIndexSymbol) { + if ( + [ + ghostfolioFearAndGreedIndexSymbol, + ghostfolioFearAndGreedIndexSymbolStocks + ].includes(symbol) + ) { const fgi = await this.getFearAndGreedIndex(); return { - [ghostfolioFearAndGreedIndexSymbol]: { + [symbol]: { currency: undefined, dataSource: this.getName(), marketPrice: fgi.now.value, diff --git a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts index d5a132b41..eb6f85d73 100644 --- a/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts @@ -30,12 +30,17 @@ import { HistoricalDividendsResult, HistoricalHistoryResult } from 'yahoo-finance2/esm/src/modules/historical'; -import { Quote } from 'yahoo-finance2/esm/src/modules/quote'; -import { SearchQuoteNonYahoo } from 'yahoo-finance2/script/src/modules/search'; +import { + Quote, + QuoteResponseArray +} from 'yahoo-finance2/esm/src/modules/quote'; +import { SearchQuoteNonYahoo } from 'yahoo-finance2/esm/src/modules/search'; @Injectable() export class YahooFinanceService implements DataProviderInterface { - private readonly yahooFinance = new YahooFinance(); + private readonly yahooFinance = new YahooFinance({ + suppressNotices: ['yahooSurvey'] + }); public constructor( private readonly cryptocurrencyService: CryptocurrencyService, @@ -281,11 +286,19 @@ export class YahooFinanceService implements DataProviderInterface { return true; }); - const marketData = await this.yahooFinance.quote( - quotes.map(({ symbol }) => { - return symbol; - }) - ); + let marketData: QuoteResponseArray = []; + + try { + marketData = await this.yahooFinance.quote( + quotes.map(({ symbol }) => { + return symbol; + }) + ); + } catch (error) { + if (error?.result?.length > 0) { + marketData = error.result; + } + } for (const marketDataItem of marketData) { const quote = quotes.find((currentQuote) => { diff --git a/apps/api/src/services/demo/demo.module.ts b/apps/api/src/services/demo/demo.module.ts new file mode 100644 index 000000000..8f86de058 --- /dev/null +++ b/apps/api/src/services/demo/demo.module.ts @@ -0,0 +1,13 @@ +import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; +import { PropertyModule } from '@ghostfolio/api/services/property/property.module'; + +import { Module } from '@nestjs/common'; + +import { DemoService } from './demo.service'; + +@Module({ + exports: [DemoService], + imports: [PrismaModule, PropertyModule], + providers: [DemoService] +}) +export class DemoModule {} diff --git a/apps/api/src/services/demo/demo.service.ts b/apps/api/src/services/demo/demo.service.ts new file mode 100644 index 000000000..8f3658736 --- /dev/null +++ b/apps/api/src/services/demo/demo.service.ts @@ -0,0 +1,59 @@ +import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; +import { PropertyService } from '@ghostfolio/api/services/property/property.service'; +import { + PROPERTY_DEMO_ACCOUNT_ID, + PROPERTY_DEMO_USER_ID, + TAG_ID_DEMO +} from '@ghostfolio/common/config'; + +import { Injectable } from '@nestjs/common'; +import { v4 as uuidv4 } from 'uuid'; + +@Injectable() +export class DemoService { + public constructor( + private readonly prismaService: PrismaService, + private readonly propertyService: PropertyService + ) {} + + public async syncDemoUserAccount() { + const [demoAccountId, demoUserId] = await Promise.all([ + this.propertyService.getByKey(PROPERTY_DEMO_ACCOUNT_ID), + this.propertyService.getByKey(PROPERTY_DEMO_USER_ID) + ]); + + let activities = await this.prismaService.order.findMany({ + orderBy: { + date: 'asc' + }, + where: { + tags: { + some: { + id: TAG_ID_DEMO + } + } + } + }); + + activities = activities.map((activity) => { + return { + ...activity, + accountId: demoAccountId, + accountUserId: demoUserId, + comment: null, + id: uuidv4(), + userId: demoUserId + }; + }); + + await this.prismaService.order.deleteMany({ + where: { + userId: demoUserId + } + }); + + return this.prismaService.order.createMany({ + data: activities + }); + } +} diff --git a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts index 0a2d177ce..433547c94 100644 --- a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts +++ b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts @@ -497,9 +497,8 @@ export class ExchangeRateDataService { currencies.push(currency); }); - const customCurrencies = (await this.propertyService.getByKey( - PROPERTY_CURRENCIES - )) as string[]; + const customCurrencies = + await this.propertyService.getByKey(PROPERTY_CURRENCIES); if (customCurrencies?.length > 0) { currencies = currencies.concat(customCurrencies); diff --git a/apps/api/src/services/i18n/i18n.module.ts b/apps/api/src/services/i18n/i18n.module.ts new file mode 100644 index 000000000..68211de40 --- /dev/null +++ b/apps/api/src/services/i18n/i18n.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; + +import { I18nService } from './i18n.service'; + +@Module({ + exports: [I18nService], + providers: [I18nService] +}) +export class I18nModule {} diff --git a/apps/api/src/services/i18n/i18n.service.ts b/apps/api/src/services/i18n/i18n.service.ts index 13193fc6a..a0389ab36 100644 --- a/apps/api/src/services/i18n/i18n.service.ts +++ b/apps/api/src/services/i18n/i18n.service.ts @@ -1,10 +1,11 @@ import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; -import { Logger } from '@nestjs/common'; +import { Injectable, Logger } from '@nestjs/common'; import * as cheerio from 'cheerio'; import { readFileSync, readdirSync } from 'fs'; import { join } from 'path'; +@Injectable() export class I18nService { private localesPath = join(__dirname, 'assets', 'locales'); private translations: { [locale: string]: cheerio.CheerioAPI } = {}; @@ -15,10 +16,12 @@ export class I18nService { public getTranslation({ id, - languageCode + languageCode, + placeholders }: { id: string; languageCode: string; + placeholders?: Record; }): string { const $ = this.translations[languageCode]; @@ -26,7 +29,7 @@ export class I18nService { Logger.warn(`Translation not found for locale '${languageCode}'`); } - const translatedText = $( + let translatedText = $( `trans-unit[id="${id}"] > ${ languageCode === DEFAULT_LANGUAGE_CODE ? 'source' : 'target' }` @@ -38,6 +41,12 @@ export class I18nService { ); } + if (placeholders) { + for (const [key, value] of Object.entries(placeholders)) { + translatedText = translatedText.replace(`\${${key}}`, String(value)); + } + } + return translatedText.trim(); } diff --git a/apps/api/src/services/impersonation/impersonation.service.ts b/apps/api/src/services/impersonation/impersonation.service.ts index 223aa60c8..71c543a43 100644 --- a/apps/api/src/services/impersonation/impersonation.service.ts +++ b/apps/api/src/services/impersonation/impersonation.service.ts @@ -16,7 +16,7 @@ export class ImpersonationService { if (this.request.user) { const accessObject = await this.prismaService.access.findFirst({ where: { - GranteeUser: { id: this.request.user.id }, + granteeUserId: this.request.user.id, id: aId } }); @@ -35,8 +35,8 @@ export class ImpersonationService { // Public access const accessObject = await this.prismaService.access.findFirst({ where: { - GranteeUser: null, - User: { id: aId } + granteeUserId: null, + user: { id: aId } } }); diff --git a/apps/api/src/services/property/interfaces/interfaces.ts b/apps/api/src/services/property/interfaces/interfaces.ts new file mode 100644 index 000000000..be9bc530d --- /dev/null +++ b/apps/api/src/services/property/interfaces/interfaces.ts @@ -0,0 +1 @@ +export type PropertyValue = boolean | object | string | string[]; diff --git a/apps/api/src/services/property/property.service.ts b/apps/api/src/services/property/property.service.ts index 34ce5713b..212635f49 100644 --- a/apps/api/src/services/property/property.service.ts +++ b/apps/api/src/services/property/property.service.ts @@ -6,6 +6,8 @@ import { import { Injectable } from '@nestjs/common'; +import { PropertyValue } from './interfaces/interfaces'; + @Injectable() export class PropertyService { public constructor(private readonly prismaService: PrismaService) {} @@ -18,7 +20,7 @@ export class PropertyService { public async get() { const response: { - [key: string]: boolean | object | string | string[]; + [key: string]: PropertyValue; } = { [PROPERTY_CURRENCIES]: [] }; @@ -38,15 +40,14 @@ export class PropertyService { return response; } - public async getByKey(aKey: string) { + public async getByKey(aKey: string) { const properties = await this.get(); - return properties?.[aKey]; + return properties[aKey] as TValue; } public async isUserSignupEnabled() { return ( - ((await this.getByKey(PROPERTY_IS_USER_SIGNUP_ENABLED)) as boolean) ?? - true + (await this.getByKey(PROPERTY_IS_USER_SIGNUP_ENABLED)) ?? true ); } diff --git a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts index 0f1537d02..31edf6ffc 100644 --- a/apps/api/src/services/queues/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/queues/data-gathering/data-gathering.service.ts @@ -406,9 +406,9 @@ export class DataGatheringService { private async getSymbolsMax(): Promise { const benchmarkAssetProfileIdMap: { [key: string]: boolean } = {}; ( - ((await this.propertyService.getByKey( + (await this.propertyService.getByKey( PROPERTY_BENCHMARKS - )) as BenchmarkProperty[]) ?? [] + )) ?? [] ).forEach(({ symbolProfileId }) => { benchmarkAssetProfileIdMap[symbolProfileId] = true; }); diff --git a/apps/api/src/services/symbol-profile/symbol-profile.service.ts b/apps/api/src/services/symbol-profile/symbol-profile.service.ts index 30ad1c5fb..c41a59c78 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -44,7 +44,7 @@ export class SymbolProfileService { include: { activities: { include: { - User: true + user: true } } }, @@ -53,14 +53,14 @@ export class SymbolProfileService { activities: withUserSubscription ? { some: { - User: { + user: { subscriptions: { some: { expiresAt: { gt: new Date() } } } } } } : { every: { - User: { + user: { subscriptions: { none: { expiresAt: { gt: new Date() } } } } } diff --git a/apps/api/src/services/tag/tag.service.ts b/apps/api/src/services/tag/tag.service.ts index 3d6bd3907..eb2d7bfef 100644 --- a/apps/api/src/services/tag/tag.service.ts +++ b/apps/api/src/services/tag/tag.service.ts @@ -52,7 +52,7 @@ export class TagService { include: { _count: { select: { - orders: { + activities: { where: { userId } @@ -79,7 +79,7 @@ export class TagService { id, name, userId, - isUsed: _count.orders > 0 + isUsed: _count.activities > 0 })); } @@ -87,7 +87,7 @@ export class TagService { const tagsWithOrderCount = await this.prismaService.tag.findMany({ include: { _count: { - select: { orders: true } + select: { activities: true } } } }); @@ -97,7 +97,7 @@ export class TagService { id, name, userId, - activityCount: _count.orders + activityCount: _count.activities }; }); } diff --git a/apps/api/src/services/twitter-bot/twitter-bot.service.ts b/apps/api/src/services/twitter-bot/twitter-bot.service.ts index a17585c5b..ee951820d 100644 --- a/apps/api/src/services/twitter-bot/twitter-bot.service.ts +++ b/apps/api/src/services/twitter-bot/twitter-bot.service.ts @@ -2,7 +2,7 @@ import { SymbolService } from '@ghostfolio/api/app/symbol/symbol.service'; import { BenchmarkService } from '@ghostfolio/api/services/benchmark/benchmark.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { - ghostfolioFearAndGreedIndexDataSource, + ghostfolioFearAndGreedIndexDataSourceStocks, ghostfolioFearAndGreedIndexSymbol } from '@ghostfolio/common/config'; import { @@ -44,7 +44,7 @@ export class TwitterBotService { try { const symbolItem = await this.symbolService.get({ dataGatheringItem: { - dataSource: ghostfolioFearAndGreedIndexDataSource, + dataSource: ghostfolioFearAndGreedIndexDataSourceStocks, symbol: ghostfolioFearAndGreedIndexSymbol } }); diff --git a/apps/client-e2e/project.json b/apps/client-e2e/project.json index 16d13e012..92e2f09ef 100644 --- a/apps/client-e2e/project.json +++ b/apps/client-e2e/project.json @@ -3,12 +3,13 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "apps/client-e2e/src", "projectType": "application", + "tags": [], + "implicitDependencies": ["client"], "targets": { "e2e": { "executor": "@nx/cypress:cypress", "options": { "cypressConfig": "apps/client-e2e/cypress.json", - "tsConfig": "apps/client-e2e/tsconfig.e2e.json", "devServerTarget": "client:serve" }, "configurations": { @@ -17,7 +18,5 @@ } } } - }, - "tags": [], - "implicitDependencies": ["client"] + } } diff --git a/apps/client/project.json b/apps/client/project.json index b2144d7b3..215c5dae1 100644 --- a/apps/client/project.json +++ b/apps/client/project.json @@ -2,13 +2,63 @@ "name": "client", "$schema": "../../node_modules/nx/schemas/project-schema.json", "projectType": "application", + "sourceRoot": "apps/client/src", + "prefix": "gf", + "i18n": { + "locales": { + "ca": { + "baseHref": "/ca/", + "translation": "apps/client/src/locales/messages.ca.xlf" + }, + "de": { + "baseHref": "/de/", + "translation": "apps/client/src/locales/messages.de.xlf" + }, + "es": { + "baseHref": "/es/", + "translation": "apps/client/src/locales/messages.es.xlf" + }, + "fr": { + "baseHref": "/fr/", + "translation": "apps/client/src/locales/messages.fr.xlf" + }, + "it": { + "baseHref": "/it/", + "translation": "apps/client/src/locales/messages.it.xlf" + }, + "nl": { + "baseHref": "/nl/", + "translation": "apps/client/src/locales/messages.nl.xlf" + }, + "pl": { + "baseHref": "/pl/", + "translation": "apps/client/src/locales/messages.pl.xlf" + }, + "pt": { + "baseHref": "/pt/", + "translation": "apps/client/src/locales/messages.pt.xlf" + }, + "tr": { + "baseHref": "/tr/", + "translation": "apps/client/src/locales/messages.tr.xlf" + }, + "uk": { + "baseHref": "/uk/", + "translation": "apps/client/src/locales/messages.uk.xlf" + }, + "zh": { + "baseHref": "/zh/", + "translation": "apps/client/src/locales/messages.zh.xlf" + } + }, + "sourceLocale": "en" + }, + "tags": [], "generators": { "@schematics/angular:component": { "style": "scss" } }, - "sourceRoot": "apps/client/src", - "prefix": "gf", "targets": { "build": { "executor": "@nx/angular:webpack-browser", @@ -23,7 +73,8 @@ "styles": [ "apps/client/src/assets/fonts/inter.css", "apps/client/src/styles/theme.scss", - "apps/client/src/styles.scss" + "apps/client/src/styles.scss", + "node_modules/open-color/open-color.css" ], "scripts": ["node_modules/marked/marked.min.js"], "vendorChunk": true, @@ -135,7 +186,7 @@ "command": "shx cp -r apps/client/src/assets/* dist/apps/client/assets" }, { - "command": "shx cp -r apps/client/src/assets/.well-known/* dist/apps/client/.well-known" + "command": "shx cp -r apps/client/src/assets/.well-known/assetlinks.json dist/apps/client/.well-known" }, { "command": "shx cp apps/client/src/assets/favicon.ico dist/apps/client" @@ -211,7 +262,8 @@ "production": { "buildTarget": "client:build:production" } - } + }, + "continuous": true }, "extract-i18n": { "executor": "ng-extract-i18n-merge:ng-extract-i18n-merge", @@ -247,55 +299,5 @@ }, "outputs": ["{workspaceRoot}/coverage/apps/client"] } - }, - "i18n": { - "locales": { - "ca": { - "baseHref": "/ca/", - "translation": "apps/client/src/locales/messages.ca.xlf" - }, - "de": { - "baseHref": "/de/", - "translation": "apps/client/src/locales/messages.de.xlf" - }, - "es": { - "baseHref": "/es/", - "translation": "apps/client/src/locales/messages.es.xlf" - }, - "fr": { - "baseHref": "/fr/", - "translation": "apps/client/src/locales/messages.fr.xlf" - }, - "it": { - "baseHref": "/it/", - "translation": "apps/client/src/locales/messages.it.xlf" - }, - "nl": { - "baseHref": "/nl/", - "translation": "apps/client/src/locales/messages.nl.xlf" - }, - "pl": { - "baseHref": "/pl/", - "translation": "apps/client/src/locales/messages.pl.xlf" - }, - "pt": { - "baseHref": "/pt/", - "translation": "apps/client/src/locales/messages.pt.xlf" - }, - "tr": { - "baseHref": "/tr/", - "translation": "apps/client/src/locales/messages.tr.xlf" - }, - "uk": { - "baseHref": "/uk/", - "translation": "apps/client/src/locales/messages.uk.xlf" - }, - "zh": { - "baseHref": "/zh/", - "translation": "apps/client/src/locales/messages.zh.xlf" - } - }, - "sourceLocale": "en" - }, - "tags": [] + } } diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index f4b61ea33..40dbceb1a 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -1,6 +1,6 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { paths } from '@ghostfolio/client/core/paths'; import { PageTitleStrategy } from '@ghostfolio/client/services/page-title.strategy'; +import { publicRoutes, internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes, TitleStrategy } from '@angular/router'; @@ -9,26 +9,26 @@ import { ModulePreloadService } from './core/module-preload.service'; const routes: Routes = [ { - path: paths.about, + path: publicRoutes.about.path, loadChildren: () => - import('./pages/about/about-page.module').then((m) => m.AboutPageModule) + import('./pages/about/about-page.routes').then((m) => m.routes) }, { - path: 'account', + path: internalRoutes.account.path, loadChildren: () => import('./pages/user-account/user-account-page.module').then( (m) => m.UserAccountPageModule ) }, { - path: 'accounts', + path: internalRoutes.accounts.path, loadChildren: () => import('./pages/accounts/accounts-page.module').then( (m) => m.AccountsPageModule ) }, { - path: 'admin', + path: internalRoutes.adminControl.path, loadChildren: () => import('./pages/admin/admin-page.module').then((m) => m.AdminPageModule) }, @@ -38,16 +38,17 @@ const routes: Routes = [ import('./pages/api/api-page.component').then( (c) => c.GfApiPageComponent ), - path: 'api', - title: 'Ghostfolio API' + path: internalRoutes.api.path, + title: internalRoutes.api.title }, { - path: 'auth', + path: internalRoutes.auth.path, loadChildren: () => - import('./pages/auth/auth-page.module').then((m) => m.AuthPageModule) + import('./pages/auth/auth-page.module').then((m) => m.AuthPageModule), + title: internalRoutes.auth.title }, { - path: 'blog', + path: publicRoutes.blog.path, loadChildren: () => import('./pages/blog/blog-page.module').then((m) => m.BlogPageModule) }, @@ -57,10 +58,10 @@ const routes: Routes = [ import('./pages/demo/demo-page.component').then( (c) => c.GfDemoPageComponent ), - path: 'demo' + path: publicRoutes.demo.path }, { - path: paths.faq, + path: publicRoutes.faq.path, loadChildren: () => import('./pages/faq/faq-page.module').then((m) => m.FaqPageModule) }, @@ -70,11 +71,11 @@ const routes: Routes = [ import('./pages/features/features-page.component').then( (c) => c.GfFeaturesPageComponent ), - path: paths.features, - title: $localize`Features` + path: publicRoutes.features.path, + title: publicRoutes.features.title }, { - path: 'home', + path: internalRoutes.home.path, loadChildren: () => import('./pages/home/home-page.module').then((m) => m.HomePageModule) }, @@ -84,58 +85,58 @@ const routes: Routes = [ import('./pages/i18n/i18n-page.component').then( (c) => c.GfI18nPageComponent ), - path: 'i18n', - title: $localize`Internationalization` + path: internalRoutes.i18n.path, + title: internalRoutes.i18n.title }, { - path: paths.markets, + path: publicRoutes.markets.path, loadChildren: () => import('./pages/markets/markets-page.module').then( (m) => m.MarketsPageModule ) }, { - path: 'open', + path: publicRoutes.openStartup.path, loadChildren: () => import('./pages/open/open-page.module').then((m) => m.OpenPageModule) }, { - path: 'p', - loadChildren: () => - import('./pages/public/public-page.module').then( - (m) => m.PublicPageModule - ) - }, - { - path: 'portfolio', + path: internalRoutes.portfolio.path, loadChildren: () => import('./pages/portfolio/portfolio-page.module').then( (m) => m.PortfolioPageModule ) }, { - path: paths.pricing, + path: publicRoutes.pricing.path, loadChildren: () => import('./pages/pricing/pricing-page.module').then( (m) => m.PricingPageModule ) }, { - path: paths.register, + path: publicRoutes.public.path, + loadChildren: () => + import('./pages/public/public-page.module').then( + (m) => m.PublicPageModule + ) + }, + { + path: publicRoutes.register.path, loadChildren: () => import('./pages/register/register-page.module').then( (m) => m.RegisterPageModule ) }, { - path: paths.resources, + path: publicRoutes.resources.path, loadChildren: () => import('./pages/resources/resources-page.module').then( (m) => m.ResourcesPageModule ) }, { - path: 'start', + path: publicRoutes.start.path, loadChildren: () => import('./pages/landing/landing-page.module').then( (m) => m.LandingPageModule @@ -146,11 +147,11 @@ const routes: Routes = [ import('./pages/webauthn/webauthn-page.component').then( (c) => c.GfWebauthnPageComponent ), - path: 'webauthn', - title: $localize`Sign in` + path: internalRoutes.webauthn.path, + title: internalRoutes.webauthn.title }, { - path: 'zen', + path: internalRoutes.zen.path, loadChildren: () => import('./pages/zen/zen-page.module').then((m) => m.ZenPageModule) }, diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index d5e56b517..9680d0830 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -10,7 +10,7 @@ (click)="onCreateAccount()" > You are using the Live Demo. - Create Account + Create Account } @@ -70,7 +70,7 @@
  • About
  • @if (hasPermissionForSubscription) {
  • - Blog + Blog
  • }
  • @@ -91,7 +91,7 @@ } @if (hasPermissionForStatistics) {
  • - Open Startup + Open Startup
  • } @if (hasPermissionForSubscription) { diff --git a/apps/client/src/app/app.component.scss b/apps/client/src/app/app.component.scss index 241d3331e..f848fe6ff 100644 --- a/apps/client/src/app/app.component.scss +++ b/apps/client/src/app/app.component.scss @@ -15,12 +15,14 @@ z-index: 999; .info-message { - color: rgba(var(--palette-foreground-text), 1); + color: rgba(var(--light-primary-text)); font-size: 80%; + font-weight: 500; max-width: 100%; .a { - font-weight: 500; + border: 1px solid rgba(var(--light-primary-text)); + border-radius: 0.25rem; } } } diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 38e48f139..fb39028fc 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -3,6 +3,7 @@ import { HoldingDetailDialogParams } from '@ghostfolio/client/components/holding import { getCssVariable } from '@ghostfolio/common/helper'; import { InfoItem, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { internalRoutes, publicRoutes } from '@ghostfolio/common/routes/routes'; import { ColorScheme } from '@ghostfolio/common/types'; import { DOCUMENT } from '@angular/common'; @@ -62,29 +63,23 @@ export class AppComponent implements OnDestroy, OnInit { public hasTabs = false; public info: InfoItem; public pageTitle: string; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkAboutChangelog = [ - '/' + $localize`:snake-case:about`, - 'changelog' - ]; - public routerLinkAboutLicense = [ - '/' + $localize`:snake-case:about`, - $localize`:snake-case:license` - ]; - public routerLinkAboutPrivacyPolicy = [ - '/' + $localize`:snake-case:about`, - $localize`:snake-case:privacy-policy` - ]; - public routerLinkAboutTermsOfService = [ - '/' + $localize`:snake-case:about`, - $localize`:snake-case:terms-of-service` - ]; - public routerLinkFaq = ['/' + $localize`:snake-case:faq`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkMarkets = ['/' + $localize`:snake-case:markets`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkAbout = publicRoutes.about.routerLink; + public routerLinkAboutChangelog = + publicRoutes.about.subRoutes.changelog.routerLink; + public routerLinkAboutLicense = + publicRoutes.about.subRoutes.license.routerLink; + public routerLinkAboutPrivacyPolicy = + publicRoutes.about.subRoutes.privacyPolicy.routerLink; + public routerLinkAboutTermsOfService = + publicRoutes.about.subRoutes.termsOfService.routerLink; + public routerLinkBlog = publicRoutes.blog.routerLink; + public routerLinkFaq = publicRoutes.faq.routerLink; + public routerLinkFeatures = publicRoutes.features.routerLink; + public routerLinkMarkets = publicRoutes.markets.routerLink; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; + public routerLinkPricing = publicRoutes.pricing.routerLink; + public routerLinkRegister = publicRoutes.register.routerLink; + public routerLinkResources = publicRoutes.resources.routerLink; public showFooter = false; public user: User; @@ -163,12 +158,14 @@ export class AppComponent implements OnDestroy, OnInit { this.currentSubRoute = urlSegments[1]?.path; if ( - (this.currentRoute === 'home' && !this.currentSubRoute) || - (this.currentRoute === 'home' && - this.currentSubRoute === 'holdings') || - (this.currentRoute === 'portfolio' && !this.currentSubRoute) || - (this.currentRoute === 'zen' && !this.currentSubRoute) || - (this.currentRoute === 'zen' && this.currentSubRoute === 'holdings') + ((this.currentRoute === internalRoutes.home.path && + !this.currentSubRoute) || + (this.currentRoute === internalRoutes.home.path && + this.currentSubRoute === + internalRoutes.home.subRoutes.holdings.path) || + (this.currentRoute === internalRoutes.portfolio.path && + !this.currentSubRoute)) && + this.user?.settings?.viewMode !== 'ZEN' ) { this.hasPermissionToChangeDateRange = true; } else { @@ -176,14 +173,20 @@ export class AppComponent implements OnDestroy, OnInit { } if ( - (this.currentRoute === 'home' && - this.currentSubRoute === 'holdings') || - (this.currentRoute === 'portfolio' && !this.currentSubRoute) || - (this.currentRoute === 'portfolio' && - this.currentSubRoute === 'activities') || - (this.currentRoute === 'portfolio' && - this.currentSubRoute === 'allocations') || - (this.currentRoute === 'zen' && this.currentSubRoute === 'holdings') + (this.currentRoute === internalRoutes.home.path && + this.currentSubRoute === + internalRoutes.home.subRoutes.holdings.path) || + (this.currentRoute === internalRoutes.portfolio.path && + !this.currentSubRoute) || + (this.currentRoute === internalRoutes.portfolio.path && + this.currentSubRoute === + internalRoutes.portfolio.subRoutes.activities.path) || + (this.currentRoute === internalRoutes.portfolio.path && + this.currentSubRoute === + internalRoutes.portfolio.subRoutes.allocations.path) || + (this.currentRoute === internalRoutes.zen.path && + this.currentSubRoute === + internalRoutes.home.subRoutes.holdings.path) ) { this.hasPermissionToChangeFilters = true; } else { @@ -191,25 +194,25 @@ export class AppComponent implements OnDestroy, OnInit { } this.hasTabs = - (this.currentRoute === this.routerLinkAbout[0].slice(1) || - this.currentRoute === this.routerLinkFaq[0].slice(1) || - this.currentRoute === this.routerLinkResources[0].slice(1) || - this.currentRoute === 'account' || - this.currentRoute === 'admin' || - this.currentRoute === 'home' || - this.currentRoute === 'portfolio' || - this.currentRoute === 'zen') && + (this.currentRoute === publicRoutes.about.path || + this.currentRoute === publicRoutes.faq.path || + this.currentRoute === publicRoutes.resources.path || + this.currentRoute === internalRoutes.account.path || + this.currentRoute === internalRoutes.adminControl.path || + this.currentRoute === internalRoutes.home.path || + this.currentRoute === internalRoutes.portfolio.path || + this.currentRoute === internalRoutes.zen.path) && this.deviceType !== 'mobile'; this.showFooter = - (this.currentRoute === 'blog' || - this.currentRoute === this.routerLinkFeatures[0].slice(1) || - this.currentRoute === this.routerLinkMarkets[0].slice(1) || - this.currentRoute === 'open' || - this.currentRoute === 'p' || - this.currentRoute === this.routerLinkPricing[0].slice(1) || - this.currentRoute === this.routerLinkRegister[0].slice(1) || - this.currentRoute === 'start') && + (this.currentRoute === publicRoutes.blog.path || + this.currentRoute === publicRoutes.features.path || + this.currentRoute === publicRoutes.markets.path || + this.currentRoute === publicRoutes.openStartup.path || + this.currentRoute === publicRoutes.public.path || + this.currentRoute === publicRoutes.pricing.path || + this.currentRoute === publicRoutes.register.path || + this.currentRoute === publicRoutes.start.path) && this.deviceType !== 'mobile'; if (this.deviceType === 'mobile') { diff --git a/apps/client/src/app/app.module.ts b/apps/client/src/app/app.module.ts index 04602dd2e..d7758cbb4 100644 --- a/apps/client/src/app/app.module.ts +++ b/apps/client/src/app/app.module.ts @@ -19,8 +19,8 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { ServiceWorkerModule } from '@angular/service-worker'; -import { MarkdownModule } from 'ngx-markdown'; -import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { provideMarkdown } from 'ngx-markdown'; +import { provideNgxSkeletonLoader } from 'ngx-skeleton-loader'; import { NgxStripeModule, STRIPE_PUBLISHABLE_KEY } from 'ngx-stripe'; import { environment } from '../environments/environment'; @@ -50,13 +50,11 @@ export function NgxStripeFactory(): string { GfLogoComponent, GfNotificationModule, GfSubscriptionInterstitialDialogModule, - MarkdownModule.forRoot(), MatAutocompleteModule, MatChipsModule, MatNativeDateModule, MatSnackBarModule, MatTooltipModule, - NgxSkeletonLoaderModule, NgxStripeModule.forRoot(environment.stripePublicKey), ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, @@ -68,6 +66,8 @@ export function NgxStripeFactory(): string { httpResponseInterceptorProviders, LanguageService, provideHttpClient(withInterceptorsFromDi()), + provideMarkdown(), + provideNgxSkeletonLoader(), { provide: DateAdapter, useClass: CustomDateAdapter, diff --git a/apps/client/src/app/components/access-table/access-table.component.ts b/apps/client/src/app/components/access-table/access-table.component.ts index 34c5fbda2..641156f5b 100644 --- a/apps/client/src/app/components/access-table/access-table.component.ts +++ b/apps/client/src/app/components/access-table/access-table.component.ts @@ -1,7 +1,7 @@ import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; -import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; import { Access, User } from '@ghostfolio/common/interfaces'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Clipboard } from '@angular/cdk/clipboard'; import { @@ -53,9 +53,9 @@ export class AccessTableComponent implements OnChanges { } public getPublicUrl(aId: string): string { - const languageCode = this.user?.settings?.language ?? DEFAULT_LANGUAGE_CODE; + const languageCode = this.user.settings.language; - return `${this.baseUrl}/${languageCode}/p/${aId}`; + return `${this.baseUrl}/${languageCode}/${publicRoutes.public.path}/${aId}`; } public onCopyUrlToClipboard(aId: string): void { diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index c77d8cb4a..209b4a28f 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -10,6 +10,7 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { OrderWithAccount } from '@ghostfolio/common/types'; import { @@ -92,9 +93,12 @@ export class AccountDetailDialog implements OnDestroy, OnInit { } public onCloneActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { - queryParams: { activityId: aActivity.id, createDialog: true } - }); + this.router.navigate( + internalRoutes.portfolio.subRoutes.activities.routerLink, + { + queryParams: { activityId: aActivity.id, createDialog: true } + } + ); this.dialogRef.close(); } @@ -151,9 +155,12 @@ export class AccountDetailDialog implements OnDestroy, OnInit { } public onUpdateActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { - queryParams: { activityId: aActivity.id, editDialog: true } - }); + this.router.navigate( + internalRoutes.portfolio.subRoutes.activities.routerLink, + { + queryParams: { activityId: aActivity.id, editDialog: true } + } + ); this.dialogRef.close(); } @@ -167,7 +174,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { balance, currency, name, - Platform, + platform, transactionCount, value, valueInBaseCurrency @@ -182,7 +189,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { } this.name = name; - this.platformName = Platform?.name ?? '-'; + this.platformName = platform?.name ?? '-'; this.transactionCount = transactionCount; this.valueInBaseCurrency = valueInBaseCurrency; diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index ecb51fc29..7e2ac92db 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -43,11 +43,11 @@ Name - @if (element.Platform?.url) { - } {{ element.name }} @@ -81,7 +81,7 @@ *matHeaderCellDef class="d-none d-lg-table-cell px-1" mat-header-cell - mat-sort-header="Platform.name" + mat-sort-header="platform.name" > Platform @@ -91,14 +91,14 @@ mat-cell >
    - @if (element.Platform?.url) { - } - {{ element.Platform?.name }} + {{ element.platform?.name }}
    Url @if (assetProfileForm.get('url').value) { - { + this.snackBar.open( + '✅ ' + $localize`Demo user account has been synced.`, + undefined, + { + duration: ms('3 seconds') + } + ); + }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index bcbf666ef..246e5fe04 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -169,10 +169,23 @@
    Housekeeping
    - +
    + @if (hasPermissionToSyncDemoUserAccount) { + + } + +
    diff --git a/apps/client/src/app/components/admin-overview/admin-overview.module.ts b/apps/client/src/app/components/admin-overview/admin-overview.module.ts index da49eb858..1c5fba202 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.module.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.module.ts @@ -9,6 +9,7 @@ import { MatCardModule } from '@angular/material/card'; import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatSnackBarModule } from '@angular/material/snack-bar'; import { RouterModule } from '@angular/router'; import { AdminOverviewComponent } from './admin-overview.component'; @@ -24,6 +25,7 @@ import { AdminOverviewComponent } from './admin-overview.component'; MatCardModule, MatMenuModule, MatSelectModule, + MatSnackBarModule, MatSlideToggleModule, ReactiveFormsModule, RouterModule diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.html b/apps/client/src/app/components/admin-platform/admin-platform.component.html index c71594e45..9e38d5de7 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.html +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1,115 +1,94 @@ -
    -
    -
    - - - - - + +
    - Name - - @if (element.url) { - - } - {{ element.name }} -
    + + + - - - - + + + + - - - - + + + + - - - - + + + + - - -
    + Name + + @if (element.url) { + + } + {{ element.name }} + - Url - - {{ element.url }} - + Url + + {{ element.url }} + - Accounts - - {{ element.accountCount }} - + Accounts + + {{ element.accountCount }} + - - - -
    - -
    -
    + + + +
    + +
    +
    -
    -
    -
    + + + diff --git a/apps/client/src/app/components/admin-platform/admin-platform.module.ts b/apps/client/src/app/components/admin-platform/admin-platform.module.ts index e98d53988..beb3923f7 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.module.ts +++ b/apps/client/src/app/components/admin-platform/admin-platform.module.ts @@ -1,4 +1,4 @@ -import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; @@ -16,8 +16,8 @@ import { GfCreateOrUpdatePlatformDialogModule } from './create-or-update-platfor exports: [AdminPlatformComponent], imports: [ CommonModule, - GfAssetProfileIconComponent, GfCreateOrUpdatePlatformDialogModule, + GfEntityLogoComponent, MatButtonModule, MatMenuModule, MatSortModule, diff --git a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html index bb99ae3a8..a7446c973 100644 --- a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html +++ b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -29,11 +29,7 @@ (keydown.enter)="$event.stopPropagation()" /> @if (data.platform.url) { - + } diff --git a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.module.ts b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.module.ts index ac97e57cf..a6239566c 100644 --- a/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.module.ts +++ b/apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.module.ts @@ -1,4 +1,4 @@ -import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; @@ -14,8 +14,8 @@ import { CreateOrUpdatePlatformDialog } from './create-or-update-platform-dialog declarations: [CreateOrUpdatePlatformDialog], imports: [ CommonModule, - GfAssetProfileIconComponent, FormsModule, + GfEntityLogoComponent, MatButtonModule, MatDialogModule, MatFormFieldModule, diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.html b/apps/client/src/app/components/admin-settings/admin-settings.component.html index 997d34aa5..af64f034b 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.html +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.html @@ -2,14 +2,52 @@

    Data Providers

    + @if (isGhostfolioApiKeyValid === false) { + + + Ghostfolio Premium + + + + Fuel your self-hosted Ghostfolio with a + powerful data provider to access + 80,000+ tickers from over + 50 exchanges worldwide. + + + + Get Access + +
    + or +
    + + Learn more + +
    +
    + } - - + + + + + + + + + + + + + + + - + - + +
    + Name +
    - +
    @if (isGhostfolioDataProvider(element)) { @if (isGhostfolioApiKeyValid === false) { - Early Accessnew } @@ -38,14 +78,6 @@ }}
    -
    - - {{ ghostfolioApiStatus.dailyRequests }} - of - {{ ghostfolioApiStatus.dailyRequestsMax }} - daily requests - -
    } } @else { {{ element.name }} @@ -55,10 +87,63 @@
    + Status + + @if ( + !isGhostfolioDataProvider(element) || + isGhostfolioApiKeyValid === true + ) { + + } + + Asset Profiles + + + + @if ( + isGhostfolioDataProvider(element) && + isGhostfolioApiKeyValid === true + ) { + + + {{ ghostfolioApiStatus.dailyRequests }} + of + {{ ghostfolioApiStatus.dailyRequestsMax }} + daily requests + + } + + @if (isGhostfolioDataProvider(element)) { @if (isGhostfolioApiKeyValid === true) { } } diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.scss b/apps/client/src/app/components/admin-settings/admin-settings.component.scss index 5d4e87f30..4724d4817 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.scss +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.scss @@ -1,3 +1,37 @@ :host { display: block; + + a, + button { + &.special { + background: linear-gradient(45deg, var(--oc-pink-5), var(--oc-violet-5)); + color: #fff; + } + } + + .mat-mdc-card { + --mdc-outlined-card-container-color: whitesmoke; + + .mat-mdc-card-actions { + min-height: 0; + } + } + + .mat-mdc-progress-bar { + --mdc-linear-progress-active-indicator-height: 0.5rem; + --mdc-linear-progress-track-height: 0.5rem; + border-radius: 0.25rem; + + ::ng-deep { + .mdc-linear-progress__buffer-bar { + background-color: rgb(var(--palette-background-unselected-chip)); + } + } + } +} + +:host-context(.theme-dark) { + .mat-mdc-card { + --mdc-outlined-card-container-color: #222222; + } } diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts index f18e49d10..42cd13a0b 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts @@ -3,16 +3,14 @@ import { NotificationService } from '@ghostfolio/client/core/notification/notifi import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; -import { - DEFAULT_LANGUAGE_CODE, - PROPERTY_API_KEY_GHOSTFOLIO -} from '@ghostfolio/common/config'; +import { PROPERTY_API_KEY_GHOSTFOLIO } from '@ghostfolio/common/config'; import { getDateFormatString } from '@ghostfolio/common/helper'; import { DataProviderGhostfolioStatusResponse, DataProviderInfo, User } from '@ghostfolio/common/interfaces'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectionStrategy, @@ -21,14 +19,9 @@ import { OnDestroy, OnInit } from '@angular/core'; -import { MatDialog } from '@angular/material/dialog'; import { MatTableDataSource } from '@angular/material/table'; -import { DeviceDetectorService } from 'ngx-device-detector'; import { catchError, filter, of, Subject, takeUntil } from 'rxjs'; -import { GfGhostfolioPremiumApiDialogComponent } from './ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component'; -import { GhostfolioPremiumApiDialogParams } from './ghostfolio-premium-api-dialog/interfaces/interfaces'; - @Component({ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'gf-admin-settings', @@ -39,13 +32,18 @@ import { GhostfolioPremiumApiDialogParams } from './ghostfolio-premium-api-dialo export class AdminSettingsComponent implements OnDestroy, OnInit { public dataSource = new MatTableDataSource(); public defaultDateFormat: string; - public displayedColumns = ['name', 'actions']; + public displayedColumns = [ + 'name', + 'status', + 'assetProfileCount', + 'usage', + 'actions' + ]; public ghostfolioApiStatus: DataProviderGhostfolioStatusResponse; public isGhostfolioApiKeyValid: boolean; public isLoading = false; public pricingUrl: string; - private deviceType: string; private unsubscribeSubject = new Subject(); private user: User; @@ -53,15 +51,11 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, - private deviceService: DeviceDetectorService, - private matDialog: MatDialog, private notificationService: NotificationService, private userService: UserService ) {} public ngOnInit() { - this.deviceType = this.deviceService.getDeviceInfo().deviceType; - this.userService.stateChanged .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { @@ -69,15 +63,12 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { this.user = state.user; this.defaultDateFormat = getDateFormatString( - this.user?.settings?.locale + this.user.settings.locale ); - const languageCode = - this.user?.settings?.language ?? DEFAULT_LANGUAGE_CODE; + const languageCode = this.user.settings.language; - this.pricingUrl = - `https://ghostfol.io/${languageCode}/` + - $localize`:snake-case:pricing`; + this.pricingUrl = `https://ghostfol.io/${languageCode}/${publicRoutes.pricing.path}`; this.changeDetectorRef.markForCheck(); } @@ -105,25 +96,22 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { } public onSetGhostfolioApiKey() { - const dialogRef = this.matDialog.open( - GfGhostfolioPremiumApiDialogComponent, - { - autoFocus: false, - data: { - deviceType: this.deviceType, - pricingUrl: this.pricingUrl - } as GhostfolioPremiumApiDialogParams, - height: this.deviceType === 'mobile' ? '98vh' : undefined, - width: this.deviceType === 'mobile' ? '100vw' : '50rem' - } - ); - - dialogRef - .afterClosed() - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(() => { - this.initialize(); - }); + this.notificationService.prompt({ + confirmFn: (value) => { + const ghostfolioApiKey = value?.trim(); + + if (ghostfolioApiKey) { + this.dataService + .putAdminSetting(PROPERTY_API_KEY_GHOSTFOLIO, { + value: ghostfolioApiKey + }) + .subscribe(() => { + this.initialize(); + }); + } + }, + title: $localize`Please enter your Ghostfolio API key.` + }); } public ngOnDestroy() { @@ -146,29 +134,35 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { this.dataSource = new MatTableDataSource(filteredProviders); - this.adminService - .fetchGhostfolioDataProviderStatus( - settings[PROPERTY_API_KEY_GHOSTFOLIO] as string - ) - .pipe( - catchError(() => { - this.isGhostfolioApiKeyValid = false; + const ghostfolioApiKey = settings[ + PROPERTY_API_KEY_GHOSTFOLIO + ] as string; + + if (ghostfolioApiKey) { + this.adminService + .fetchGhostfolioDataProviderStatus(ghostfolioApiKey) + .pipe( + catchError(() => { + this.isGhostfolioApiKeyValid = false; + + this.changeDetectorRef.markForCheck(); + + return of(null); + }), + filter((status) => { + return status !== null; + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe((status) => { + this.ghostfolioApiStatus = status; + this.isGhostfolioApiKeyValid = true; this.changeDetectorRef.markForCheck(); - - return of(null); - }), - filter((status) => { - return status !== null; - }), - takeUntil(this.unsubscribeSubject) - ) - .subscribe((status) => { - this.ghostfolioApiStatus = status; - this.isGhostfolioApiKeyValid = true; - - this.changeDetectorRef.markForCheck(); - }); + }); + } else { + this.isGhostfolioApiKeyValid = false; + } this.isLoading = false; diff --git a/apps/client/src/app/components/admin-settings/admin-settings.module.ts b/apps/client/src/app/components/admin-settings/admin-settings.module.ts index c5148f681..e6bef6f7b 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.module.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.module.ts @@ -1,12 +1,16 @@ import { GfAdminPlatformModule } from '@ghostfolio/client/components/admin-platform/admin-platform.module'; import { GfAdminTagModule } from '@ghostfolio/client/components/admin-tag/admin-tag.module'; -import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; +import { GfDataProviderStatusComponent } from '@ghostfolio/client/components/data-provider-status/data-provider-status.component'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; +import { GfValueComponent } from '@ghostfolio/ui/value'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; import { MatMenuModule } from '@angular/material/menu'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -19,10 +23,14 @@ import { AdminSettingsComponent } from './admin-settings.component'; CommonModule, GfAdminPlatformModule, GfAdminTagModule, - GfAssetProfileIconComponent, + GfDataProviderStatusComponent, + GfEntityLogoComponent, GfPremiumIndicatorComponent, + GfValueComponent, MatButtonModule, + MatCardModule, MatMenuModule, + MatProgressBarModule, MatTableModule, NgxSkeletonLoaderModule, RouterModule diff --git a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts deleted file mode 100644 index e42e6259e..000000000 --- a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; -import { DataService } from '@ghostfolio/client/services/data.service'; -import { PROPERTY_API_KEY_GHOSTFOLIO } from '@ghostfolio/common/config'; -import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; - -import { Component, Inject } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { - MAT_DIALOG_DATA, - MatDialogModule, - MatDialogRef -} from '@angular/material/dialog'; - -import { GfDialogFooterModule } from '../../dialog-footer/dialog-footer.module'; -import { GfDialogHeaderModule } from '../../dialog-header/dialog-header.module'; -import { GhostfolioPremiumApiDialogParams } from './interfaces/interfaces'; - -@Component({ - imports: [ - GfDialogFooterModule, - GfDialogHeaderModule, - GfPremiumIndicatorComponent, - MatButtonModule, - MatDialogModule - ], - selector: 'gf-ghostfolio-premium-api-dialog', - styleUrls: ['./ghostfolio-premium-api-dialog.scss'], - templateUrl: './ghostfolio-premium-api-dialog.html' -}) -export class GfGhostfolioPremiumApiDialogComponent { - public constructor( - @Inject(MAT_DIALOG_DATA) public data: GhostfolioPremiumApiDialogParams, - private dataService: DataService, - public dialogRef: MatDialogRef, - private notificationService: NotificationService - ) {} - - public onCancel() { - this.dialogRef.close(); - } - - public onSetGhostfolioApiKey() { - this.notificationService.prompt({ - confirmFn: (value) => { - const ghostfolioApiKey = value?.trim(); - - if (ghostfolioApiKey) { - this.dataService - .putAdminSetting(PROPERTY_API_KEY_GHOSTFOLIO, { - value: ghostfolioApiKey - }) - .subscribe(() => { - this.dialogRef.close(); - }); - } - }, - title: $localize`Please enter your Ghostfolio API key.` - }); - } -} diff --git a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html deleted file mode 100644 index 017133f5b..000000000 --- a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html +++ /dev/null @@ -1,49 +0,0 @@ - - -
    -

    - Early access to the official - Ghostfolio Premium - - - data provider for self-hosters, offering - 80’000+ tickers from over 50 exchanges, is - ready now! -

    -
    - Get Early Access -
    - or -
    - -
    -
    - - diff --git a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.scss b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.scss deleted file mode 100644 index dc9093b45..000000000 --- a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.scss +++ /dev/null @@ -1,2 +0,0 @@ -:host { -} diff --git a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts deleted file mode 100644 index 0c629599e..000000000 --- a/apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/interfaces/interfaces.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface GhostfolioPremiumApiDialogParams { - deviceType: string; - pricingUrl: string; -} diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.html b/apps/client/src/app/components/admin-tag/admin-tag.component.html index f69579ab8..5979d2778 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.html +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1,108 +1,87 @@ -
    -
    -
    - - - - - - + +
    - Name - - {{ element.name }} -
    + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - -
    + Name + + {{ element.name }} + - User - - {{ element.userId }} - + User + + {{ element.userId }} + - Activities - - {{ element.activityCount }} - + Activities + + {{ element.activityCount }} + - - - -
    - -
    -
    + + + +
    + +
    +
    -
    -
    -
    +
    diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index e1cd3102c..6f1202476 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -147,7 +147,7 @@ export class AdminUsersComponent implements OnDestroy, OnInit { this.notificationService.confirm({ confirmFn: () => { this.dataService - .generateAccessToken(aUserId) + .updateUserAccessToken(aUserId) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ accessToken }) => { this.notificationService.alert({ diff --git a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html index eab89f53d..21d68984a 100644 --- a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html +++ b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html @@ -29,7 +29,7 @@ }} } @if (hasPermissionToAccessAdminControl) { - +
    Manage Benchmarks diff --git a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts index afcb561f6..d6589eda5 100644 --- a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts +++ b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -13,6 +13,7 @@ import { } from '@ghostfolio/common/helper'; import { LineChartItem, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ColorScheme } from '@ghostfolio/common/types'; import { @@ -63,6 +64,8 @@ export class BenchmarkComparatorComponent implements OnChanges, OnDestroy { public chart: Chart<'line'>; public hasPermissionToAccessAdminControl: boolean; + public routerLinkAdminControlMarketData = + internalRoutes.adminControl.subRoutes.marketData.routerLink; public constructor() { Chart.register( diff --git a/apps/client/src/app/components/data-provider-status/data-provider-status.component.html b/apps/client/src/app/components/data-provider-status/data-provider-status.component.html new file mode 100644 index 000000000..4f57cb8ee --- /dev/null +++ b/apps/client/src/app/components/data-provider-status/data-provider-status.component.html @@ -0,0 +1,15 @@ +@if (status$ | async; as status) { + @if (status.isHealthy) { + Available + } @else { + Unavailable + } +} @else { + +} diff --git a/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts b/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts new file mode 100644 index 000000000..ddd505591 --- /dev/null +++ b/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts @@ -0,0 +1,51 @@ +import { DataService } from '@ghostfolio/client/services/data.service'; + +import { CommonModule } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + Input, + OnDestroy, + OnInit +} from '@angular/core'; +import type { DataSource } from '@prisma/client'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { catchError, map, type Observable, of, Subject, takeUntil } from 'rxjs'; + +import { DataProviderStatus } from './interfaces/interfaces'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + imports: [CommonModule, NgxSkeletonLoaderModule], + selector: 'gf-data-provider-status', + standalone: true, + templateUrl: './data-provider-status.component.html' +}) +export class GfDataProviderStatusComponent implements OnDestroy, OnInit { + @Input() dataSource: DataSource; + + public status$: Observable; + + private unsubscribeSubject = new Subject(); + + public constructor(private dataService: DataService) {} + + public ngOnInit() { + this.status$ = this.dataService + .fetchDataProviderHealth(this.dataSource) + .pipe( + catchError(() => { + return of({ isHealthy: false }); + }), + map(() => { + return { isHealthy: true }; + }), + takeUntil(this.unsubscribeSubject) + ); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/components/data-provider-status/interfaces/interfaces.ts b/apps/client/src/app/components/data-provider-status/interfaces/interfaces.ts new file mode 100644 index 000000000..2c8071899 --- /dev/null +++ b/apps/client/src/app/components/data-provider-status/interfaces/interfaces.ts @@ -0,0 +1,3 @@ +export interface DataProviderStatus { + isHealthy: boolean; +} diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index b14d142f4..3f443dfea 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -20,9 +20,11 @@ mat-flat-button [ngClass]="{ 'font-weight-bold': - currentRoute === 'home' || currentRoute === 'zen', + currentRoute === internalRoutes.home.path || + currentRoute === internalRoutes.zen.path, 'text-decoration-underline': - currentRoute === 'home' || currentRoute === 'zen' + currentRoute === internalRoutes.home.path || + currentRoute === internalRoutes.zen.path }" [routerLink]="['/']" >OverviewPortfolio @@ -47,10 +50,11 @@ i18n mat-flat-button [ngClass]="{ - 'font-weight-bold': currentRoute === 'accounts', - 'text-decoration-underline': currentRoute === 'accounts' + 'font-weight-bold': currentRoute === internalRoutes.accounts.path, + 'text-decoration-underline': + currentRoute === internalRoutes.accounts.path }" - [routerLink]="['/accounts']" + [routerLink]="routerLinkAccounts" >Accounts @@ -61,10 +65,12 @@ i18n mat-flat-button [ngClass]="{ - 'font-weight-bold': currentRoute === 'admin', - 'text-decoration-underline': currentRoute === 'admin' + 'font-weight-bold': + currentRoute === internalRoutes.adminControl.path, + 'text-decoration-underline': + currentRoute === internalRoutes.adminControl.path }" - [routerLink]="['/admin']" + [routerLink]="routerLinkAdminControl" >Admin Control @@ -235,7 +241,8 @@ mat-menu-item [ngClass]="{ 'font-weight-bold': - currentRoute === 'home' || currentRoute === 'zen' + currentRoute === internalRoutes.home.path || + currentRoute === internalRoutes.zen.path }" [routerLink]="['/']" >OverviewPortfolio Accounts My Ghostfolio @if (hasPermissionToAccessAdminControl) { @@ -270,8 +281,11 @@ class="d-flex d-sm-none" i18n mat-menu-item - [ngClass]="{ 'font-weight-bold': currentRoute === 'admin' }" - [routerLink]="['/admin']" + [ngClass]="{ + 'font-weight-bold': + currentRoute === internalRoutes.adminControl.path + }" + [routerLink]="routerLinkAdminControl" >Admin Control } diff --git a/apps/client/src/app/components/header/header.component.scss b/apps/client/src/app/components/header/header.component.scss index d73bf1a8a..97f8cd354 100644 --- a/apps/client/src/app/components/header/header.component.scss +++ b/apps/client/src/app/components/header/header.component.scss @@ -7,7 +7,11 @@ .logo-container { &.filled { - background-color: rgba(var(--palette-foreground-base), 0.02); + background: linear-gradient( + to bottom, + transparent, + rgba(var(--palette-foreground-base), 0.02) + ); } @media (min-width: 576px) { @@ -56,7 +60,11 @@ .logo-container { &.filled { - background-color: rgba(var(--palette-foreground-base-dark), 0.02); + background: linear-gradient( + to bottom, + transparent, + rgba(var(--palette-foreground-base-dark), 0.02) + ); } } } diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index 728320aef..4168fc1ef 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -12,6 +12,7 @@ import { TokenStorageService } from '@ghostfolio/client/services/token-storage.s import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Filter, InfoItem, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { internalRoutes, publicRoutes } from '@ghostfolio/common/routes/routes'; import { DateRange } from '@ghostfolio/common/types'; import { GfAssistantComponent } from '@ghostfolio/ui/assistant/assistant.component'; @@ -78,18 +79,23 @@ export class HeaderComponent implements OnChanges { public hasPermissionToAccessFearAndGreedIndex: boolean; public hasPermissionToCreateUser: boolean; public impersonationId: string; + public internalRoutes = internalRoutes; public isMenuOpen: boolean; - public routeAbout = $localize`:snake-case:about`; - public routeFeatures = $localize`:snake-case:features`; - public routeMarkets = $localize`:snake-case:markets`; - public routePricing = $localize`:snake-case:pricing`; - public routeResources = $localize`:snake-case:resources`; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkMarkets = ['/' + $localize`:snake-case:markets`]; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routeAbout = publicRoutes.about.path; + public routeFeatures = publicRoutes.features.path; + public routeMarkets = publicRoutes.markets.path; + public routePricing = publicRoutes.pricing.path; + public routeResources = publicRoutes.resources.path; + public routerLinkAbout = publicRoutes.about.routerLink; + public routerLinkAccount = internalRoutes.account.routerLink; + public routerLinkAccounts = internalRoutes.accounts.routerLink; + public routerLinkAdminControl = internalRoutes.adminControl.routerLink; + public routerLinkFeatures = publicRoutes.features.routerLink; + public routerLinkMarkets = publicRoutes.markets.routerLink; + public routerLinkPortfolio = internalRoutes.portfolio.routerLink; + public routerLinkPricing = publicRoutes.pricing.routerLink; + public routerLinkRegister = publicRoutes.register.routerLink; + public routerLinkResources = publicRoutes.resources.routerLink; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index 925a64429..a90c36c3d 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -14,6 +14,7 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table'; import { GfDataProviderCreditsComponent } from '@ghostfolio/ui/data-provider-credits'; import { GfHistoricalMarketDataEditorComponent } from '@ghostfolio/ui/historical-market-data-editor'; @@ -101,8 +102,8 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { public hasPermissionToCreateOwnTag: boolean; public hasPermissionToReadMarketDataOfOwnAssetProfile: boolean; public historicalDataItems: LineChartItem[]; - public investment: number; - public investmentPrecision = 2; + public investmentInBaseCurrencyWithCurrencyEffect: number; + public investmentInBaseCurrencyWithCurrencyEffectPrecision = 2; public marketDataItems: MarketData[] = []; public marketPrice: number; public marketPriceMax: number; @@ -232,7 +233,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { feeInBaseCurrency, firstBuyDate, historicalData, - investment, + investmentInBaseCurrencyWithCurrencyEffect, marketPrice, marketPriceMax, marketPriceMin, @@ -287,13 +288,15 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } ); - this.investment = investment; + this.investmentInBaseCurrencyWithCurrencyEffect = + investmentInBaseCurrencyWithCurrencyEffect; if ( this.data.deviceType === 'mobile' && - this.investment >= NUMERICAL_PRECISION_THRESHOLD + this.investmentInBaseCurrencyWithCurrencyEffect >= + NUMERICAL_PRECISION_THRESHOLD ) { - this.investmentPrecision = 0; + this.investmentInBaseCurrencyWithCurrencyEffectPrecision = 0; } this.marketPrice = marketPrice; @@ -449,10 +452,9 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { if (state?.user) { this.user = state.user; - this.hasPermissionToCreateOwnTag = hasPermission( - this.user.permissions, - permissions.createOwnTag - ); + this.hasPermissionToCreateOwnTag = + hasPermission(this.user.permissions, permissions.createOwnTag) && + this.user?.settings?.isExperimentalFeatures; this.tagsAvailable = this.user?.tags?.map((tag) => { @@ -468,9 +470,12 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } public onCloneActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { - queryParams: { activityId: aActivity.id, createDialog: true } - }); + this.router.navigate( + internalRoutes.portfolio.subRoutes.activities.routerLink, + { + queryParams: { activityId: aActivity.id, createDialog: true } + } + ); this.dialogRef.close(); } @@ -510,9 +515,12 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { } public onUpdateActivity(aActivity: Activity) { - this.router.navigate(['/portfolio', 'activities'], { - queryParams: { activityId: aActivity.id, editDialog: true } - }); + this.router.navigate( + internalRoutes.portfolio.subRoutes.activities.routerLink, + { + queryParams: { activityId: aActivity.id, editDialog: true } + } + ); this.dialogRef.close(); } diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index 11898c44e..d288a8953 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -35,284 +35,300 @@ [symbol]="data.symbol" /> -
    -
    - - @if ( - SymbolProfile?.currency && - data.baseCurrency !== SymbolProfile?.currency - ) { - Change with currency effect - } @else { - Change - } - -
    -
    - - @if ( - SymbolProfile?.currency && - data.baseCurrency !== SymbolProfile?.currency - ) { - Performance with currency effect - } @else { - Performance - } - -
    -
    - Average Unit Price -
    -
    - Market Price -
    -
    - Minimum Price -
    -
    - Maximum Price -
    -
    - Quantity -
    -
    - Investment -
    - @if (dividendInBaseCurrency && user?.settings?.isExperimentalFeatures) { -
    - Dividend -
    -
    - Dividend Yield -
    - } -
    - Fees -
    -
    - First Activity -
    -
    - - @if (transactionCount === 1) { - Activity - } @else { - Activities - } - -
    -
    -
    - Asset Class -
    -
    - Asset Sub Class -
    - @if ( - SymbolProfile?.countries?.length > 0 || - SymbolProfile?.sectors?.length > 0 - ) { - @if ( - SymbolProfile?.countries?.length === 1 && - SymbolProfile?.sectors?.length === 1 - ) { -
    - Sector -
    - @if (SymbolProfile?.countries?.length === 1) { + + + + +
    Overview
    +
    +
    +
    Country + @if ( + SymbolProfile?.currency && + data.baseCurrency !== SymbolProfile?.currency + ) { + Change with currency effect + } @else { + Change + } + +
    +
    + + @if ( + SymbolProfile?.currency && + data.baseCurrency !== SymbolProfile?.currency + ) { + Performance with currency effect + } @else { + Performance + } + +
    +
    + Average Unit Price +
    +
    + Market Price +
    +
    + Minimum Price +
    +
    + Maximum Price +
    +
    + Quantity +
    +
    + Investment +
    + @if ( + dividendInBaseCurrency && user?.settings?.isExperimentalFeatures + ) { +
    + Dividend +
    +
    + Dividend Yield +
    + } +
    + Fees +
    +
    + First Activity +
    +
    + + @if (transactionCount === 1) { + Activity + } @else { + Activities + } + +
    +
    +
    + Asset Class +
    +
    + Asset Sub Class +
    + @if ( + SymbolProfile?.countries?.length > 0 || + SymbolProfile?.sectors?.length > 0 + ) { + @if ( + SymbolProfile?.countries?.length === 1 && + SymbolProfile?.sectors?.length === 1 + ) { +
    + Sector +
    + @if (SymbolProfile?.countries?.length === 1) { +
    + Country +
    + } + } @else { +
    +
    Sectors
    + +
    +
    +
    Countries
    + +
    + } + } +
    + Symbol +
    +
    + ISIN
    - } - } @else { -
    -
    Sectors
    - -
    -
    -
    Countries
    - -
    - } - } -
    - Symbol -
    -
    - ISIN -
    - @if (dataProviderInfo) { -
    -
    - -
    + @if (dataProviderInfo) { +
    +
    + +
    +
    + } +
    - } -
    - - +
    @@ -388,9 +404,7 @@
    ( HomeHoldingsComponent.DEFAULT_HOLDINGS_VIEW_MODE diff --git a/apps/client/src/app/components/home-holdings/home-holdings.html b/apps/client/src/app/components/home-holdings/home-holdings.html index f981e50a1..6040ffe2a 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.html +++ b/apps/client/src/app/components/home-holdings/home-holdings.html @@ -58,7 +58,7 @@ class="mt-3" i18n mat-stroked-button - [routerLink]="['/portfolio', 'activities']" + [routerLink]="routerLinkPortfolioActivities" >Manage Activities
    diff --git a/apps/client/src/app/components/home-market/home-market.html b/apps/client/src/app/components/home-market/home-market.html index 2fcdb5716..43f5640ef 100644 --- a/apps/client/src/app/components/home-market/home-market.html +++ b/apps/client/src/app/components/home-market/home-market.html @@ -2,7 +2,7 @@

    Markets

    @if (hasPermissionToAccessFearAndGreedIndex) {
    -
    +
    Last {{ numberOfDays }} Days
    @@ -29,13 +29,23 @@ }
    -
    +
    + @if (benchmarks?.length > 0) { +
    + + Calculations are based on delayed market data and may not be + displayed in real-time. +
    + }
    diff --git a/apps/client/src/app/components/home-overview/home-overview.component.ts b/apps/client/src/app/components/home-overview/home-overview.component.ts index b0e7be320..ada6f9661 100644 --- a/apps/client/src/app/components/home-overview/home-overview.component.ts +++ b/apps/client/src/app/components/home-overview/home-overview.component.ts @@ -11,6 +11,7 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -36,6 +37,10 @@ export class HomeOverviewComponent implements OnDestroy, OnInit { public isLoadingPerformance = true; public performance: PortfolioPerformance; public precision = 2; + public routerLinkAccounts = internalRoutes.accounts.routerLink; + public routerLinkPortfolio = internalRoutes.portfolio.routerLink; + public routerLinkPortfolioActivities = + internalRoutes.portfolio.subRoutes.activities.routerLink; public showDetails = false; public unit: string; public user: User; diff --git a/apps/client/src/app/components/home-overview/home-overview.html b/apps/client/src/app/components/home-overview/home-overview.html index c13c8f043..04b47277f 100644 --- a/apps/client/src/app/components/home-overview/home-overview.html +++ b/apps/client/src/app/components/home-overview/home-overview.html @@ -11,7 +11,7 @@ class="mb-2" [ngClass]="{ 'text-muted': user?.accounts?.length > 1 }" > - Setup your accounts
    Get a comprehensive financial overview by adding your bank and @@ -20,7 +20,7 @@ >
  • - + Capture your activities
    Record your investment activities to keep your portfolio up to @@ -29,7 +29,7 @@ >
  • - + Monitor and analyze your portfolio
    Track your progress in real-time with comprehensive analysis @@ -40,14 +40,18 @@
    @if (user?.accounts?.length === 1) { - + Setup accounts } @else if (user?.accounts?.length > 1) { Add activity diff --git a/apps/client/src/app/components/home-watchlist/home-watchlist.html b/apps/client/src/app/components/home-watchlist/home-watchlist.html index 9149eab91..743d86c37 100644 --- a/apps/client/src/app/components/home-watchlist/home-watchlist.html +++ b/apps/client/src/app/components/home-watchlist/home-watchlist.html @@ -8,7 +8,7 @@
    -
    +
    (); + + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService, + private deviceService: DeviceDetectorService, + private userService: UserService + ) { + this.deviceType = this.deviceService.getDeviceInfo().deviceType; + + this.userService.stateChanged + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((state) => { + if (state?.user) { + this.user = state.user; + + this.changeDetectorRef.markForCheck(); + } + }); + } + + public ngOnInit() { + this.dataService + .fetchMarketDataOfMarkets({ includeHistoricalData: this.numberOfDays }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ fearAndGreedIndex }) => { + this.fearAndGreedIndexData = fearAndGreedIndex; + + this.initialize(); + + this.changeDetectorRef.markForCheck(); + }); + + this.dataService + .fetchBenchmarks() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ benchmarks }) => { + this.benchmarks = benchmarks; + + this.changeDetectorRef.markForCheck(); + }); + } + + public initialize() { + this.fearAndGreedIndex = + this.fearAndGreedIndexData[this.fearAndGreedIndexMode]?.marketPrice; + + this.historicalDataItems = [ + ...(this.fearAndGreedIndexData[this.fearAndGreedIndexMode] + ?.historicalData ?? []), + { + date: resetHours(new Date()).toISOString(), + value: this.fearAndGreedIndex + } + ]; + } + + public onChangeFearAndGreedIndexMode( + aFearAndGreedIndexMode: FearAndGreedIndexMode + ) { + this.fearAndGreedIndexMode = aFearAndGreedIndexMode; + + this.initialize(); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/components/markets/markets.html b/apps/client/src/app/components/markets/markets.html new file mode 100644 index 000000000..909b072ba --- /dev/null +++ b/apps/client/src/app/components/markets/markets.html @@ -0,0 +1,60 @@ +
    +

    Markets

    +
    +
    + @if (user?.settings?.isExperimentalFeatures) { +
    + +
    + } +
    + Last {{ numberOfDays }} Days +
    + + +
    +
    + +
    +
    + + @if (benchmarks?.length > 0) { +
    + + Calculations are based on delayed market data and may not be + displayed in real-time. +
    + } +
    +
    +
    diff --git a/apps/client/src/app/components/markets/markets.scss b/apps/client/src/app/components/markets/markets.scss new file mode 100644 index 000000000..5b523160d --- /dev/null +++ b/apps/client/src/app/components/markets/markets.scss @@ -0,0 +1,7 @@ +:host { + display: block; + + gf-line-chart { + aspect-ratio: 16 / 9; + } +} diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html index 1a52bd646..19f125523 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -7,11 +7,11 @@
    - {{ summary?.ordersCount }} - {summary?.ordersCount, plural, + {{ summary?.activityCount }} + {summary?.activityCount, plural, =1 {activity} other {activities} } @@ -152,18 +152,6 @@ />
    -
    -
    Valuables
    -
    - -
    -
    Emergency Fund
    (); diff --git a/apps/client/src/app/components/user-account-access/user-account-access.component.ts b/apps/client/src/app/components/user-account-access/user-account-access.component.ts index 6f111f456..285f7a603 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.component.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -1,5 +1,8 @@ import { CreateAccessDto } from '@ghostfolio/api/app/access/create-access.dto'; +import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; +import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; +import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Access, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; @@ -11,11 +14,12 @@ import { OnDestroy, OnInit } from '@angular/core'; +import { FormBuilder, Validators } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { DeviceDetectorService } from 'ngx-device-detector'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { EMPTY, Subject } from 'rxjs'; +import { catchError, takeUntil } from 'rxjs/operators'; import { CreateOrUpdateAccessDialog } from './create-or-update-access-dialog/create-or-update-access-dialog.component'; @@ -33,6 +37,11 @@ export class UserAccountAccessComponent implements OnDestroy, OnInit { public deviceType: string; public hasPermissionToCreateAccess: boolean; public hasPermissionToDeleteAccess: boolean; + public hasPermissionToUpdateOwnAccessToken: boolean; + public isAccessTokenHidden = true; + public updateOwnAccessTokenForm = this.formBuilder.group({ + accessToken: ['', Validators.required] + }); public user: User; private unsubscribeSubject = new Subject(); @@ -42,8 +51,11 @@ export class UserAccountAccessComponent implements OnDestroy, OnInit { private dataService: DataService, private deviceService: DeviceDetectorService, private dialog: MatDialog, + private formBuilder: FormBuilder, + private notificationService: NotificationService, private route: ActivatedRoute, private router: Router, + private tokenStorageService: TokenStorageService, private userService: UserService ) { const { globalPermissions } = this.dataService.fetchInfo(); @@ -69,6 +81,11 @@ export class UserAccountAccessComponent implements OnDestroy, OnInit { permissions.deleteAccess ); + this.hasPermissionToUpdateOwnAccessToken = hasPermission( + this.user.permissions, + permissions.updateOwnAccessToken + ); + this.changeDetectorRef.markForCheck(); } }); @@ -99,6 +116,41 @@ export class UserAccountAccessComponent implements OnDestroy, OnInit { }); } + public onGenerateAccessToken() { + this.notificationService.confirm({ + confirmFn: () => { + this.dataService + .updateOwnAccessToken({ + accessToken: this.updateOwnAccessTokenForm.get('accessToken').value + }) + .pipe( + catchError(() => { + this.notificationService.alert({ + title: $localize`Oops! Incorrect Security Token.` + }); + + return EMPTY; + }), + takeUntil(this.unsubscribeSubject) + ) + .subscribe(({ accessToken }) => { + this.notificationService.alert({ + discardFn: () => { + this.tokenStorageService.signOut(); + this.userService.remove(); + + document.location.href = `/${document.documentElement.lang}`; + }, + message: accessToken, + title: $localize`Security token` + }); + }); + }, + confirmType: ConfirmationDialogType.Warn, + title: $localize`Do you really want to generate a new security token?` + }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/components/user-account-access/user-account-access.html b/apps/client/src/app/components/user-account-access/user-account-access.html index efb918984..2979fd6fa 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.html +++ b/apps/client/src/app/components/user-account-access/user-account-access.html @@ -1,3 +1,53 @@ +@if (hasPermissionToUpdateOwnAccessToken) { +
    +

    Security Token

    +
    +
    + + Security Token + + + +
    + +
    +
    +
    +
    +} +
    @if (accessesGet.length > 0) {

    Received Access

    diff --git a/apps/client/src/app/components/user-account-access/user-account-access.module.ts b/apps/client/src/app/components/user-account-access/user-account-access.module.ts index 93270ee3c..18bc77a08 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.module.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.module.ts @@ -2,9 +2,12 @@ import { GfPortfolioAccessTableModule } from '@ghostfolio/client/components/acce import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; import { RouterModule } from '@angular/router'; import { GfCreateOrUpdateAccessDialogModule } from './create-or-update-access-dialog/create-or-update-access-dialog.module'; @@ -20,7 +23,11 @@ import { UserAccountAccessComponent } from './user-account-access.component'; GfPremiumIndicatorComponent, MatButtonModule, MatDialogModule, + MatFormFieldModule, + MatInputModule, + ReactiveFormsModule, RouterModule - ] + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfUserAccountAccessModule {} diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts index 8d54f737c..68c8b649f 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts @@ -5,6 +5,7 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { getDateFormatString } from '@ghostfolio/common/helper'; import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectionStrategy, @@ -36,7 +37,7 @@ export class UserAccountMembershipComponent implements OnDestroy { public hasPermissionToUpdateUserSettings: boolean; public price: number; public priceId: string; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = publicRoutes.pricing.routerLink; public trySubscriptionMail = 'mailto:hi@ghostfol.io?Subject=Ghostfolio Premium Trial&body=Hello%0D%0DI am interested in Ghostfolio Premium. Can you please send me a coupon code to try it for some time?%0D%0DKind regards'; public user: User; diff --git a/apps/client/src/app/core/auth.guard.ts b/apps/client/src/app/core/auth.guard.ts index 7a75728ca..69280af6a 100644 --- a/apps/client/src/app/core/auth.guard.ts +++ b/apps/client/src/app/core/auth.guard.ts @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { SettingsStorageService } from '@ghostfolio/client/services/settings-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; +import { internalRoutes, publicRoutes } from '@ghostfolio/common/routes/routes'; import { Injectable } from '@angular/core'; import { @@ -11,22 +12,20 @@ import { import { EMPTY } from 'rxjs'; import { catchError } from 'rxjs/operators'; -import { paths } from './paths'; - @Injectable({ providedIn: 'root' }) export class AuthGuard { private static PUBLIC_PAGE_ROUTES = [ - `/${paths.about}`, - '/blog', - '/demo', - `/${paths.faq}`, - `/${paths.features}`, - `/${paths.markets}`, - '/open', - '/p', - `/${paths.pricing}`, - `/${paths.register}`, - `/${paths.resources}` + `/${publicRoutes.about.path}`, + `/${publicRoutes.blog.path}`, + `/${publicRoutes.demo.path}`, + `/${publicRoutes.faq.path}`, + `/${publicRoutes.features.path}`, + `/${publicRoutes.markets.path}`, + `/${publicRoutes.openStartup.path}`, + `/${publicRoutes.pricing.path}`, + `/${publicRoutes.public.path}`, + `/${publicRoutes.register.path}`, + `/${publicRoutes.resources.path}` ]; public constructor( @@ -49,21 +48,21 @@ export class AuthGuard { .pipe( catchError(() => { if (utmSource === 'ios') { - this.router.navigate(['/demo']); + this.router.navigate(publicRoutes.demo.routerLink); resolve(false); } else if (utmSource === 'trusted-web-activity') { - this.router.navigate(['/' + $localize`register`]); + this.router.navigate(publicRoutes.register.routerLink); resolve(false); } else if ( - AuthGuard.PUBLIC_PAGE_ROUTES.filter((publicPageRoute) => { - const [, url] = state.url.split('/'); + AuthGuard.PUBLIC_PAGE_ROUTES.some((publicPageRoute) => { + const [, url] = decodeURIComponent(state.url).split('/'); return `/${url}` === publicPageRoute; - })?.length > 0 + }) ) { resolve(true); return EMPTY; } else if (state.url !== '/start') { - this.router.navigate(['/start']); + this.router.navigate(publicRoutes.start.routerLink); resolve(false); return EMPTY; } @@ -89,26 +88,26 @@ export class AuthGuard { resolve(true); return; } else if ( - state.url.startsWith('/home') && + state.url.startsWith(`/${internalRoutes.home.path}`) && user.settings.viewMode === 'ZEN' ) { - this.router.navigate(['/zen']); + this.router.navigate(internalRoutes.zen.routerLink); resolve(false); return; - } else if (state.url.startsWith('/start')) { + } else if (state.url.startsWith(`/${publicRoutes.start.path}`)) { if (user.settings.viewMode === 'ZEN') { - this.router.navigate(['/zen']); + this.router.navigate(internalRoutes.zen.routerLink); } else { - this.router.navigate(['/home']); + this.router.navigate(internalRoutes.home.routerLink); } resolve(false); return; } else if ( - state.url.startsWith('/zen') && + state.url.startsWith(`/${internalRoutes.zen.path}`) && user.settings.viewMode === 'DEFAULT' ) { - this.router.navigate(['/home']); + this.router.navigate(internalRoutes.home.routerLink); resolve(false); return; } diff --git a/apps/client/src/app/core/http-response.interceptor.ts b/apps/client/src/app/core/http-response.interceptor.ts index 62c3540f7..c2eef4175 100644 --- a/apps/client/src/app/core/http-response.interceptor.ts +++ b/apps/client/src/app/core/http-response.interceptor.ts @@ -2,6 +2,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service'; import { InfoItem } from '@ghostfolio/common/interfaces'; +import { internalRoutes, publicRoutes } from '@ghostfolio/common/routes/routes'; import { HTTP_INTERCEPTORS, @@ -59,7 +60,9 @@ export class HttpResponseInterceptor implements HttpInterceptor { duration: ms('6 seconds') } ); - } else if (!error.url.includes('/auth')) { + } else if ( + !error.url.includes(internalRoutes.auth.routerLink.join('')) + ) { this.snackBarRef = this.snackBar.open( $localize`This action is not allowed.`, undefined, @@ -74,7 +77,7 @@ export class HttpResponseInterceptor implements HttpInterceptor { }); this.snackBarRef.onAction().subscribe(() => { - this.router.navigate(['/' + $localize`pricing`]); + this.router.navigate(publicRoutes.pricing.routerLink); }); } } else if (error.status === StatusCodes.INTERNAL_SERVER_ERROR) { @@ -110,7 +113,7 @@ export class HttpResponseInterceptor implements HttpInterceptor { } else if (error.status === StatusCodes.UNAUTHORIZED) { if (!error.url.includes('/data-providers/ghostfolio/status')) { if (this.webAuthnService.isEnabled()) { - this.router.navigate(['/webauthn']); + this.router.navigate(internalRoutes.webauthn.routerLink); } else { this.tokenStorageService.signOut(); } diff --git a/apps/client/src/app/core/paths.ts b/apps/client/src/app/core/paths.ts deleted file mode 100644 index 17ce75c7c..000000000 --- a/apps/client/src/app/core/paths.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const paths = { - about: $localize`about`, - faq: $localize`faq`, - features: $localize`features`, - license: $localize`license`, - markets: $localize`markets`, - pricing: $localize`pricing`, - privacyPolicy: $localize`privacy-policy`, - register: $localize`register`, - resources: $localize`resources`, - termsOfService: $localize`terms-of-service` -}; diff --git a/apps/client/src/app/pages/about/about-page-routing.module.ts b/apps/client/src/app/pages/about/about-page-routing.module.ts deleted file mode 100644 index a7312001f..000000000 --- a/apps/client/src/app/pages/about/about-page-routing.module.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { paths } from '@ghostfolio/client/core/paths'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { AboutPageComponent } from './about-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - children: [ - { - path: '', - loadChildren: () => - import('./overview/about-overview-page.module').then( - (m) => m.AboutOverviewPageModule - ) - }, - { - path: 'changelog', - loadChildren: () => - import('./changelog/changelog-page.module').then( - (m) => m.ChangelogPageModule - ) - }, - { - path: paths.license, - loadChildren: () => - import('./license/license-page.module').then( - (m) => m.LicensePageModule - ) - }, - { - path: 'oss-friends', - loadChildren: () => - import('./oss-friends/oss-friends-page.module').then( - (m) => m.OpenSourceSoftwareFriendsPageModule - ) - }, - { - path: paths.privacyPolicy, - loadChildren: () => - import('./privacy-policy/privacy-policy-page.module').then( - (m) => m.PrivacyPolicyPageModule - ) - }, - { - path: paths.termsOfService, - loadChildren: () => - import('./terms-of-service/terms-of-service-page.module').then( - (m) => m.TermsOfServicePageModule - ) - } - ], - component: AboutPageComponent, - path: '', - title: $localize`About` - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class AboutPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/about-page.component.ts b/apps/client/src/app/pages/about/about-page.component.ts index 46a080383..7a71d42f7 100644 --- a/apps/client/src/app/pages/about/about-page.component.ts +++ b/apps/client/src/app/pages/about/about-page.component.ts @@ -2,18 +2,28 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + CUSTOM_ELEMENTS_SCHEMA, + OnDestroy, + OnInit +} from '@angular/core'; +import { MatTabsModule } from '@angular/material/tabs'; +import { RouterModule } from '@angular/router'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Component({ host: { class: 'page has-tabs' }, + imports: [MatTabsModule, RouterModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-about-page', styleUrls: ['./about-page.scss'], - templateUrl: './about-page.html', - standalone: false + templateUrl: './about-page.html' }) export class AboutPageComponent implements OnDestroy, OnInit { public deviceType: string; @@ -42,18 +52,18 @@ export class AboutPageComponent implements OnDestroy, OnInit { this.tabs = [ { iconName: 'information-circle-outline', - label: $localize`About`, - path: ['/' + $localize`about`] + label: publicRoutes.about.title, + routerLink: publicRoutes.about.routerLink }, { iconName: 'sparkles-outline', - label: $localize`Changelog`, - path: ['/' + $localize`about`, 'changelog'] + label: publicRoutes.about.subRoutes.changelog.title, + routerLink: publicRoutes.about.subRoutes.changelog.routerLink }, { iconName: 'ribbon-outline', - label: $localize`License`, - path: ['/' + $localize`about`, $localize`license`], + label: publicRoutes.about.subRoutes.license.title, + routerLink: publicRoutes.about.subRoutes.license.routerLink, showCondition: !this.hasPermissionForSubscription } ]; @@ -61,15 +71,15 @@ export class AboutPageComponent implements OnDestroy, OnInit { if (state?.user) { this.tabs.push({ iconName: 'shield-checkmark-outline', - label: $localize`Privacy Policy`, - path: ['/' + $localize`about`, $localize`privacy-policy`], + label: publicRoutes.about.subRoutes.privacyPolicy.title, + routerLink: publicRoutes.about.subRoutes.privacyPolicy.routerLink, showCondition: this.hasPermissionForSubscription }); this.tabs.push({ iconName: 'document-text-outline', - label: $localize`Terms of Service`, - path: ['/' + $localize`about`, $localize`terms-of-service`], + label: publicRoutes.about.subRoutes.termsOfService.title, + routerLink: publicRoutes.about.subRoutes.termsOfService.routerLink, showCondition: this.hasPermissionForSubscription }); @@ -80,8 +90,8 @@ export class AboutPageComponent implements OnDestroy, OnInit { this.tabs.push({ iconName: 'happy-outline', - label: 'OSS Friends', - path: ['/' + $localize`about`, 'oss-friends'] + label: publicRoutes.about.subRoutes.ossFriends.title, + routerLink: publicRoutes.about.subRoutes.ossFriends.routerLink }); }); } diff --git a/apps/client/src/app/pages/about/about-page.html b/apps/client/src/app/pages/about/about-page.html index a9dbee450..af3b24b0a 100644 --- a/apps/client/src/app/pages/about/about-page.html +++ b/apps/client/src/app/pages/about/about-page.html @@ -16,7 +16,7 @@ mat-tab-link routerLinkActive [active]="rla.isActive" - [routerLink]="tab.path" + [routerLink]="tab.routerLink" [routerLinkActiveOptions]="{ exact: true }" > + import('./overview/about-overview-page.routes').then((m) => m.routes) + }, + { + path: publicRoutes.about.subRoutes.changelog.path, + loadChildren: () => + import('./changelog/changelog-page.routes').then((m) => m.routes) + }, + { + path: publicRoutes.about.subRoutes.license.path, + loadChildren: () => + import('./license/license-page.routes').then((m) => m.routes) + }, + { + path: publicRoutes.about.subRoutes.ossFriends.path, + loadChildren: () => + import('./oss-friends/oss-friends-page.routes').then((m) => m.routes) + }, + { + path: publicRoutes.about.subRoutes.privacyPolicy.path, + loadChildren: () => + import('./privacy-policy/privacy-policy-page.routes').then( + (m) => m.routes + ) + }, + { + path: publicRoutes.about.subRoutes.termsOfService.path, + loadChildren: () => + import('./terms-of-service/terms-of-service-page.routes').then( + (m) => m.routes + ) + } + ], + component: AboutPageComponent, + path: '', + title: publicRoutes.about.title + } +]; diff --git a/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts b/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts deleted file mode 100644 index 2aaef8282..000000000 --- a/apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { ChangelogPageComponent } from './changelog-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - component: ChangelogPageComponent, - path: '', - title: $localize`Changelog` - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ChangelogPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts index d086b70e3..87f3008dc 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts +++ b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts @@ -1,15 +1,23 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule, NgxSkeletonLoaderModule], selector: 'gf-changelog-page', styleUrls: ['./changelog-page.scss'], - templateUrl: './changelog-page.html', - standalone: false + templateUrl: './changelog-page.html' }) export class ChangelogPageComponent implements OnDestroy { + public isLoading = true; + private unsubscribeSubject = new Subject(); + public onLoad() { + this.isLoading = false; + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.html b/apps/client/src/app/pages/about/changelog/changelog-page.html index 0a333f073..60b146df5 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.html +++ b/apps/client/src/app/pages/about/changelog/changelog-page.html @@ -2,8 +2,51 @@

    Changelog

    + + @if (isLoading) { + + + + + + } +
    - +
    diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.module.ts b/apps/client/src/app/pages/about/changelog/changelog-page.module.ts deleted file mode 100644 index 6c187824f..000000000 --- a/apps/client/src/app/pages/about/changelog/changelog-page.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; - -import { ChangelogPageRoutingModule } from './changelog-page-routing.module'; -import { ChangelogPageComponent } from './changelog-page.component'; - -@NgModule({ - declarations: [ChangelogPageComponent], - imports: [ - ChangelogPageRoutingModule, - CommonModule, - MarkdownModule.forChild() - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class ChangelogPageModule {} diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.routes.ts b/apps/client/src/app/pages/about/changelog/changelog-page.routes.ts new file mode 100644 index 000000000..78ac2ad9e --- /dev/null +++ b/apps/client/src/app/pages/about/changelog/changelog-page.routes.ts @@ -0,0 +1,15 @@ +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { ChangelogPageComponent } from './changelog-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + component: ChangelogPageComponent, + path: '', + title: publicRoutes.about.subRoutes.changelog.title + } +]; diff --git a/apps/client/src/app/pages/about/license/license-page-routing.module.ts b/apps/client/src/app/pages/about/license/license-page-routing.module.ts deleted file mode 100644 index 928eeb0f0..000000000 --- a/apps/client/src/app/pages/about/license/license-page-routing.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { LicensePageComponent } from './license-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - component: LicensePageComponent, - path: '', - title: $localize`License` - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class LicensePageRoutingModule {} diff --git a/apps/client/src/app/pages/about/license/license-page.component.ts b/apps/client/src/app/pages/about/license/license-page.component.ts index deec0de60..0d4b2a97c 100644 --- a/apps/client/src/app/pages/about/license/license-page.component.ts +++ b/apps/client/src/app/pages/about/license/license-page.component.ts @@ -1,11 +1,12 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule], selector: 'gf-license-page', styleUrls: ['./license-page.scss'], - templateUrl: './license-page.html', - standalone: false + templateUrl: './license-page.html' }) export class LicensePageComponent implements OnDestroy { private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/about/license/license-page.module.ts b/apps/client/src/app/pages/about/license/license-page.module.ts deleted file mode 100644 index d18b48309..000000000 --- a/apps/client/src/app/pages/about/license/license-page.module.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; - -import { LicensePageRoutingModule } from './license-page-routing.module'; -import { LicensePageComponent } from './license-page.component'; - -@NgModule({ - declarations: [LicensePageComponent], - imports: [LicensePageRoutingModule, CommonModule, MarkdownModule.forChild()], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class LicensePageModule {} diff --git a/apps/client/src/app/pages/about/license/license-page.routes.ts b/apps/client/src/app/pages/about/license/license-page.routes.ts new file mode 100644 index 000000000..d842485ed --- /dev/null +++ b/apps/client/src/app/pages/about/license/license-page.routes.ts @@ -0,0 +1,15 @@ +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { LicensePageComponent } from './license-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + component: LicensePageComponent, + path: '', + title: publicRoutes.about.subRoutes.license.title + } +]; diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page-routing.module.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page-routing.module.ts deleted file mode 100644 index 08040419d..000000000 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page-routing.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { OpenSourceSoftwareFriendsPageComponent } from './oss-friends-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - component: OpenSourceSoftwareFriendsPageComponent, - path: '', - title: 'OSS Friends' - } -]; - -@NgModule({ - exports: [RouterModule], - imports: [RouterModule.forChild(routes)] -}) -export class OpenSourceSoftwareFriendsPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts index 86dcd4ed3..04e77bef0 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts @@ -1,13 +1,15 @@ import { Component, OnDestroy } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; import { Subject } from 'rxjs'; const ossFriends = require('../../../../assets/oss-friends.json'); @Component({ + imports: [MatButtonModule, MatCardModule], selector: 'gf-oss-friends-page', styleUrls: ['./oss-friends-page.scss'], - templateUrl: './oss-friends-page.html', - standalone: false + templateUrl: './oss-friends-page.html' }) export class OpenSourceSoftwareFriendsPageComponent implements OnDestroy { public ossFriends = ossFriends.data; diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.module.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.module.ts deleted file mode 100644 index 95cf9c3c3..000000000 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; - -import { OpenSourceSoftwareFriendsPageRoutingModule } from './oss-friends-page-routing.module'; -import { OpenSourceSoftwareFriendsPageComponent } from './oss-friends-page.component'; - -@NgModule({ - declarations: [OpenSourceSoftwareFriendsPageComponent], - imports: [ - CommonModule, - MatButtonModule, - MatCardModule, - OpenSourceSoftwareFriendsPageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class OpenSourceSoftwareFriendsPageModule {} diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts new file mode 100644 index 000000000..ac0bd2a9f --- /dev/null +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.routes.ts @@ -0,0 +1,15 @@ +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { OpenSourceSoftwareFriendsPageComponent } from './oss-friends-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + component: OpenSourceSoftwareFriendsPageComponent, + path: '', + title: publicRoutes.about.subRoutes.ossFriends.title + } +]; diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index 9dae545fa..1f01cd58a 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -2,23 +2,36 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { + ChangeDetectorRef, + Component, + CUSTOM_ELEMENTS_SCHEMA, + OnDestroy, + OnInit +} from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Component({ + imports: [CommonModule, MatButtonModule, RouterModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-about-overview-page', styleUrls: ['./about-overview-page.scss'], - templateUrl: './about-overview-page.html', - standalone: false + templateUrl: './about-overview-page.html' }) export class AboutOverviewPageComponent implements OnDestroy, OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public isLoggedIn: boolean; - public routerLinkFaq = ['/' + $localize`:snake-case:faq`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; + public routerLinkBlog = publicRoutes.blog.routerLink; + public routerLinkFaq = publicRoutes.faq.routerLink; + public routerLinkFeatures = publicRoutes.features.routerLink; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public user: User; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index 3891f929d..9a7dd142e 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -23,7 +23,9 @@ > @if (hasPermissionForStatistics) { and we share aggregated - key metrics + key metrics of the platform’s performance } . The project has been initiated by @@ -160,7 +162,7 @@ class="py-4 w-100" color="primary" mat-flat-button - [routerLink]="['/blog']" + [routerLink]="routerLinkBlog" >Blog
    diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.module.ts b/apps/client/src/app/pages/about/overview/about-overview-page.module.ts deleted file mode 100644 index 594f5b362..000000000 --- a/apps/client/src/app/pages/about/overview/about-overview-page.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { RouterModule } from '@angular/router'; - -import { AboutOverviewPageRoutingModule } from './about-overview-page-routing.module'; -import { AboutOverviewPageComponent } from './about-overview-page.component'; - -@NgModule({ - declarations: [AboutOverviewPageComponent], - imports: [ - AboutOverviewPageRoutingModule, - CommonModule, - MatButtonModule, - RouterModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class AboutOverviewPageModule {} diff --git a/apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts b/apps/client/src/app/pages/about/overview/about-overview-page.routes.ts similarity index 51% rename from apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts rename to apps/client/src/app/pages/about/overview/about-overview-page.routes.ts index 989dddc9d..8774ceee5 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.routes.ts @@ -1,11 +1,10 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { AboutOverviewPageComponent } from './about-overview-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: AboutOverviewPageComponent, @@ -13,9 +12,3 @@ const routes: Routes = [ title: $localize`About` } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class AboutOverviewPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts deleted file mode 100644 index eb8dca803..000000000 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { PrivacyPolicyPageComponent } from './privacy-policy-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - component: PrivacyPolicyPageComponent, - path: '', - title: $localize`Privacy Policy` - } -]; - -@NgModule({ - exports: [RouterModule], - imports: [RouterModule.forChild(routes)] -}) -export class PrivacyPolicyPageRoutingModule {} diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts index 0dc1aab13..166963f9d 100644 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts +++ b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts @@ -1,9 +1,10 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule], selector: 'gf-privacy-policy-page', - standalone: false, styleUrls: ['./privacy-policy-page.scss'], templateUrl: './privacy-policy-page.html' }) diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.module.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.module.ts deleted file mode 100644 index b33aea784..000000000 --- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; - -import { PrivacyPolicyPageRoutingModule } from './privacy-policy-page-routing.module'; -import { PrivacyPolicyPageComponent } from './privacy-policy-page.component'; - -@NgModule({ - declarations: [PrivacyPolicyPageComponent], - imports: [ - CommonModule, - MarkdownModule.forChild(), - PrivacyPolicyPageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class PrivacyPolicyPageModule {} diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts new file mode 100644 index 000000000..950fee5b5 --- /dev/null +++ b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.routes.ts @@ -0,0 +1,15 @@ +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { PrivacyPolicyPageComponent } from './privacy-policy-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + component: PrivacyPolicyPageComponent, + path: '', + title: publicRoutes.about.subRoutes.privacyPolicy.title + } +]; diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts deleted file mode 100644 index 4a32e23ed..000000000 --- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { TermsOfServicePageComponent } from './terms-of-service-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - component: TermsOfServicePageComponent, - path: '', - title: $localize`Terms of Service` - } -]; - -@NgModule({ - exports: [RouterModule], - imports: [RouterModule.forChild(routes)] -}) -export class TermsOfServicePageRoutingModule {} diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts index bd4e126ac..4278bb69f 100644 --- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts +++ b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts @@ -1,9 +1,10 @@ import { Component, OnDestroy } from '@angular/core'; +import { MarkdownModule } from 'ngx-markdown'; import { Subject } from 'rxjs'; @Component({ + imports: [MarkdownModule], selector: 'gf-terms-of-service-page', - standalone: false, styleUrls: ['./terms-of-service-page.scss'], templateUrl: './terms-of-service-page.html' }) diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.module.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.module.ts deleted file mode 100644 index 5861cbb16..000000000 --- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MarkdownModule } from 'ngx-markdown'; - -import { TermsOfServicePageRoutingModule } from './terms-of-service-page-routing.module'; -import { TermsOfServicePageComponent } from './terms-of-service-page.component'; - -@NgModule({ - declarations: [TermsOfServicePageComponent], - imports: [ - CommonModule, - MarkdownModule.forChild(), - TermsOfServicePageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class TermsOfServicePageModule {} diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts new file mode 100644 index 000000000..1cc6907c5 --- /dev/null +++ b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.routes.ts @@ -0,0 +1,15 @@ +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { TermsOfServicePageComponent } from './terms-of-service-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + component: TermsOfServicePageComponent, + path: '', + title: publicRoutes.about.subRoutes.termsOfService.title + } +]; diff --git a/apps/client/src/app/pages/accounts/accounts-page-routing.module.ts b/apps/client/src/app/pages/accounts/accounts-page-routing.module.ts index 59c708006..8d3da2c35 100644 --- a/apps/client/src/app/pages/accounts/accounts-page-routing.module.ts +++ b/apps/client/src/app/pages/accounts/accounts-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: AccountsPageComponent, path: '', - title: $localize`Accounts` + title: internalRoutes.accounts.title } ]; diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index af97bfce3..a38baa6ec 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -61,7 +61,7 @@ ) { -
    - @if (account.Platform?.url) { - } {{ account.name }} @@ -34,11 +34,11 @@ @for (account of accounts; track account) {
    - @if (account.Platform?.url) { - } {{ account.name }} diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts index b83ccbb9d..19bd98a7f 100644 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts @@ -1,4 +1,4 @@ -import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; @@ -15,7 +15,7 @@ import { TransferBalanceDialog } from './transfer-balance-dialog.component'; declarations: [TransferBalanceDialog], imports: [ CommonModule, - GfAssetProfileIconComponent, + GfEntityLogoComponent, MatButtonModule, MatDialogModule, MatFormFieldModule, diff --git a/apps/client/src/app/pages/admin/admin-page-routing.module.ts b/apps/client/src/app/pages/admin/admin-page-routing.module.ts index a6a69641c..efcb217af 100644 --- a/apps/client/src/app/pages/admin/admin-page-routing.module.ts +++ b/apps/client/src/app/pages/admin/admin-page-routing.module.ts @@ -4,6 +4,7 @@ import { AdminOverviewComponent } from '@ghostfolio/client/components/admin-over import { AdminSettingsComponent } from '@ghostfolio/client/components/admin-settings/admin-settings.component'; import { AdminUsersComponent } from '@ghostfolio/client/components/admin-users/admin-users.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -17,27 +18,27 @@ const routes: Routes = [ { path: '', component: AdminOverviewComponent, - title: $localize`Admin Control` + title: internalRoutes.adminControl.title }, { - path: 'jobs', + path: internalRoutes.adminControl.subRoutes.jobs.path, component: AdminJobsComponent, - title: $localize`Job Queue` + title: internalRoutes.adminControl.subRoutes.jobs.title }, { - path: 'market-data', + path: internalRoutes.adminControl.subRoutes.marketData.path, component: AdminMarketDataComponent, - title: $localize`Market Data` + title: internalRoutes.adminControl.subRoutes.marketData.title }, { - path: 'settings', + path: internalRoutes.adminControl.subRoutes.settings.path, component: AdminSettingsComponent, - title: $localize`Settings` + title: internalRoutes.adminControl.subRoutes.settings.title }, { - path: 'users', + path: internalRoutes.adminControl.subRoutes.users.path, component: AdminUsersComponent, - title: $localize`Users` + title: internalRoutes.adminControl.subRoutes.users.title } ], component: AdminPageComponent, diff --git a/apps/client/src/app/pages/admin/admin-page.component.ts b/apps/client/src/app/pages/admin/admin-page.component.ts index 5896a18d7..f47771a31 100644 --- a/apps/client/src/app/pages/admin/admin-page.component.ts +++ b/apps/client/src/app/pages/admin/admin-page.component.ts @@ -1,4 +1,5 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -26,27 +27,31 @@ export class AdminPageComponent implements OnDestroy, OnInit { { iconName: 'reader-outline', label: $localize`Overview`, - path: ['/admin'] + routerLink: internalRoutes.adminControl.routerLink }, { iconName: 'settings-outline', - label: $localize`Settings`, - path: ['/admin', 'settings'] + label: + internalRoutes.adminControl.subRoutes.settings.title + + '' + + $localize`new` + + '', + routerLink: internalRoutes.adminControl.subRoutes.settings.routerLink }, { iconName: 'server-outline', - label: $localize`Market Data`, - path: ['/admin', 'market-data'] + label: internalRoutes.adminControl.subRoutes.marketData.title, + routerLink: internalRoutes.adminControl.subRoutes.marketData.routerLink }, { iconName: 'flash-outline', - label: $localize`Job Queue`, - path: ['/admin', 'jobs'] + label: internalRoutes.adminControl.subRoutes.jobs.title, + routerLink: internalRoutes.adminControl.subRoutes.jobs.routerLink }, { iconName: 'people-outline', - label: $localize`Users`, - path: ['/admin', 'users'] + label: internalRoutes.adminControl.subRoutes.users.title, + routerLink: internalRoutes.adminControl.subRoutes.users.routerLink } ]; } diff --git a/apps/client/src/app/pages/admin/admin-page.html b/apps/client/src/app/pages/admin/admin-page.html index a9dbee450..43509a9ad 100644 --- a/apps/client/src/app/pages/admin/admin-page.html +++ b/apps/client/src/app/pages/admin/admin-page.html @@ -16,14 +16,14 @@ mat-tab-link routerLinkActive [active]="rla.isActive" - [routerLink]="tab.path" + [routerLink]="tab.routerLink" [routerLinkActiveOptions]="{ exact: true }" > -
    {{ tab.label }}
    +
    } } diff --git a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts index 2e346bf40..597c8d998 100644 --- a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts +++ b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -1,3 +1,5 @@ +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; @@ -9,6 +11,7 @@ import { RouterModule } from '@angular/router'; templateUrl: './hallo-ghostfolio-page.html' }) export class HalloGhostfolioPageComponent { - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; - public routerLinkResources = ['/' + $localize`:snake-case:resources`]; + public routerLinkBlog = publicRoutes.blog.routerLink; + public routerLinkPricing = publicRoutes.pricing.routerLink; + public routerLinkResources = publicRoutes.resources.routerLink; } diff --git a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html index e0364f747..28e30d16b 100644 --- a/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html +++ b/apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -201,7 +201,7 @@
    diff --git a/apps/client/src/app/pages/landing/landing-page.component.ts b/apps/client/src/app/pages/landing/landing-page.component.ts index 4adcbe00a..0a965b8fa 100644 --- a/apps/client/src/app/pages/landing/landing-page.component.ts +++ b/apps/client/src/app/pages/landing/landing-page.component.ts @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { Statistics } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy, OnInit } from '@angular/core'; import { format } from 'date-fns'; @@ -24,8 +25,10 @@ export class LandingPageComponent implements OnDestroy, OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public hasPermissionToCreateUser: boolean; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkRegister = ['/' + $localize`:snake-case:register`]; + public routerLinkAbout = publicRoutes.about.routerLink; + public routerLinkDemo = publicRoutes.demo.routerLink; + public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; + public routerLinkRegister = publicRoutes.register.routerLink; public statistics: Statistics; public testimonials = [ { diff --git a/apps/client/src/app/pages/landing/landing-page.html b/apps/client/src/app/pages/landing/landing-page.html index 7ce938227..cbf72413e 100644 --- a/apps/client/src/app/pages/landing/landing-page.html +++ b/apps/client/src/app/pages/landing/landing-page.html @@ -46,7 +46,7 @@ @if (hasPermissionToCreateUser) {
    or
    } - Live Demo + Live Demo }
    @@ -60,7 +60,7 @@ @if (hasPermissionForDemo) {
    or
    -
    Live Demo + Live Demo }
    diff --git a/apps/client/src/app/pages/markets/markets-page-routing.module.ts b/apps/client/src/app/pages/markets/markets-page-routing.module.ts index 6501d58b9..05ab9b275 100644 --- a/apps/client/src/app/pages/markets/markets-page-routing.module.ts +++ b/apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: MarketsPageComponent, path: '', - title: $localize`Markets` + title: publicRoutes.markets.title } ]; diff --git a/apps/client/src/app/pages/open/open-page-routing.module.ts b/apps/client/src/app/pages/open/open-page-routing.module.ts index b9db4ab10..c56fe80ba 100644 --- a/apps/client/src/app/pages/open/open-page-routing.module.ts +++ b/apps/client/src/app/pages/open/open-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: OpenPageComponent, path: '', - title: 'Open Startup' + title: publicRoutes.openStartup.title } ]; diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts b/apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts index 00962d563..3d1d0597a 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts +++ b/apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: ActivitiesPageComponent, path: '', - title: $localize`Activities` + title: internalRoutes.portfolio.subRoutes.activities.title } ]; diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index dce045a4a..2aa0c40ef 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -1,6 +1,9 @@ import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto'; import { UpdateOrderDto } from '@ghostfolio/api/app/order/update-order.dto'; +import { UserService } from '@ghostfolio/client/services/user/user.service'; import { getDateFormatString } from '@ghostfolio/common/helper'; +import { LookupItem } from '@ghostfolio/common/interfaces'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { translate } from '@ghostfolio/ui/i18n'; import { @@ -39,8 +42,11 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { return { id: assetSubClass, label: translate(assetSubClass) }; }); public currencies: string[] = []; + public currencyOfAssetProfile: string; public currentMarketPrice = null; public defaultDateFormat: string; + public defaultLookupItems: LookupItem[] = []; + public hasPermissionToCreateOwnTag: boolean; public isLoading = false; public isToday = isToday; public mode: 'create' | 'update'; @@ -59,12 +65,18 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { private dateAdapter: DateAdapter, public dialogRef: MatDialogRef, private formBuilder: FormBuilder, - @Inject(MAT_DATE_LOCALE) private locale: string + @Inject(MAT_DATE_LOCALE) private locale: string, + private userService: UserService ) {} public ngOnInit() { - this.mode = this.data.activity.id ? 'update' : 'create'; + this.currencyOfAssetProfile = this.data.activity?.SymbolProfile?.currency; + this.hasPermissionToCreateOwnTag = + this.data.user?.settings?.isExperimentalFeatures && + hasPermission(this.data.user?.permissions, permissions.createOwnTag); this.locale = this.data.user?.settings?.locale; + this.mode = this.data.activity?.id ? 'update' : 'create'; + this.dateAdapter.setLocale(this.locale); const { currencies, platforms } = this.dataService.fetchInfo(); @@ -73,6 +85,43 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.defaultDateFormat = getDateFormatString(this.locale); this.platforms = platforms; + this.dataService + .fetchPortfolioHoldings() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ holdings }) => { + this.defaultLookupItems = holdings + .filter(({ assetSubClass }) => { + return !['CASH'].includes(assetSubClass); + }) + .sort((a, b) => { + return a.name?.localeCompare(b.name); + }) + .map( + ({ + assetClass, + assetSubClass, + currency, + dataSource, + name, + symbol + }) => { + return { + assetClass, + assetSubClass, + currency, + dataSource, + name, + symbol, + dataProviderInfo: { + isPremium: false + } + }; + } + ); + + this.changeDetectorRef.markForCheck(); + }); + this.tagsAvailable = this.data.user?.tags?.map((tag) => { return { @@ -145,9 +194,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { ) .subscribe(async () => { if ( - this.activityForm.get('type').value === 'BUY' || - this.activityForm.get('type').value === 'FEE' || - this.activityForm.get('type').value === 'ITEM' + ['BUY', 'FEE', 'ITEM'].includes(this.activityForm.get('type').value) ) { this.total = this.activityForm.get('quantity').value * @@ -166,12 +213,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm.get('accountId').valueChanges.subscribe((accountId) => { const type = this.activityForm.get('type').value; - if ( - type === 'FEE' || - type === 'INTEREST' || - type === 'ITEM' || - type === 'LIABILITY' - ) { + if (['FEE', 'INTEREST', 'ITEM', 'LIABILITY'].includes(type)) { const currency = this.data.accounts.find(({ id }) => { return id === accountId; @@ -210,17 +252,49 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm.get('type').value ) ) { - this.updateSymbol(); + this.updateAssetProfile(); } this.changeDetectorRef.markForCheck(); }); + this.activityForm.get('tags').valueChanges.subscribe((tags: Tag[]) => { + const newTag = tags.find(({ id }) => { + return id === undefined; + }); + + if (newTag && this.hasPermissionToCreateOwnTag) { + this.dataService + .postTag({ ...newTag, userId: this.data.user.id }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((tag) => { + this.activityForm.get('tags').setValue( + tags.map((currentTag) => { + if (currentTag.id === undefined) { + return tag; + } + + return currentTag; + }) + ); + + this.userService + .get(true) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(); + }); + } + }); + this.activityForm .get('type') .valueChanges.pipe(takeUntil(this.unsubscribeSubject)) .subscribe((type: Type) => { - if (type === 'ITEM') { + if ( + type === 'ITEM' || + (this.activityForm.get('dataSource').value === 'MANUAL' && + type === 'BUY') + ) { this.activityForm .get('accountId') .removeValidators(Validators.required); @@ -395,9 +469,15 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { object: activity }); + if (activity.type === 'ITEM') { + // Transform deprecated type ITEM + activity.dataSource = 'MANUAL'; + activity.type = 'BUY'; + } + this.dialogRef.close(activity); } else { - (activity as UpdateOrderDto).id = this.data.activity.id; + (activity as UpdateOrderDto).id = this.data.activity?.id; await validateObjectForForm({ classDto: UpdateOrderDto, @@ -406,6 +486,12 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { object: activity as UpdateOrderDto }); + if (activity.type === 'ITEM') { + // Transform deprecated type ITEM + activity.dataSource = 'MANUAL'; + activity.type = 'BUY'; + } + this.dialogRef.close(activity as UpdateOrderDto); } } catch (error) { @@ -422,7 +508,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.unsubscribeSubject.complete(); } - private updateSymbol() { + private updateAssetProfile() { this.isLoading = true; this.changeDetectorRef.markForCheck(); @@ -450,6 +536,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.activityForm.get('dataSource').setValue(dataSource); } + this.currencyOfAssetProfile = currency; this.currentMarketPrice = marketPrice; this.isLoading = false; diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index b0521530f..b0185dc72 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -93,11 +93,11 @@ @for (account of data.accounts; track account) {
    - @if (account.Platform?.url) { - } {{ account.name }} @@ -124,6 +124,7 @@ Name, symbol or ISIN @@ -230,8 +231,10 @@
    @if ( + currencyOfAssetProfile === + activityForm.get('currencyOfUnitPrice').value && currentMarketPrice && - (data.activity.type === 'BUY' || data.activity.type === 'SELL') && + ['BUY', 'SELL'].includes(data.activity.type) && isToday(activityForm.get('date')?.value) ) {
    -
    +
    The following file formats are supported: CSV or JSON diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts index fce4bf221..e853a70f6 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -10,7 +11,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: AnalysisPageComponent, path: '', - title: $localize`Analysis` + title: internalRoutes.portfolio.subRoutes.analysis.title } ]; diff --git a/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts b/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts index 20de6f8fa..c2492a104 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -17,33 +18,33 @@ const routes: Routes = [ ) }, { - path: 'activities', + path: internalRoutes.portfolio.subRoutes.activities.path, loadChildren: () => import('./activities/activities-page.module').then( (m) => m.ActivitiesPageModule ) }, { - path: 'allocations', + path: internalRoutes.portfolio.subRoutes.allocations.path, loadChildren: () => import('./allocations/allocations-page.module').then( (m) => m.AllocationsPageModule ) }, { - path: 'fire', + path: internalRoutes.portfolio.subRoutes.fire.path, loadChildren: () => import('./fire/fire-page.module').then((m) => m.FirePageModule) }, { - path: 'x-ray', + path: internalRoutes.portfolio.subRoutes.xRay.path, loadChildren: () => import('./x-ray/x-ray-page.module').then((m) => m.XRayPageModule) } ], component: PortfolioPageComponent, path: '', - title: $localize`Portfolio` + title: internalRoutes.portfolio.title } ]; diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts index 3393b7404..6c1fb205b 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts @@ -1,5 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -32,28 +33,30 @@ export class PortfolioPageComponent implements OnDestroy, OnInit { this.tabs = [ { iconName: 'analytics-outline', - label: $localize`Analysis`, - path: ['/portfolio'] + label: internalRoutes.portfolio.subRoutes.analysis.title, + routerLink: internalRoutes.portfolio.routerLink }, { iconName: 'swap-vertical-outline', - label: $localize`Activities`, - path: ['/portfolio', 'activities'] + label: internalRoutes.portfolio.subRoutes.activities.title, + routerLink: + internalRoutes.portfolio.subRoutes.activities.routerLink }, { iconName: 'pie-chart-outline', - label: $localize`Allocations`, - path: ['/portfolio', 'allocations'] + label: internalRoutes.portfolio.subRoutes.allocations.title, + routerLink: + internalRoutes.portfolio.subRoutes.allocations.routerLink }, { iconName: 'calculator-outline', - label: 'FIRE ', - path: ['/portfolio', 'fire'] + label: internalRoutes.portfolio.subRoutes.fire.title, + routerLink: internalRoutes.portfolio.subRoutes.fire.routerLink }, { iconName: 'scan-outline', - label: 'X-ray', - path: ['/portfolio', 'x-ray'] + label: internalRoutes.portfolio.subRoutes.xRay.title, + routerLink: internalRoutes.portfolio.subRoutes.xRay.routerLink } ]; this.user = state.user; diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.html b/apps/client/src/app/pages/portfolio/portfolio-page.html index a9dbee450..af3b24b0a 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page.html +++ b/apps/client/src/app/pages/portfolio/portfolio-page.html @@ -16,7 +16,7 @@ mat-tab-link routerLinkActive [active]="rla.isActive" - [routerLink]="tab.path" + [routerLink]="tab.routerLink" [routerLinkActiveOptions]="{ exact: true }" > (); diff --git a/apps/client/src/app/pages/pricing/pricing-page.html b/apps/client/src/app/pages/pricing/pricing-page.html index d26a2e11e..c13766b75 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.html +++ b/apps/client/src/app/pages/pricing/pricing-page.html @@ -9,20 +9,6 @@ for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development.

    - @if (user?.subscription?.type === 'Basic') { -

    - If you plan to open an account at DEGIRO, finpension, - frankly, Interactive Brokers, Swissquote, - VIAC, or Zak, please - contact us - to use our referral link and get a Ghostfolio Premium membership for - one year. Looking for a student discount? Request it - here - with your university e-mail address. -

    - }

    If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on @@ -319,9 +305,13 @@ } @if (durationExtension) {

    -
    - Limited Offer! Get - {{ durationExtension }} extra +
    + Limited Offer! + Get {{ durationExtension }} extra
    } @@ -331,7 +321,24 @@
    - @if (!user) { + @if (user?.subscription?.type === 'Basic') { +
    +
    +

    + If you plan to open an account at DEGIRO, finpension, + frankly, Interactive Brokers, Swissquote, + VIAC, or Zak, please + contact us + to use our referral link and get a Ghostfolio Premium membership for + one year. Looking for a student discount? Request it + here + with your university e-mail address. +

    +
    +
    + } @else if (!user) {
    (); diff --git a/apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts b/apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts index 0ca4ecd4f..c65afcfbb 100644 --- a/apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts +++ b/apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts @@ -1,3 +1,5 @@ +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -7,7 +9,7 @@ const routes: Routes = [ { component: ResourcesGlossaryPageComponent, path: '', - title: $localize`Glossary` + title: publicRoutes.resources.subRoutes.glossary.title } ]; diff --git a/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts b/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts index b6749b5cd..81ae00fe1 100644 --- a/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts +++ b/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { InfoItem } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnInit } from '@angular/core'; @@ -13,10 +14,8 @@ import { Component, OnInit } from '@angular/core'; export class ResourcesGlossaryPageComponent implements OnInit { public hasPermissionForSubscription: boolean; public info: InfoItem; - public routerLinkResourcesPersonalFinanceTools = [ - '/' + $localize`:snake-case:resources`, - 'personal-finance-tools' - ]; + public routerLinkResourcesPersonalFinanceTools = + publicRoutes.resources.subRoutes.personalFinanceTools.routerLink; public constructor(private dataService: DataService) { this.info = this.dataService.fetchInfo(); diff --git a/apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts b/apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts index 468881733..ba731b7c9 100644 --- a/apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts +++ b/apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts @@ -1,3 +1,5 @@ +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -7,7 +9,7 @@ const routes: Routes = [ { component: ResourcesGuidesComponent, path: '', - title: $localize`Guides` + title: publicRoutes.resources.subRoutes.guides.title } ]; diff --git a/apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts b/apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts index c8cdb1026..a3304fffb 100644 --- a/apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts +++ b/apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts @@ -1,3 +1,5 @@ +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -7,7 +9,7 @@ const routes: Routes = [ { component: ResourcesMarketsComponent, path: '', - title: $localize`Markets` + title: publicRoutes.resources.subRoutes.markets.title } ]; diff --git a/apps/client/src/app/pages/resources/overview/resources-overview.component.html b/apps/client/src/app/pages/resources/overview/resources-overview.component.html index ad424f05c..39d7c1e62 100644 --- a/apps/client/src/app/pages/resources/overview/resources-overview.component.html +++ b/apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -7,7 +7,7 @@ }
    diff --git a/apps/client/src/app/pages/resources/overview/resources-overview.component.ts b/apps/client/src/app/pages/resources/overview/resources-overview.component.ts index f95e78a26..5cd7f09b5 100644 --- a/apps/client/src/app/pages/resources/overview/resources-overview.component.ts +++ b/apps/client/src/app/pages/resources/overview/resources-overview.component.ts @@ -1,3 +1,5 @@ +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + import { Component } from '@angular/core'; @Component({ @@ -9,37 +11,28 @@ import { Component } from '@angular/core'; export class ResourcesOverviewComponent { public overviewItems = [ { - title: 'Frequently Asked Questions (FAQ)', description: 'Find quick answers to commonly asked questions about Ghostfolio in our Frequently Asked Questions (FAQ) section.', - link: ['/' + $localize`:snake-case:faq`] + routerLink: publicRoutes.faq.routerLink, + title: publicRoutes.faq.title }, { - title: 'Guides', description: 'Explore our guides to help you get started with investing and managing your finances.', - link: [ - '/' + $localize`:snake-case:resources`, - $localize`:snake-case:guides` - ] + routerLink: publicRoutes.resources.subRoutes.guides.routerLink, + title: publicRoutes.resources.subRoutes.guides.title }, { - title: 'Markets', description: 'Access various market resources and tools to stay informed about financial markets.', - link: [ - '/' + $localize`:snake-case:resources`, - $localize`:snake-case:markets` - ] + routerLink: publicRoutes.resources.subRoutes.markets.routerLink, + title: publicRoutes.resources.subRoutes.markets.title }, { - title: 'Glossary', description: 'Learn key financial terms and concepts in our comprehensive glossary.', - link: [ - '/' + $localize`:snake-case:resources`, - $localize`:snake-case:glossary` - ] + routerLink: publicRoutes.resources.subRoutes.glossary.routerLink, + title: publicRoutes.resources.subRoutes.glossary.title } ]; } diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts index 01d920460..13b6cfbaf 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts @@ -1,5 +1,6 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -11,7 +12,7 @@ const routes: Routes = [ canActivate: [AuthGuard], component: PersonalFinanceToolsPageComponent, path: '', - title: $localize`Personal Finance Tools` + title: publicRoutes.resources.subRoutes.personalFinanceTools.title }, ...personalFinanceTools.map(({ alias, key, name }) => { return { @@ -23,8 +24,8 @@ const routes: Routes = [ return GfProductPageComponent; } ), - path: $localize`open-source-alternative-to` + `-${alias ?? key}`, - title: $localize`Open Source Alternative to ${name}` + path: `${publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes.product.path}-${alias ?? key}`, + title: `${publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes.product.title} ${name}` }; }) ]; diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts index c9c0aa044..e450aa65e 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts @@ -1,4 +1,5 @@ import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy } from '@angular/core'; import { Subject } from 'rxjs'; @@ -11,12 +12,16 @@ import { Subject } from 'rxjs'; standalone: false }) export class PersonalFinanceToolsPageComponent implements OnDestroy { - public pathAlternativeTo = $localize`open-source-alternative-to` + '-'; - public pathResources = '/' + $localize`resources`; + public pathAlternativeTo = + publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes.product + .path + '-'; + public pathResources = publicRoutes.resources.path; + public pathPersonalFinanceTools = + publicRoutes.resources.subRoutes.personalFinanceTools.path; public personalFinanceTools = personalFinanceTools.sort((a, b) => { return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' }); }); - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; + public routerLinkAbout = publicRoutes.about.routerLink; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html index f3c128433..3e4784307 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html @@ -32,8 +32,8 @@ personalFinanceTool.name }} - {{ personalFinanceTool.slogan }}" [routerLink]="[ - pathResources, - 'personal-finance-tools', + '/' + pathResources, + pathPersonalFinanceTools, pathAlternativeTo + (personalFinanceTool.alias ?? personalFinanceTool.key) ]" diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts index bee5cb642..caf29e7a0 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -1,6 +1,7 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { Product } from '@ghostfolio/common/interfaces'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { translate } from '@ghostfolio/ui/i18n'; import { Component, OnInit } from '@angular/core'; @@ -19,12 +20,10 @@ export class GfProductPageComponent implements OnInit { public price: number; public product1: Product; public product2: Product; - public routerLinkAbout = ['/' + $localize`:snake-case:about`]; - public routerLinkFeatures = ['/' + $localize`:snake-case:features`]; - public routerLinkResourcesPersonalFinanceTools = [ - '/' + $localize`:snake-case:resources`, - 'personal-finance-tools' - ]; + public routerLinkAbout = publicRoutes.about.routerLink; + public routerLinkFeatures = publicRoutes.features.routerLink; + public routerLinkResourcesPersonalFinanceTools = + publicRoutes.resources.subRoutes.personalFinanceTools.routerLink; public tags: string[]; public constructor( diff --git a/apps/client/src/app/pages/resources/resources-page-routing.module.ts b/apps/client/src/app/pages/resources/resources-page-routing.module.ts index bcbe1bad5..51d9e2c73 100644 --- a/apps/client/src/app/pages/resources/resources-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/resources-page-routing.module.ts @@ -1,4 +1,5 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -18,36 +19,36 @@ const routes: Routes = [ ) }, { - path: $localize`:snake-case:glossary`, + path: publicRoutes.resources.subRoutes.glossary.path, loadChildren: () => import('./glossary/resources-glossary.module').then( (m) => m.ResourcesGlossaryPageModule ) }, { - path: $localize`:snake-case:guides`, + path: publicRoutes.resources.subRoutes.guides.path, loadChildren: () => import('./guides/resources-guides.module').then( (m) => m.ResourcesGuidesModule ) }, { - path: $localize`:snake-case:markets`, + path: publicRoutes.resources.subRoutes.markets.path, loadChildren: () => import('./markets/resources-markets.module').then( (m) => m.ResourcesMarketsModule ) }, - ...['personal-finance-tools'].map((path) => ({ - path, + { + path: publicRoutes.resources.subRoutes.personalFinanceTools.path, loadChildren: () => import( './personal-finance-tools/personal-finance-tools-page.module' ).then((m) => m.PersonalFinanceToolsPageModule) - })) + } ], path: '', - title: $localize`Resources` + title: publicRoutes.resources.title } ]; diff --git a/apps/client/src/app/pages/resources/resources-page.component.ts b/apps/client/src/app/pages/resources/resources-page.component.ts index d0534417d..22c8f0ec6 100644 --- a/apps/client/src/app/pages/resources/resources-page.component.ts +++ b/apps/client/src/app/pages/resources/resources-page.component.ts @@ -1,3 +1,6 @@ +import { TabConfiguration } from '@ghostfolio/common/interfaces'; +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + import { Component, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; @@ -11,26 +14,26 @@ import { Subject } from 'rxjs'; }) export class ResourcesPageComponent implements OnInit { public deviceType: string; - public tabs = [ + public tabs: TabConfiguration[] = [ { - path: '.', + iconName: 'reader-outline', label: $localize`Overview`, - iconName: 'reader-outline' + routerLink: publicRoutes.resources.routerLink }, { - path: 'guides', label: $localize`Guides`, - iconName: 'book-outline' + iconName: 'book-outline', + routerLink: publicRoutes.resources.subRoutes.guides.routerLink }, { - path: 'markets', + iconName: 'newspaper-outline', label: $localize`Markets`, - iconName: 'newspaper-outline' + routerLink: publicRoutes.resources.subRoutes.markets.routerLink }, { - path: 'glossary', + iconName: 'library-outline', label: $localize`Glossary`, - iconName: 'library-outline' + routerLink: publicRoutes.resources.subRoutes.glossary.routerLink } ]; diff --git a/apps/client/src/app/pages/resources/resources-page.html b/apps/client/src/app/pages/resources/resources-page.html index a9dbee450..af3b24b0a 100644 --- a/apps/client/src/app/pages/resources/resources-page.html +++ b/apps/client/src/app/pages/resources/resources-page.html @@ -16,7 +16,7 @@ mat-tab-link routerLinkActive [active]="rla.isActive" - [routerLink]="tab.path" + [routerLink]="tab.routerLink" [routerLinkActiveOptions]="{ exact: true }" > Oops, authentication has failed. -
    or
    -
    diff --git a/apps/client/src/app/pages/zen/zen-page-routing.module.ts b/apps/client/src/app/pages/zen/zen-page-routing.module.ts index 96eedadde..f5a8f222f 100644 --- a/apps/client/src/app/pages/zen/zen-page-routing.module.ts +++ b/apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -1,6 +1,7 @@ import { HomeHoldingsComponent } from '@ghostfolio/client/components/home-holdings/home-holdings.component'; import { HomeOverviewComponent } from '@ghostfolio/client/components/home-overview/home-overview.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; @@ -11,12 +12,19 @@ const routes: Routes = [ { canActivate: [AuthGuard], children: [ - { path: '', component: HomeOverviewComponent }, - { path: 'holdings', component: HomeHoldingsComponent } + { + path: '', + component: HomeOverviewComponent + }, + { + path: internalRoutes.zen.subRoutes.holdings.path, + component: HomeHoldingsComponent, + title: internalRoutes.home.subRoutes.holdings.title + } ], component: ZenPageComponent, path: '', - title: $localize`Overview` + title: internalRoutes.zen.title } ]; diff --git a/apps/client/src/app/pages/zen/zen-page.component.ts b/apps/client/src/app/pages/zen/zen-page.component.ts index c39cecccd..9cdf5e692 100644 --- a/apps/client/src/app/pages/zen/zen-page.component.ts +++ b/apps/client/src/app/pages/zen/zen-page.component.ts @@ -1,5 +1,6 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -32,13 +33,13 @@ export class ZenPageComponent implements OnDestroy, OnInit { this.tabs = [ { iconName: 'analytics-outline', - label: $localize`Overview`, - path: ['/zen'] + label: internalRoutes.zen.title, + routerLink: internalRoutes.zen.routerLink }, { iconName: 'wallet-outline', - label: $localize`Holdings`, - path: ['/zen', 'holdings'] + label: internalRoutes.zen.subRoutes.holdings.title, + routerLink: internalRoutes.zen.subRoutes.holdings.routerLink } ]; this.user = state.user; diff --git a/apps/client/src/app/pages/zen/zen-page.html b/apps/client/src/app/pages/zen/zen-page.html index a9dbee450..af3b24b0a 100644 --- a/apps/client/src/app/pages/zen/zen-page.html +++ b/apps/client/src/app/pages/zen/zen-page.html @@ -16,7 +16,7 @@ mat-tab-link routerLinkActive [active]="rla.isActive" - [routerLink]="tab.path" + [routerLink]="tab.routerLink" [routerLinkActiveOptions]="{ exact: true }" > (`/api/v1/admin/demo-user/sync`); + } + public testMarketData({ dataSource, scraperConfiguration, diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 0529c5069..537aacdd6 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -16,6 +16,7 @@ import { UpdateOrderDto } from '@ghostfolio/api/app/order/update-order.dto'; import { SymbolItem } from '@ghostfolio/api/app/symbol/interfaces/symbol-item.interface'; import { DeleteOwnUserDto } from '@ghostfolio/api/app/user/delete-own-user.dto'; import { UserItem } from '@ghostfolio/api/app/user/interfaces/user-item.interface'; +import { UpdateOwnAccessTokenDto } from '@ghostfolio/api/app/user/update-own-access-token.dto'; import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; import { IDataProviderHistoricalResponse } from '@ghostfolio/api/services/interfaces/interfaces'; import { PropertyDto } from '@ghostfolio/api/services/property/property.dto'; @@ -30,6 +31,7 @@ import { AssetProfileIdentifier, BenchmarkMarketDataDetails, BenchmarkResponse, + DataProviderHealthResponse, Export, Filter, ImportResponse, @@ -37,6 +39,7 @@ import { LookupItem, LookupResponse, MarketDataDetailsResponse, + MarketDataOfMarketsResponse, OAuthResponse, PortfolioDetails, PortfolioDividends, @@ -381,6 +384,12 @@ export class DataService { return this.http.get('/api/v1/benchmarks'); } + public fetchDataProviderHealth(dataSource: DataSource) { + return this.http.get( + `/api/v1/health/data-provider/${dataSource}` + ); + } + public fetchExport({ activityIds, filters @@ -476,6 +485,34 @@ export class DataService { ); } + public fetchMarketDataOfMarkets({ + includeHistoricalData + }: { + includeHistoricalData?: number; + }): Observable { + let params = new HttpParams(); + + if (includeHistoricalData) { + params = params.append('includeHistoricalData', includeHistoricalData); + } + + return this.http.get('/api/v1/market-data/markets', { params }).pipe( + map((data) => { + for (const item of data.fearAndGreedIndex.CRYPTOCURRENCIES + ?.historicalData ?? []) { + item.date = parseISO(item.date); + } + + for (const item of data.fearAndGreedIndex.STOCKS?.historicalData ?? + []) { + item.date = parseISO(item.date); + } + + return data; + }) + ); + } + public fetchSymbolItem({ dataSource, includeHistoricalData, @@ -567,7 +604,7 @@ export class DataService { } public fetchPortfolioLookup({ query }: { query: string }) { - let params = new HttpParams().set('query', query); + const params = new HttpParams().set('query', query); return this.http .get<{ items: LookupItem[] }>('/api/v1/portfolio/lookup', { @@ -711,13 +748,6 @@ export class DataService { return this.http.get('/api/v1/watchlist'); } - public generateAccessToken(aUserId: string) { - return this.http.post( - `/api/v1/user/${aUserId}/access-token`, - {} - ); - } - public loginAnonymous(accessToken: string) { return this.http.post('/api/v1/auth/anonymous', { accessToken @@ -826,6 +856,20 @@ export class DataService { }); } + public updateOwnAccessToken(aAccessToken: UpdateOwnAccessTokenDto) { + return this.http.post( + '/api/v1/user/access-token', + aAccessToken + ); + } + + public updateUserAccessToken(aUserId: string) { + return this.http.post( + `/api/v1/user/${aUserId}/access-token`, + {} + ); + } + public updateInfo() { this.http.get('/api/v1/info').subscribe((info) => { const utmSource = window.localStorage.getItem('utm_source') as diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 2164bd248..a4ffa7ec4 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -343,8 +343,6 @@ export class ImportActivitiesService { return 'FEE'; case 'interest': return 'INTEREST'; - case 'item': - return 'ITEM'; case 'liability': return 'LIABILITY'; case 'sell': diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 78a341ad7..d75b71bc1 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -5,28 +5,32 @@ Features Característiques - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 Internationalization Internacionalització - apps/client/src/app/app-routing.module.ts - 88 + libs/common/src/lib/routes/routes.ts + 119 Sign in Iniciar sessió - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -74,12 +78,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -94,11 +102,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -114,11 +122,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -194,7 +202,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -206,7 +214,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -238,7 +246,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -254,7 +262,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 @@ -278,15 +286,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -365,7636 +373,7674 @@ 221 - + about sobre - snake-case + kebab-case - apps/client/src/app/app.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 214 + + + license + llicencies + kebab-case - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 191 + + + privacy-policy + politica-de-privacitat + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 207 + + + faq + faq + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/about-page.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/about/about-page.component.ts - 84 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 245 + + + features + caracteristiques + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 255 + + + markets + mercats + kebab-case - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + preu + kebab-case - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 270 + + + register + registrar-se + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + recursos + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/routes/routes.ts + 284 - - - license - llicències - snake-case - apps/client/src/app/app.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/core/paths.ts - 5 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 298 - - - privacy-policy - política de privacitat - snake-case - apps/client/src/app/app.component.ts - 76 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/core/paths.ts - 8 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 322 - - faq - faq - snake-case + + Alias + Àlies - apps/client/src/app/app.component.ts - 82 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/core/paths.ts - 3 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + Grantee + Beneficiari - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + Permission + Permisos - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 + + + View + Vista - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - features - característiques - snake-case + + Restricted view + Vista restringida - apps/client/src/app/app.component.ts - 83 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/components/header/header.component.ts - 83 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 + + + Details + Detalls - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + Revoke + Revocar - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/components/access-table/access-table.component.html + 75 + + + Do you really want to revoke this granted access? + Realment vol revocar aquest accés? - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/components/access-table/access-table.component.ts + 79 + + + Cash Balance + Balanç de Caixa - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 47 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity + Patrimoni - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 58 + + + Activities + Activitats - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 92 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 205 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 45 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 224 - - - markets - mercats - snake-case - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Platform + Plataforma - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 67 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Holdings + En cartera - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 79 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/public/public-page.html + 70 + + + Cash Balances + Balanç de Caixa - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 - - pricing - preu - snake-case + + Transfer Cash Balance + Transferir Efectiu - apps/client/src/app/app.component.ts - 85 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Name + Nom - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 89 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 287 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 22 - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 46 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 22 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 139 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + libs/ui/src/lib/activities-table/activities-table.component.html + 138 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 16 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Total + Total - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + Currency + Divisa - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 185 - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 294 - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 46 - - - register - registrar-se - snake-case - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 145 - apps/client/src/app/core/auth.guard.ts - 55 + libs/ui/src/lib/activities-table/activities-table.component.html + 276 + + + Value + Valor - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/pages/features/features-page.component.ts - 28 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 205 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 208 - - - resources - recursos - snake-case - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 211 - apps/client/src/app/components/header/header.component.ts - 86 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/components/header/header.component.ts - 92 + libs/ui/src/lib/activities-table/activities-table.component.html + 257 - apps/client/src/app/core/paths.ts - 10 + libs/ui/src/lib/activities-table/activities-table.component.html + 293 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 25 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 102 + + + Edit + Editar - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 268 - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 74 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 67 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/ui/src/lib/activities-table/activities-table.component.html + 430 + + + Delete + Suprimir - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 289 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 290 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - - - Alias - Àlies - apps/client/src/app/components/access-table/access-table.component.html - 4 + apps/client/src/app/components/admin-overview/admin-overview.html + 129 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 85 - - - Grantee - Beneficiari - apps/client/src/app/components/access-table/access-table.component.html - 11 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 78 - - - Permission - Permisos - apps/client/src/app/components/access-table/access-table.component.html - 18 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + libs/ui/src/lib/activities-table/activities-table.component.html + 457 - - - View - Vista - apps/client/src/app/components/access-table/access-table.component.html - 23 + libs/ui/src/lib/benchmark/benchmark.component.html + 169 + + + Do you really want to delete this account? + Realment vol suprimir aquest compte? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 107 - - Restricted view - Vista restringida + + Type + Tipus - apps/client/src/app/components/access-table/access-table.component.html - 26 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + 22 - - - Details - Detalls - apps/client/src/app/components/access-table/access-table.component.html - 33 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - - - Revoke - Revocar - apps/client/src/app/components/access-table/access-table.component.html - 75 + libs/ui/src/lib/activities-table/activities-table.component.html + 161 - - Do you really want to revoke this granted access? - Realment vol revocar aquest accés? + + Asset Profile + Perfil d’Actiu - apps/client/src/app/components/access-table/access-table.component.ts - 79 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 - - Cash Balance - Balanç de Caixa - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 47 - + + Historical Market Data + Dades Històriques de Mercat - apps/client/src/app/components/accounts-table/accounts-table.component.html - 136 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 85 - - Equity - Patrimoni + + Symbol + Símbol - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 46 - - - Activities - Activitats - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 63 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 75 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 153 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 119 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 39 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 205 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 308 + + + Data Source + Origen de les Dades - apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 55 - apps/client/src/app/components/admin-users/admin-users.html - 135 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 106 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 163 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 155 + + + Priority + Prioritat - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - Platform - Plataforma + + Attempts + Intents - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 67 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 83 + + + Created + Creat - apps/client/src/app/components/accounts-table/accounts-table.component.html - 86 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 92 + + + Finished + Finalitzat - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 101 - - Holdings - En cartera + + Status + Estat - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 79 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 110 - apps/client/src/app/components/home-holdings/home-holdings.html - 4 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + + + Delete Jobs + Aturar Processos - apps/client/src/app/pages/public/public-page.html - 70 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 151 + + + View Data + Veure les Dades - libs/ui/src/lib/assistant/assistant.html - 44 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 166 - - Cash Balances - Balanç de Caixa + + View Stacktrace + Veure Stacktrace - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 173 - - Transfer Cash Balance - Transferir Efectiu + + Execute Job + Executar Procés - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 + + + Delete Job + Suprimir Procés - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 180 - - Name - Nom + + Details for + Detalls de - apps/client/src/app/components/accounts-table/accounts-table.component.html - 43 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 2 + + + Date + Data - apps/client/src/app/components/admin-market-data/admin-market-data.html - 89 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 161 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 287 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + libs/ui/src/lib/activities-table/activities-table.component.html + 170 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 15 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 6 + + + Market Price + Preu de Mercat - apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 133 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 109 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 15 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 26 + + + Cancel + Cancel·lar - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 146 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 544 - libs/ui/src/lib/activities-table/activities-table.component.html - 138 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 56 - libs/ui/src/lib/benchmark/benchmark.component.html - 4 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 38 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 16 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 15 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 88 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - - - Total - Total - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 - - - Currency - Divisa - apps/client/src/app/components/accounts-table/accounts-table.component.html + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 65 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 338 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 294 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 48 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html 46 + + + Save + Guardar - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 551 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 63 - libs/ui/src/lib/activities-table/activities-table.component.html - 276 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 45 - - - Value - Valor - apps/client/src/app/components/accounts-table/accounts-table.component.html - 171 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 206 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 22 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 53 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 135 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 345 - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 48 + + + Benchmarks + Punts de referència - libs/ui/src/lib/activities-table/activities-table.component.html - 257 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 + + + Currencies + Divises - libs/ui/src/lib/activities-table/activities-table.component.html - 293 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 86 + + + ETFs without Countries + ETFs sense País - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 91 + + + ETFs without Sectors + ETFs sense Sector - libs/ui/src/lib/top-holdings/top-holdings.component.html - 25 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 96 + + + Filter by... + Filtra per... - libs/ui/src/lib/top-holdings/top-holdings.component.html - 102 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 330 - - Edit - Editar + + Asset Class + Classe d’Actiu - apps/client/src/app/components/accounts-table/accounts-table.component.html - 278 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 115 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 268 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 235 - libs/ui/src/lib/activities-table/activities-table.component.html - 430 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 290 - - - Delete - Suprimir - apps/client/src/app/components/accounts-table/accounts-table.component.html - 289 + libs/ui/src/lib/assistant/assistant.html + 205 + + + Asset Sub Class + Subclasse d’Actiu apps/client/src/app/components/admin-market-data/admin-market-data.html - 290 + 124 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 223 - apps/client/src/app/components/admin-overview/admin-overview.html - 129 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 317 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 244 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 + + + First Activity + Primera Activitat - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 148 - libs/ui/src/lib/activities-table/activities-table.component.html - 457 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 196 - libs/ui/src/lib/benchmark/benchmark.component.html - 155 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 212 - - - Do you really want to delete this account? - Realment vol suprimir aquest compte? - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 107 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 - - Type - Tipus + + Activities Count + Nombre d’Activitats - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 157 + + + Historical Data + Dades Històriques - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 166 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 15 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 44 + + + Sectors Count + Nombre de Sectors - libs/ui/src/lib/activities-table/activities-table.component.html - 161 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 175 - - Asset Profile - Perfil d’Actiu + + Countries Count + Nombre de Països - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 184 - - Historical Market Data - Dades Històriques de Mercat + + Gather Profile Data + Recopilar Dades del Perfil - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 235 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 85 + 44 - - Symbol - Símbol - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 46 - + + Delete Profiles + Eliminar Perfils apps/client/src/app/components/admin-market-data/admin-market-data.html - 75 + 243 + + + Do you really want to delete this asset profile? + Realment vol eliminar el perfil d’aquest actiu? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 153 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Do you really want to delete these profiles? + Realment vol eliminar aquests perfils? - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 39 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 + + + Oops! Could not delete profiles. + Oooh! No s’han pogut eliminar els perfils - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - Data Source - Origen de les Dades + + Oops! Could not parse historical data. + Oooh! No s’han pogut recopilar les dades históriques. - apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 + + + The current market price is + El preu de mercat actual és - apps/client/src/app/components/admin-market-data/admin-market-data.html - 106 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 + + + Refresh + Refrescar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 163 + 17 + + + Import + Importar - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - - - Priority - Prioritat - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 - - - Attempts - Intents - apps/client/src/app/components/admin-jobs/admin-jobs.html - 83 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 71 - - Created - Creat + + Sector + Sector - apps/client/src/app/components/admin-jobs/admin-jobs.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 240 - - - Finished - Finalitzat - apps/client/src/app/components/admin-jobs/admin-jobs.html - 101 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 261 - - Status - Estat + + Country + País - apps/client/src/app/components/admin-jobs/admin-jobs.html - 110 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 251 - - - Delete Jobs - Aturar Processos - apps/client/src/app/components/admin-jobs/admin-jobs.html - 151 + apps/client/src/app/components/admin-users/admin-users.html + 77 - - - View Data - Veure les Dades - apps/client/src/app/components/admin-jobs/admin-jobs.html - 166 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 271 - - View Stacktrace - Veure Stacktrace + + Sectors + Sectors - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 257 - - - Execute Job - Executar Procés - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 484 - - - Delete Job - Suprimir Procés - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 277 - - - Details for - Detalls de - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 2 + apps/client/src/app/pages/public/public-page.html + 106 - - Date - Data + + Countries + Països - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 267 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 495 - libs/ui/src/lib/activities-table/activities-table.component.html - 170 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 289 + + + Benchmark + Referència - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 6 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 - - Market Price - Preu de Mercat + + Symbol Mapping + Mapatge de Símbols - apps/client/src/app/components/admin-market-data/admin-market-data.html - 133 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 + + + Scraper Configuration + Configuració del Proveïdor de Dades - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 377 + + + Test + Prova - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 26 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 - - Cancel - Cancel·lar + + Url + Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 146 + 455 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 544 + 507 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 56 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 - - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 25 + + + Note + Notes - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 15 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 520 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 65 + 78 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 275 + + + Add Asset Profile + Afegeix el Perfil de l’Actiu - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 48 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + Search + Cerca - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 - - Save - Guardar - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 551 - + + Add Manually + Afegir manualment apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 63 + 19 + + + Name, symbol or ISIN + Nom, símbol o ISIN - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 32 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 29 apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 22 + 10 - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 135 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + Do you really want to delete this coupon? + Està segur qeu vol eliminar aquest cupó? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 142 + + + Do you really want to delete this system message? + Està segur que vol eliminar aquest missatge del sistema? - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + Do you really want to flush the cache? + Està segur que vol depurar el cache? - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 179 + + + Please set your system message: + Si us plau, afegeixi el seu missatge del sistema: - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 199 - - Benchmarks - Punts de referència + + Version + Versió - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - Currencies - Divises + + User Count + Número d’Usuaris - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 86 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 - - ETFs without Countries - ETFs sense País + + Activity Count + Número d’Activitats - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 - - ETFs without Sectors - ETFs sense Sector + + per User + per Usuari - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 - - Filter by... - Filtra per... + + Add Currency + Afegir Divisa - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 330 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 22 - - Asset Class - Classe d’Actiu + + User Signup + Registrar Usuari - apps/client/src/app/components/admin-market-data/admin-market-data.html - 115 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Read-only Mode + Mode Només Lecutra - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 214 + apps/client/src/app/components/admin-overview/admin-overview.html + 48 + + + Data Gathering + Recollida de Dades apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 304 + 541 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 + + + System Message + Missatge del Sistema - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + apps/client/src/app/components/admin-overview/admin-overview.html + 72 + + + Set Message + Estableix el Missatge - libs/ui/src/lib/assistant/assistant.html - 168 + apps/client/src/app/components/admin-overview/admin-overview.html + 94 - - Asset Sub Class - Subclasse d’Actiu + + Coupons + Coupons - apps/client/src/app/components/admin-market-data/admin-market-data.html - 124 + apps/client/src/app/components/admin-overview/admin-overview.html + 102 + + + Add + Afegir - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 223 + apps/client/src/app/components/admin-overview/admin-overview.html + 162 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 317 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping + Ordre - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + Flush Cache + Depurar el Cache - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + apps/client/src/app/components/admin-overview/admin-overview.html + 186 - - First Activity - Primera Activitat + + Add Platform + Afegeix Plataforma - apps/client/src/app/components/admin-market-data/admin-market-data.html - 148 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 8 + + + Accounts + Comptes - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 52 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + apps/client/src/app/components/admin-users/admin-users.html + 114 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + apps/client/src/app/components/header/header.component.html + 58 - - - Activities Count - Nombre d’Activitats - apps/client/src/app/components/admin-market-data/admin-market-data.html - 157 + apps/client/src/app/components/header/header.component.html + 268 - - - Historical Data - Dades Històriques - apps/client/src/app/components/admin-market-data/admin-market-data.html - 166 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + apps/client/src/app/pages/accounts/accounts-page.html + 4 - - Sectors Count - Nombre de Sectors + + Do you really want to delete this platform? + Està segur que vol eliminar aquesta plataforma? - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 87 - - Countries Count - Nombre de Països + + Update platform + Actualitzar plataforma - apps/client/src/app/components/admin-market-data/admin-market-data.html - 184 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 - - Gather Profile Data - Recopilar Dades del Perfil - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 235 - + + Add platform + Afegeix una plataforma - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 44 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 - - Delete Profiles - Eliminar Perfils + + Platforms + Plataformes - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 195 - - Do you really want to delete this asset profile? - Realment vol eliminar el perfil d’aquest actiu? + + Tags + Etiquetes - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 201 - - - Do you really want to delete these profiles? - Realment vol eliminar aquests perfils? - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 4 - - - Oops! Could not delete profiles. - Oooh! No s’han pogut eliminar els perfils - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 16 - - Oops! Could not parse historical data. - Oooh! No s’han pogut recopilar les dades históriques. + + Add Tag + Afegir Etiqueta - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - The current market price is - El preu de mercat actual és + + Do you really want to delete this tag? + Està segur que vol eliminar aquesta etiqueta? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 85 - - Refresh - Refrescar + + Update tag + Actualitzar etiqueta - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 17 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 - - Import - Importar + + Add tag + Afegir etiqueta - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 153 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Do you really want to delete this user? + Està segur que vol eliminar aquest usuari? - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + apps/client/src/app/components/admin-users/admin-users.component.ts + 142 + + + User + Usuari - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + apps/client/src/app/components/admin-users/admin-users.html + 29 - - Sector - Sector + + Registration + Registrar-se - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 240 + apps/client/src/app/components/admin-users/admin-users.html + 97 + + + Engagement per Day + Implicació per Dia - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + apps/client/src/app/components/admin-users/admin-users.html + 157 - - Country - País + + Last Request + Última Solicitut - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 251 + apps/client/src/app/components/admin-users/admin-users.html + 202 + + + Impersonate User + Actuar com un altre Usuari apps/client/src/app/components/admin-users/admin-users.html - 77 + 239 + + + Delete User + Eliminar Usuari - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + apps/client/src/app/components/admin-users/admin-users.html + 260 - - Sectors - Sectors + + Performance + Rendiment - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 257 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 484 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + Compare with... + Comparar amb... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 + + + Manage Benchmarks + Gestionar els Punts de Referència - apps/client/src/app/pages/public/public-page.html - 106 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 - - Countries - Països + + Portfolio + Portfolio - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 120 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 495 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + libs/common/src/lib/routes/routes.ts + 151 - + Benchmark - Referència + Punt de Referència - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 132 - - Symbol Mapping - Mapatge de Símbols + + Current Market Mood + Sentiment del Mercat - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 352 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 - - Scraper Configuration - Configuració del Proveïdor de Dades + + Overview + Visió General - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 377 + apps/client/src/app/components/header/header.component.html + 30 - - - Test - Prova - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + apps/client/src/app/components/header/header.component.html + 248 - - - Url - Url - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 455 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 + + + Portfolio + Portfolio - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 507 + apps/client/src/app/components/header/header.component.html + 44 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + apps/client/src/app/components/header/header.component.html + 258 + + + Admin Control + Panell d’Administració - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 25 - - - - Note - Notes - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 520 + apps/client/src/app/components/header/header.component.html + 74 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + apps/client/src/app/components/header/header.component.html + 289 - - Add Asset Profile - Afegeix el Perfil de l’Actiu + + Upgrade Plan + Millora la teva Subscripció - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 + apps/client/src/app/components/header/header.component.html + 193 - - - Search - Cerca - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 70 - - - Add Manually - Afegir manualment - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 20 - - - Name, symbol or ISIN - Nom, símbol o ISIN - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + apps/client/src/app/pages/pricing/pricing-page.html + 298 + + + Renew Plan + Renova la teva Subscripció - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 29 + apps/client/src/app/components/header/header.component.html + 191 - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 10 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + apps/client/src/app/pages/pricing/pricing-page.html + 296 - - Do you really want to delete this coupon? - Està segur qeu vol eliminar aquest cupó? + + Me + Tu - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + apps/client/src/app/components/header/header.component.html + 213 - - Do you really want to delete this system message? - Està segur que vol eliminar aquest missatge del sistema? + + User + Usuari - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 31 - - - Do you really want to flush the cache? - Està segur que vol depurar el cache? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + apps/client/src/app/components/header/header.component.html + 231 - - Please set your system message: - Si us plau, afegeixi el seu missatge del sistema: + + My Ghostfolio + El meu Ghostfolio - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + apps/client/src/app/components/header/header.component.html + 277 - - Version - Versió + + About Ghostfolio + Sobre Ghostfolio - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/components/header/header.component.html + 326 - - - User Count - Número d’Usuaris - apps/client/src/app/components/admin-overview/admin-overview.html - 13 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 - - Activity Count - Número d’Activitats + + Sign in + Iniciar Sessió - apps/client/src/app/components/admin-overview/admin-overview.html - 19 + apps/client/src/app/components/header/header.component.html + 422 - - - per User - per Usuari - apps/client/src/app/components/admin-overview/admin-overview.html - 28 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 - - Add Currency - Afegir Divisa + + Get started + Primers Passos - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 22 + apps/client/src/app/components/header/header.component.html + 432 - - User Signup - Registrar Usuari + + Oops! Incorrect Security Token. + Oooh! El testimoni de seguretat és incorrecte. - apps/client/src/app/components/admin-overview/admin-overview.html - 34 + apps/client/src/app/components/header/header.component.ts + 252 - - - Read-only Mode - Mode Només Lecutra - apps/client/src/app/components/admin-overview/admin-overview.html - 48 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 - - - Data Gathering - Recollida de Dades - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 + + + Change + Canvia - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 - - System Message - Missatge del Sistema + + Average Unit Price + Preu Mig per Unitat - apps/client/src/app/components/admin-overview/admin-overview.html - 72 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 98 - - Set Message - Estableix el Missatge + + Minimum Price + Preu Mínim - apps/client/src/app/components/admin-overview/admin-overview.html - 94 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 125 - - Coupons - Coupons + + Maximum Price + Preu Màxim - apps/client/src/app/components/admin-overview/admin-overview.html - 102 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 141 - - Add - Afegir + + Quantity + Quantitat - apps/client/src/app/components/admin-overview/admin-overview.html - 162 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 151 - libs/ui/src/lib/account-balances/account-balances.component.html - 93 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 189 - - - Housekeeping - Ordre - apps/client/src/app/components/admin-overview/admin-overview.html - 170 + libs/ui/src/lib/activities-table/activities-table.component.html + 186 - - Flush Cache - Depurar el Cache + + Investment + Inversió - apps/client/src/app/components/admin-overview/admin-overview.html - 174 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 165 - - - Add Platform - Afegeix Plataforma - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 - - Accounts - Comptes + + Dividend + Dividend - apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 180 - apps/client/src/app/components/admin-users/admin-users.html - 114 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 319 - apps/client/src/app/components/header/header.component.html - 54 + apps/client/src/app/pages/features/features-page.html + 63 - apps/client/src/app/components/header/header.component.html - 259 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 202 + + + Dividend Yield + Rendiment del Dividend apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 190 + + + Fees + Comissions - apps/client/src/app/pages/accounts/accounts-page.html - 4 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 202 - - - Do you really want to delete this platform? - Està segur que vol eliminar aquesta plataforma? - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 87 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 84 - - - Update platform - Actualitzar plataforma - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 213 - - Add platform - Afegeix una plataforma + + Activity + Activitat - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 10 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - Platforms - Plataformes + + Report Data Glitch + Informar d’un Problema amb les Dades - apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 423 - - Tags - Etiquetes + + Active + en Actiiu - apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 + + + Closed + Finalitzat - libs/ui/src/lib/tags-selector/tags-selector.component.html - 4 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 + + + Table + Taula - libs/ui/src/lib/tags-selector/tags-selector.component.html + apps/client/src/app/components/home-holdings/home-holdings.html 16 - - Add Tag - Afegir Etiqueta + + Chart + Gràfic - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Do you really want to delete this tag? - Està segur que vol eliminar aquesta etiqueta? + + Manage Activities + Gestionar Activitats - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/home-holdings/home-holdings.html + 62 - - Update tag - Actualitzar etiqueta + + Fear + Por - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - - - Add tag - Afegir etiqueta - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/components/markets/markets.component.ts + 49 - - - Do you really want to delete this user? - Està segur que vol eliminar aquest usuari? - apps/client/src/app/components/admin-users/admin-users.component.ts - 142 + libs/ui/src/lib/i18n.ts + 102 - - User - Usuari + + Greed + Cobdícia - apps/client/src/app/components/admin-users/admin-users.html + apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + + + libs/ui/src/lib/i18n.ts + 103 + - - Registration - Registrar-se + + Last Days + Últims Dies - apps/client/src/app/components/admin-users/admin-users.html - 97 + apps/client/src/app/components/home-market/home-market.html + 7 + + + apps/client/src/app/components/markets/markets.html + 17 - - Engagement per Day - Implicació per Dia + + Welcome to Ghostfolio + Benvingut a Ghostfolio - apps/client/src/app/components/admin-users/admin-users.html - 157 + apps/client/src/app/components/home-overview/home-overview.html + 7 - - Last Request - Última Solicitut + + Ready to take control of your personal finances? + Estàs preparat per controlar les teves finances personals? - apps/client/src/app/components/admin-users/admin-users.html - 202 + apps/client/src/app/components/home-overview/home-overview.html + 8 - - Impersonate User - Actuar com un altre Usuari + + Setup your accounts + Configura els teus comptes - apps/client/src/app/components/admin-users/admin-users.html - 239 + apps/client/src/app/components/home-overview/home-overview.html + 15 - - Delete User - Eliminar Usuari + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Obtingueu una visió financera completa afegint els vostres comptes bancaris i de corredoria. - apps/client/src/app/components/admin-users/admin-users.html - 260 + apps/client/src/app/components/home-overview/home-overview.html + 17 - - Performance - Rendiment + + Capture your activities + Captura les teves activitats - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Registra les teves activitats d’inversió per mantenir la teva cartera actualitzada. - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 + apps/client/src/app/components/home-overview/home-overview.html + 26 - - Compare with... - Comparar amb... + + Monitor and analyze your portfolio + Superviseu i analitzeu la vostra cartera - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 18 + apps/client/src/app/components/home-overview/home-overview.html + 33 - - Manage Benchmarks - Gestionar els Punts de Referència + + Track your progress in real-time with comprehensive analysis and insights. + Segueix el teu progrés en temps real amb anàlisis i informació exhaustiva. - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + apps/client/src/app/components/home-overview/home-overview.html 35 - - Portfolio - Portfolio + + Setup accounts + Configurar comptes - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + apps/client/src/app/components/home-overview/home-overview.html + 48 + + + Add activity + Afegeix activitat - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/components/home-overview/home-overview.html + 56 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 8 - - Benchmark - Punt de Referència + + Summary + Resum - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + apps/client/src/app/components/home-summary/home-summary.html + 2 - - Current Market Mood - Sentiment del Mercat + + Total Amount + Import total - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 - - Overview - Visió General + + Savings Rate + Taxa d’estalvi - apps/client/src/app/components/header/header.component.html - 28 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 200 + + + Security Token + Fitxa de seguretat - apps/client/src/app/components/header/header.component.html - 241 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 - - - Portfolio - Portfolio - apps/client/src/app/components/header/header.component.html - 41 + apps/client/src/app/components/user-account-access/user-account-access.html + 3 - apps/client/src/app/components/header/header.component.html - 251 + apps/client/src/app/components/user-account-access/user-account-access.html + 15 - - - Admin Control - Panell d’Administració - apps/client/src/app/components/header/header.component.html - 68 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - apps/client/src/app/components/header/header.component.html - 275 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 64 - - - Upgrade Plan - Millora la teva Subscripció - apps/client/src/app/components/header/header.component.html - 187 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 72 + + + or + o - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 70 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 - apps/client/src/app/pages/pricing/pricing-page.html - 312 + apps/client/src/app/pages/landing/landing-page.html + 47 - - - Renew Plan - Renova la teva Subscripció - apps/client/src/app/components/header/header.component.html - 185 + apps/client/src/app/pages/landing/landing-page.html + 450 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 18 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 - apps/client/src/app/pages/pricing/pricing-page.html - 310 + apps/client/src/app/pages/register/register-page.html + 30 - - - Me - Tu - apps/client/src/app/components/header/header.component.html - 207 + apps/client/src/app/pages/webauthn/webauthn-page.html + 30 - - User - Usuari + + Sign in with Internet Identity + Inicieu la sessió amb la identitat d’Internet - apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 + + + Sign in with Google + Inicieu la sessió amb Google - apps/client/src/app/components/header/header.component.html - 225 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 - - My Ghostfolio - El meu Ghostfolio + + Stay signed in + Manteniu la sessió iniciada - apps/client/src/app/components/header/header.component.html - 266 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 - - About Ghostfolio - Sobre Ghostfolio + + Oops! A data provider is experiencing the hiccups. + Ups! Un proveïdor de dades està tenint problemes. - apps/client/src/app/components/header/header.component.html - 312 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 + + + Market data is delayed for + Les dades del mercat s’han retardat - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Sign in - Iniciar Sessió + + Time in Market + Temps al mercat - apps/client/src/app/components/header/header.component.html - 408 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 + + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activitat} other {activitats}} - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Get started - Primers Passos + + Buy + Compra - apps/client/src/app/components/header/header.component.html - 418 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 - - Oops! Incorrect Security Token. - Oooh! El testimoni de seguretat és incorrecte. + + Sell + Vendre - apps/client/src/app/components/header/header.component.ts - 246 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 + + + Absolute Gross Performance + Rendiment brut absolut - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 159 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 - - Change - Canvia + + Absolute Net Performance + Rendiment net absolut - libs/ui/src/lib/holdings-table/holdings-table.component.html - 119 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 102 - - Average Unit Price - Preu Mig per Unitat + + Net Performance + Rendiment net - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 117 - - Minimum Price - Preu Mínim + + Total Assets + Actius totals - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 143 - - Maximum Price - Preu Màxim + + Valuables + Objectes de valor - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 156 - - Quantity - Quantitat + + Emergency Fund + Fons d’emergència - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 168 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + apps/client/src/app/pages/features/features-page.html + 89 - libs/ui/src/lib/activities-table/activities-table.component.html - 186 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 69 - - Investment - Inversió - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 - + + Cash + Efectiu apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 58 + 202 - - Dividend - Dividend - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 - + + Assets + Actius apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 319 - - - apps/client/src/app/pages/features/features-page.html - 63 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 215 - - Dividend Yield - Rendiment del Dividend + + Buying Power + Poder adquisitiu - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 228 - - Fees - Comissions + + Excluded from Analysis + Exclòs de l’anàlisi - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 240 + + + Liabilities + Passius apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 84 + 255 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 213 + apps/client/src/app/pages/features/features-page.html + 102 - - Activity - Activitat + + Net Worth + Valor net - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 273 - - Report Data Glitch - Informar d’un Problema amb les Dades + + Annualized Performance + Rendiment anualitzat - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 285 - - Active - en Actiiu + + Interest + Interès - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 - - Closed - Finalitzat + + Please set the amount of your emergency fund. + Definiu l’import del vostre fons d’emergència. - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 64 - - Table - Taula + + Are you an ambitious investor who needs the full picture? + Ets un inversor ambiciós que necessita la imatge completa? - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 14 - - Chart - Gràfic + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Actualitza a Ghostfolio Premium avui mateix i obtén accés a funcions exclusives per millorar la teva experiència d’inversió: - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 17 - - Manage Activities - Gestionar Activitats + + Portfolio Summary + Resum de la cartera - apps/client/src/app/components/home-holdings/home-holdings.html - 62 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 24 - - - Fear - Por - apps/client/src/app/components/home-market/home-market.component.ts - 28 + apps/client/src/app/pages/pricing/pricing-page.html + 43 - libs/ui/src/lib/i18n.ts - 102 + apps/client/src/app/pages/pricing/pricing-page.html + 204 - - Greed - Cobdícia + + Portfolio Allocations + Assignacions de cartera - apps/client/src/app/components/home-market/home-market.component.ts - 29 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 28 - libs/ui/src/lib/i18n.ts - 103 + apps/client/src/app/pages/features/features-page.html + 161 - - - Last Days - Últims Dies - apps/client/src/app/components/home-market/home-market.html - 7 + apps/client/src/app/pages/pricing/pricing-page.html + 47 - - - Welcome to Ghostfolio - Benvingut a Ghostfolio - apps/client/src/app/components/home-overview/home-overview.html - 7 + apps/client/src/app/pages/pricing/pricing-page.html + 208 - - Ready to take control of your personal finances? - Estàs preparat per controlar les teves finances personals? + + Performance Benchmarks + Punts de referència de rendiment - apps/client/src/app/components/home-overview/home-overview.html - 8 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 32 - - - Setup your accounts - Configura els teus comptes - apps/client/src/app/components/home-overview/home-overview.html - 15 + apps/client/src/app/pages/pricing/pricing-page.html + 51 - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Obtingueu una visió financera completa afegint els vostres comptes bancaris i de corredoria. - apps/client/src/app/components/home-overview/home-overview.html - 17 + apps/client/src/app/pages/pricing/pricing-page.html + 212 - - Capture your activities - Captura les teves activitats + + FIRE Calculator + Calculadora de FOC - apps/client/src/app/components/home-overview/home-overview.html - 24 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 36 - - - Record your investment activities to keep your portfolio up to date. - Registra les teves activitats d’inversió per mantenir la teva cartera actualitzada. - apps/client/src/app/components/home-overview/home-overview.html - 26 + apps/client/src/app/pages/pricing/pricing-page.html + 55 - - - Monitor and analyze your portfolio - Superviseu i analitzeu la vostra cartera - apps/client/src/app/components/home-overview/home-overview.html - 33 + apps/client/src/app/pages/pricing/pricing-page.html + 216 - - Track your progress in real-time with comprehensive analysis and insights. - Segueix el teu progrés en temps real amb anàlisis i informació exhaustiva. + + Professional Data Provider + Proveïdor de dades professional - apps/client/src/app/components/home-overview/home-overview.html - 35 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 40 + + + apps/client/src/app/pages/pricing/pricing-page.html + 236 - - Setup accounts - Configurar comptes + + and more Features... + i més característiques... - apps/client/src/app/components/home-overview/home-overview.html + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 44 - - - Add activity - Afegeix activitat - apps/client/src/app/components/home-overview/home-overview.html - 52 + apps/client/src/app/pages/pricing/pricing-page.html + 71 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 8 + apps/client/src/app/pages/pricing/pricing-page.html + 260 - - Summary - Resum + + Get the tools to effectively manage your finances and refine your personal investment strategy. + Aconsegueix les eines per gestionar eficaçment les teves finances i refinar la teva estratègia d’inversió personal. - apps/client/src/app/components/home-summary/home-summary.html - 2 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 47 - - Total Amount - Import total + + Skip + Saltar - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 141 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 - - - Savings Rate - Taxa d’estalvi - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 200 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 98 - - Security Token - Fitxa de seguretat + + Today + Avui - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 11 + apps/client/src/app/components/toggle/toggle.component.ts + 22 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + libs/ui/src/lib/assistant/assistant.component.ts + 340 + + + YTD + YTD - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 64 + apps/client/src/app/components/toggle/toggle.component.ts + 23 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 72 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - or - o + + 1Y + 1 any - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/toggle/toggle.component.ts + 24 - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 31 + libs/ui/src/lib/assistant/assistant.component.ts + 362 + + + 5Y + 5 anys - apps/client/src/app/pages/landing/landing-page.html - 47 + apps/client/src/app/components/toggle/toggle.component.ts + 25 - apps/client/src/app/pages/landing/landing-page.html - 450 + libs/ui/src/lib/assistant/assistant.component.ts + 387 + + + Max + Màx - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 97 + apps/client/src/app/components/toggle/toggle.component.ts + 26 - apps/client/src/app/pages/register/register-page.html - 30 + libs/ui/src/lib/assistant/assistant.component.ts + 393 + + + Oops! Could not grant access. + Vaja! No s’ha pogut concedir l’accés. - apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Sign in with Internet Identity - Inicieu la sessió amb la identitat d’Internet + + Grant access + Concedeix accés - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 42 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - Sign in with Google - Inicieu la sessió amb Google + + Private + Privat - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 52 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Stay signed in - Manteniu la sessió iniciada + + Public + Públic - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 61 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 - - Oops! A data provider is experiencing the hiccups. - Ups! Un proveïdor de dades està tenint problemes. + + User ID + ID d’usuari - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 - - - Market data is delayed for - Les dades del mercat s’han retardat - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 252 - - Time in Market - Temps al mercat + + Granted Access + Accés concedit - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 3 + apps/client/src/app/components/user-account-access/user-account-access.html + 57 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Please enter your coupon code. + Introduïu el vostre codi de cupó. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 202 - - Buy - Compra + + Could not redeem coupon code + No s’ha pogut bescanviar el codi de cupó - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 31 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 166 - - Sell - Vendre + + Coupon code has been redeemed + El codi del cupó s’ha bescanviat - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 43 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 179 - - Absolute Gross Performance - Rendiment brut absolut + + Reload + Torna a carregar - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 70 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 180 - - Absolute Net Performance - Rendiment net absolut + + per year + per any - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 102 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 32 - - - Net Performance - Rendiment net - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 117 + apps/client/src/app/pages/pricing/pricing-page.html + 282 - - Total Assets - Actius totals + + Try Premium + Prova Premium - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 143 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 - - Valuables - Objectes de valor + + Redeem Coupon + Bescanviar el cupó - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 156 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 63 - - Emergency Fund - Fons d’emergència + + Auto + Automàtic - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 168 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 39 + + + Do you really want to close your Ghostfolio account? + De debò vols tancar el teu compte de Ghostfolio? - apps/client/src/app/pages/features/features-page.html - 89 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + Do you really want to remove this sign in method? + De debò vols eliminar aquest mètode d’inici de sessió? - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 69 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 248 - - Cash - Efectiu - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 202 - - - - Assets - Actius + + Oops! There was an error setting up biometric authentication. + Ups! Hi ha hagut un error en configurar l’autenticació biomètrica. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 215 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Buying Power - Poder adquisitiu + + Settings + Configuració - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 228 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 - - Excluded from Analysis - Exclòs de l’anàlisi + + Presenter View + Vista del presentador - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 240 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 183 - - Liabilities - Passius + + Protection for sensitive information like absolute performances and quantity values + Protecció per a informació sensible com ara rendiments absoluts i valors de quantitat - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 255 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 + + + Base Currency + Moneda base - apps/client/src/app/pages/features/features-page.html - 102 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 9 - - Net Worth - Valor net + + Language + Llengua - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 273 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 56 - - Annualized Performance - Rendiment anualitzat + + If a translation is missing, kindly support us in extending it here. + Si falta alguna traducció, si us plau, ajudeu-nos a ampliar-la aquí. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 285 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 - - Interest - Interès + + Locale + Localització - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 414 - - - Please set the amount of your emergency fund. - Definiu l’import del vostre fons d’emergència. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 64 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 133 - - Are you an ambitious investor who needs the full picture? - Ets un inversor ambiciós que necessita la imatge completa? + + Date and number format + Format de data i número - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 14 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 135 - - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Actualitza a Ghostfolio Premium avui mateix i obtén accés a funcions exclusives per millorar la teva experiència d’inversió: + + Appearance + Aparença - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 158 - - Portfolio Summary - Resum de la cartera + + Auto + Automàtic - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 172 + + + Light + Llum - apps/client/src/app/pages/pricing/pricing-page.html - 57 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 + + + Dark + Fosc - apps/client/src/app/pages/pricing/pricing-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 - - Portfolio Allocations - Assignacions de cartera + + Zen Mode + Mode Zen - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 28 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 201 apps/client/src/app/pages/features/features-page.html - 161 - - - apps/client/src/app/pages/pricing/pricing-page.html - 61 + 246 + + + Distraction-free experience for turbulent times + Experiència sense distraccions per a temps turbulents - apps/client/src/app/pages/pricing/pricing-page.html - 222 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 202 - - Performance Benchmarks - Punts de referència de rendiment + + Biometric Authentication + Autenticació biomètrica - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 32 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 218 + + + Sign in with fingerprint + Inicieu la sessió amb l’empremta digital - apps/client/src/app/pages/pricing/pricing-page.html - 65 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 219 + + + Experimental Features + Característiques experimentals - apps/client/src/app/pages/pricing/pricing-page.html - 226 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 235 - - FIRE Calculator - Calculadora de FOC + + Sneak peek at upcoming functionality + Doneu un cop d’ull a les properes funcionalitats - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 236 + + + Export Data + Exporta dades - apps/client/src/app/pages/pricing/pricing-page.html - 69 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 260 + + + Danger Zone + Zona de perill - apps/client/src/app/pages/pricing/pricing-page.html - 230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Professional Data Provider - Proveïdor de dades professional + + Close Account + Tanca el compte - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 40 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 + + + This feature is currently unavailable. + Aquesta funció no està disponible actualment. - apps/client/src/app/pages/pricing/pricing-page.html - 250 + apps/client/src/app/core/http-response.interceptor.ts + 55 - - and more Features... - i més característiques... + + Please try again later. + Si us plau, torna-ho a provar més tard. - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 44 + apps/client/src/app/core/http-response.interceptor.ts + 57 - apps/client/src/app/pages/pricing/pricing-page.html - 85 + apps/client/src/app/core/http-response.interceptor.ts + 88 - apps/client/src/app/pages/pricing/pricing-page.html - 274 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 144 - - Get the tools to effectively manage your finances and refine your personal investment strategy. - Aconsegueix les eines per gestionar eficaçment les teves finances i refinar la teva estratègia d’inversió personal. + + This action is not allowed. + Aquesta acció no està permesa. - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 47 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - Skip - Saltar + + Oops! Something went wrong. + Vaja! Alguna cosa va fallar. - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 59 + apps/client/src/app/core/http-response.interceptor.ts + 86 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 98 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 142 - - Today - Avui - - apps/client/src/app/components/toggle/toggle.component.ts - 22 - + + Okay + D’acord - libs/ui/src/lib/assistant/assistant.component.ts - 220 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 141 - - - YTD - YTD - apps/client/src/app/components/toggle/toggle.component.ts - 23 + apps/client/src/app/core/http-response.interceptor.ts + 89 - libs/ui/src/lib/assistant/assistant.component.ts - 230 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 145 - - 1Y - 1 any - - apps/client/src/app/components/toggle/toggle.component.ts - 24 - + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Ups! Sembla que esteu fent massa sol·licituds. Si us plau, aneu una mica més lent. - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - 5Y - 5 anys + + About + Sobre - apps/client/src/app/components/toggle/toggle.component.ts - 25 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - libs/ui/src/lib/assistant/assistant.component.ts - 256 + libs/common/src/lib/routes/routes.ts + 220 - - Max - Màx - - apps/client/src/app/components/toggle/toggle.component.ts - 26 - + + Changelog + Registre de canvis - libs/ui/src/lib/assistant/assistant.component.ts - 259 + libs/common/src/lib/routes/routes.ts + 185 - - Oops! Could not grant access. - Vaja! No s’ha pogut concedir l’accés. + + License + llicència - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + libs/common/src/lib/routes/routes.ts + 193 - - Grant access - Concedeix accés + + Privacy Policy + Política de privadesa - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 + libs/common/src/lib/routes/routes.ts + 209 - - Private - Privat + + Our + El nostre - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 - - Public - Públic + + Discover other exciting Open Source Software projects + Descobriu altres projectes de programari de codi obert emocionants - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 - - User ID - ID d’usuari + + Visit + Visita - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 45 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 + + + Accounts + Comptes - apps/client/src/app/components/user-account-settings/user-account-settings.html - 252 + libs/common/src/lib/routes/routes.ts + 69 - - Granted Access - Accés concedit + + Oops, cash balance transfer has failed. + Vaja, la transferència del saldo en efectiu ha fallat. - apps/client/src/app/components/user-account-access/user-account-access.html - 7 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 - - Please enter your coupon code. - Introduïu el vostre codi de cupó. + + Update account + Actualitza el compte - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 - - Could not redeem coupon code - No s’ha pogut bescanviar el codi de cupó + + Add account + Afegeix un compte - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 - - Coupon code has been redeemed - El codi del cupó s’ha bescanviat + + Account ID + ID del compte - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 - - Reload - Torna a carregar + + From + Des de - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 - - per year - per any + + To + A - apps/client/src/app/components/user-account-membership/user-account-membership.html + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 32 - - apps/client/src/app/pages/pricing/pricing-page.html - 296 - - - Try Premium - Prova Premium + + Transfer + Transferència - apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 - - Redeem Coupon - Bescanviar el cupó + + Admin Control + Control d’administració - apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + libs/common/src/lib/routes/routes.ts + 64 - - Auto - Automàtic + + Job Queue + Cua de treball - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 39 + libs/common/src/lib/routes/routes.ts + 46 - - Do you really want to close your Ghostfolio account? - De debò vols tancar el teu compte de Ghostfolio? + + Market Data + Dades de mercat - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/common/src/lib/routes/routes.ts + 51 - - Do you really want to remove this sign in method? - De debò vols eliminar aquest mètode d’inici de sessió? + + Settings + Configuració - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 248 + libs/common/src/lib/routes/routes.ts + 34 - - - Oops! There was an error setting up biometric authentication. - Ups! Hi ha hagut un error en configurar l’autenticació biomètrica. - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + libs/common/src/lib/routes/routes.ts + 56 - - Settings - Configuració + + Users + Usuaris - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + libs/common/src/lib/routes/routes.ts + 61 - - Presenter View - Vista del presentador + + Overview + Visió general - apps/client/src/app/components/user-account-settings/user-account-settings.html - 183 + apps/client/src/app/pages/admin/admin-page.component.ts + 29 - - - Protection for sensitive information like absolute performances and quantity values - Protecció per a informació sensible com ara rendiments absoluts i valors de quantitat - apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + apps/client/src/app/pages/resources/resources-page.component.ts + 20 + + + libs/common/src/lib/routes/routes.ts + 113 + + + libs/common/src/lib/routes/routes.ts + 170 - - Base Currency - Moneda base + + Blog + Bloc - apps/client/src/app/components/user-account-settings/user-account-settings.html - 9 + libs/common/src/lib/routes/routes.ts + 225 - - Language - Llengua + + Discover the latest Ghostfolio updates and insights on personal finance + Descobriu les últimes actualitzacions i perspectives de Ghostfolio sobre finances personals - apps/client/src/app/components/user-account-settings/user-account-settings.html - 56 + apps/client/src/app/pages/blog/blog-page.html + 7 - - If a translation is missing, kindly support us in extending it here. - Si falta alguna traducció, si us plau, ajudeu-nos a ampliar-la aquí. + + As you are already logged in, you cannot access the demo account. + Com que ja has iniciat sessió, no pots accedir al compte de demostració. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + apps/client/src/app/pages/demo/demo-page.component.ts + 35 - - Locale - Localització + + Frequently Asked Questions (FAQ) + Preguntes freqüents (FAQ) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 414 + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 133 + libs/common/src/lib/routes/routes.ts + 251 - - Date and number format - Format de data i número + + General + General - apps/client/src/app/components/user-account-settings/user-account-settings.html - 135 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Appearance - Aparença + + Cloud + Núvol - apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Auto - Automàtic - apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + libs/common/src/lib/routes/routes.ts + 240 - - Light - Llum + + Self-Hosting + Autoallotjament - apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - Dark - Fosc - apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + libs/common/src/lib/routes/routes.ts + 248 - - Zen Mode - Mode Zen + + self-hosting + autoallotjament + kebab-case - apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + libs/common/src/lib/routes/routes.ts + 243 - apps/client/src/app/pages/features/features-page.html + libs/common/src/lib/routes/routes.ts 246 - - Distraction-free experience for turbulent times - Experiència sense distraccions per a temps turbulents + + Frequently Asked Questions (FAQ) + Preguntes freqüents (FAQ) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 202 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - - - Biometric Authentication - Autenticació biomètrica - apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - - - Sign in with fingerprint - Inicieu la sessió amb l’empremta digital - apps/client/src/app/components/user-account-settings/user-account-settings.html - 219 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 - - Experimental Features - Característiques experimentals + + Check out the numerous features of Ghostfolio to manage your wealth + Fes una ullada a les nombroses funcions de Ghostfolio per gestionar el teu patrimoni - apps/client/src/app/components/user-account-settings/user-account-settings.html - 235 + apps/client/src/app/pages/features/features-page.html + 6 - - Sneak peek at upcoming functionality - Doneu un cop d’ull a les properes funcionalitats + + Stocks + Stocks - apps/client/src/app/components/user-account-settings/user-account-settings.html - 236 + apps/client/src/app/pages/features/features-page.html + 15 - - Export Data - Exporta dades + + ETFs + ETFs - apps/client/src/app/components/user-account-settings/user-account-settings.html - 260 + apps/client/src/app/pages/features/features-page.html + 25 - - Danger Zone - Zona de perill + + Bonds + Bons - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + apps/client/src/app/pages/features/features-page.html + 38 - - Close Account - Tanca el compte + + Cryptocurrencies + Criptomonedes - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + apps/client/src/app/pages/features/features-page.html + 51 - - This feature is currently unavailable. - Aquesta funció no està disponible actualment. + + Wealth Items + Articles de riquesa - apps/client/src/app/core/http-response.interceptor.ts - 54 + apps/client/src/app/pages/features/features-page.html + 76 - - Please try again later. - Si us plau, torna-ho a provar més tard. + + Import and Export + Importació i exportació - apps/client/src/app/core/http-response.interceptor.ts - 56 + apps/client/src/app/pages/features/features-page.html + 115 + + + Multi-Accounts + Multicomptes - apps/client/src/app/core/http-response.interceptor.ts - 85 + apps/client/src/app/pages/features/features-page.html + 127 + + + Portfolio Calculations + Càlculs de cartera - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 144 + apps/client/src/app/pages/features/features-page.html + 141 - - This action is not allowed. - Aquesta acció no està permesa. + + Dark Mode + Mode fosc - apps/client/src/app/core/http-response.interceptor.ts - 64 + apps/client/src/app/pages/features/features-page.html + 233 - - Oops! Something went wrong. - Vaja! Alguna cosa va fallar. + + Market Mood + Estat d’ànim del mercat - apps/client/src/app/core/http-response.interceptor.ts - 83 + apps/client/src/app/pages/features/features-page.html + 215 + + + Static Analysis + Anàlisi estàtica - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 142 + apps/client/src/app/pages/features/features-page.html + 179 - - Okay - D’acord - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 - - - apps/client/src/app/core/http-response.interceptor.ts - 86 - + + Multi-Language + Multi-idioma - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 145 + apps/client/src/app/pages/features/features-page.html + 259 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Ups! Sembla que esteu fent massa sol·licituds. Si us plau, aneu una mica més lent. + + Open Source Software + Programari de codi obert - apps/client/src/app/core/http-response.interceptor.ts - 103 + apps/client/src/app/pages/features/features-page.html + 295 - - About - Sobre + + Get Started + Comença - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 + apps/client/src/app/pages/features/features-page.html + 320 - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/public/public-page.html + 220 + + + Holdings + Explotacions - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 90 - - - Changelog - Registre de canvis - apps/client/src/app/pages/about/about-page.component.ts - 50 + libs/common/src/lib/routes/routes.ts + 167 + + + Summary + Resum - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 105 - - License - llicència + + Markets + Mercats - apps/client/src/app/pages/about/about-page.component.ts - 55 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 95 - - - Privacy Policy - Política de privadesa - apps/client/src/app/pages/about/about-page.component.ts - 64 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 261 - - - Our - El nostre - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 + libs/common/src/lib/routes/routes.ts + 309 - - Discover other exciting Open Source Software projects - Descobriu altres projectes de programari de codi obert emocionants + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio és un tauler de control de finances personals per fer un seguiment del teu patrimoni net, incloent-hi efectiu, accions, ETF i criptomonedes en múltiples plataformes. - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 + apps/client/src/app/pages/i18n/i18n-page.html + 4 - - Visit - Visita + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + aplicació, actiu, criptomoneda, tauler de control, ETF, finances, gestió, rendiment, cartera, programari, acció, negociació, riquesa, web3 - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Accounts - Comptes + + My Account + El meu compte - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts + apps/client/src/app/pages/i18n/i18n-page.html 13 - - Oops, cash balance transfer has failed. - Vaja, la transferència del saldo en efectiu ha fallat. + + Open Source Wealth Management Software + Programari de gestió patrimonial de codi obert - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + apps/client/src/app/pages/i18n/i18n-page.html + 97 - - Update account - Actualitza el compte + + Manage your wealth like a boss + Gestiona la teva riquesa com un cap - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 8 + apps/client/src/app/pages/landing/landing-page.html + 5 - - Add account - Afegeix un compte + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio és un tauler de control de codi obert i amb privacitat per a les teves finances personals. Analitza la distribució dels teus actius, coneix el teu patrimoni net i pren decisions d’inversió sòlides i basades en dades. - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 10 + apps/client/src/app/pages/landing/landing-page.html + 9 - - Account ID - ID del compte + + Get Started + Comença - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 96 + apps/client/src/app/pages/landing/landing-page.html + 41 - - - From - Des de - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/pricing/pricing-page.html + 349 - - To - A + + Live Demo + Demostració en directe - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/pages/landing/landing-page.html + 49 - - - Transfer - Transferència - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + apps/client/src/app/pages/landing/landing-page.html + 452 - - Admin Control - Control d’administració + + Monthly Active Users + Usuaris actius mensuals - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + apps/client/src/app/pages/landing/landing-page.html + 70 - - Job Queue - Cua de treball + + Stars on GitHub + Estrelles a GitHub - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/landing/landing-page.html + 88 - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/pages/open/open-page.html + 103 - - Market Data - Dades de mercat + + Pulls on Docker Hub + Activa el Docker Hub - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + apps/client/src/app/pages/landing/landing-page.html + 106 - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + apps/client/src/app/pages/open/open-page.html + 117 - - Settings - Configuració - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - + + As seen in + Com es veu a - apps/client/src/app/pages/admin/admin-page.component.ts - 33 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Protegeix els teus actius. Refina la teva estratègia d’inversió personal. - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + apps/client/src/app/pages/landing/landing-page.html + 225 + + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio permet a la gent ocupada fer un seguiment d’accions, ETF o criptomonedes sense ser rastrejada. - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + apps/client/src/app/pages/landing/landing-page.html + 229 - - Users - Usuaris + + 360° View + Vista de 360° - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Get the full picture of your personal finances across multiple platforms. + Obtingueu la imatge completa de les vostres finances personals en múltiples plataformes. - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Overview - Visió general + + Web3 Ready + Web3 llest - apps/client/src/app/pages/admin/admin-page.component.ts - 28 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Utilitza Ghostfolio de manera anònima i sigues propietari de les teves dades financeres. - apps/client/src/app/pages/home/home-page.component.ts - 38 + apps/client/src/app/pages/landing/landing-page.html + 253 + + + Open Source + codi obert - apps/client/src/app/pages/resources/resources-page.component.ts - 17 + apps/client/src/app/pages/landing/landing-page.html + 261 + + + Benefit from continuous improvements through a strong community. + Beneficia’t de millores contínues gràcies a una comunitat forta. - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Per què Ghostfolio? - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + apps/client/src/app/pages/landing/landing-page.html + 272 - - Blog - Bloc + + Ghostfolio is for you if you are... + Ghostfolio és per a tu si ets... - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 273 - - Discover the latest Ghostfolio updates and insights on personal finance - Descobriu les últimes actualitzacions i perspectives de Ghostfolio sobre finances personals + + trading stocks, ETFs or cryptocurrencies on multiple platforms + negociar accions, ETF o criptomonedes en múltiples plataformes - apps/client/src/app/pages/blog/blog-page.html - 7 + apps/client/src/app/pages/landing/landing-page.html + 280 - - As you are already logged in, you cannot access the demo account. - Com que ja has iniciat sessió, no pots accedir al compte de demostració. + + pursuing a buy & hold strategy + perseguint una compra & mantenir l’estratègia - apps/client/src/app/pages/demo/demo-page.component.ts - 35 + apps/client/src/app/pages/landing/landing-page.html + 286 - - Frequently Asked Questions (FAQ) - Preguntes freqüents (FAQ) + + interested in getting insights of your portfolio composition + interessat a obtenir informació sobre la composició de la vostra cartera - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + apps/client/src/app/pages/landing/landing-page.html + 291 + + + valuing privacy and data ownership + valorant la privadesa i la propietat de les dades - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 296 - - General - General + + into minimalism + al minimalisme - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/pages/landing/landing-page.html + 299 - - Cloud - Núvol + + caring about diversifying your financial resources + preocupant-se per diversificar els seus recursos econòmics - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + apps/client/src/app/pages/landing/landing-page.html + 303 + + + interested in financial independence + interessada en la independència financera - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 307 - - Self-Hosting - Autoallotjament + + saying no to spreadsheets in + dir no als fulls de càlcul - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/landing/landing-page.html + 311 + + + still reading this list + encara llegint aquesta llista - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 314 - - self-hosting - autoallotjament + + Learn more about Ghostfolio + Més informació sobre Ghostfolio - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + apps/client/src/app/pages/landing/landing-page.html + 319 - - Frequently Asked Questions (FAQ) - Preguntes freqüents (FAQ) + + What our users are saying + Que nostre usuaris estan dient - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 + apps/client/src/app/pages/landing/landing-page.html + 327 + + + Members from around the globe are using Ghostfolio Premium + Membres de tot el món estan utilitzant Ghostfolio Premium - apps/client/src/app/pages/faq/saas/saas-page.html - 4 + apps/client/src/app/pages/landing/landing-page.html + 366 + + + How does Ghostfolio work? + Com ho fa Ghostfolio treballar? - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 + apps/client/src/app/pages/landing/landing-page.html + 383 - - FAQ - FAQ + + Get started in only 3 steps + Comença en només 3 passos - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 386 + + + Sign up anonymously* + Registra’t de manera anònima* - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 392 - - Check out the numerous features of Ghostfolio to manage your wealth - Fes una ullada a les nombroses funcions de Ghostfolio per gestionar el teu patrimoni + + * no e-mail address nor credit card required + * no es requereix cap adreça de correu electrònic ni targeta de crèdit - apps/client/src/app/pages/features/features-page.html - 6 + apps/client/src/app/pages/landing/landing-page.html + 394 - - Stocks - Stocks + + Add any of your historical transactions + Afegiu qualsevol de les vostres transaccions històriques - apps/client/src/app/pages/features/features-page.html - 15 + apps/client/src/app/pages/landing/landing-page.html + 405 - - ETFs - ETFs + + Get valuable insights of your portfolio composition + Obteniu informació valuosa sobre la composició de la vostra cartera - apps/client/src/app/pages/features/features-page.html - 25 + apps/client/src/app/pages/landing/landing-page.html + 417 - - Bonds - Bons + + Are you ready? + Són tu llest? - apps/client/src/app/pages/features/features-page.html - 38 + apps/client/src/app/pages/landing/landing-page.html + 431 - - Cryptocurrencies - Criptomonedes + + Join now or check out the example account + Uneix-te ara o consulteu el compte d’exemple - apps/client/src/app/pages/features/features-page.html - 51 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Wealth Items - Articles de riquesa + + Get Started + Comença - apps/client/src/app/pages/features/features-page.html - 76 + apps/client/src/app/pages/landing/landing-page.html + 446 - - Import and Export - Importació i exportació + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + A Ghostfolio, la transparència és la base dels nostres valors. Publiquem el codi font com a programari de codi obert (OSS) sota elLlicència AGPL-3.0 i compartim obertament mètriques clau agregades de l’estat operatiu de la plataforma. - apps/client/src/app/pages/features/features-page.html - 115 + apps/client/src/app/pages/open/open-page.html + 6 - - Multi-Accounts - Multicomptes + + (Last 24 hours) + (Últimes 24 hores) - apps/client/src/app/pages/features/features-page.html - 127 + apps/client/src/app/pages/open/open-page.html + 37 - - Portfolio Calculations - Càlculs de cartera + + Active Users + Usuaris actius - apps/client/src/app/pages/features/features-page.html - 141 + apps/client/src/app/pages/open/open-page.html + 40 - - - Dark Mode - Mode fosc - apps/client/src/app/pages/features/features-page.html - 233 + apps/client/src/app/pages/open/open-page.html + 62 - - Market Mood - Estat d’ànim del mercat + + (Last 30 days) + (Últims 30 dies) - apps/client/src/app/pages/features/features-page.html - 215 + apps/client/src/app/pages/open/open-page.html + 48 - - - Static Analysis - Anàlisi estàtica - apps/client/src/app/pages/features/features-page.html - 179 + apps/client/src/app/pages/open/open-page.html + 59 - - Multi-Language - Multi-idioma + + New Users + Usuaris nous - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/pages/open/open-page.html + 51 - - Open Source Software - Programari de codi obert + + Users in Slack community + Usuaris de la comunitat Slack - apps/client/src/app/pages/features/features-page.html - 295 + apps/client/src/app/pages/open/open-page.html + 75 - - Get Started - Comença - - apps/client/src/app/pages/features/features-page.html - 320 - + + Contributors on GitHub + Col·laboradors a GitHub - apps/client/src/app/pages/public/public-page.html - 220 + apps/client/src/app/pages/open/open-page.html + 89 - - Holdings - Explotacions - - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - + + (Last 90 days) + (Últims 90 dies) - apps/client/src/app/pages/home/home-page.component.ts - 43 + apps/client/src/app/pages/open/open-page.html + 127 + + + Uptime + Temps de funcionament - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + apps/client/src/app/pages/open/open-page.html + 132 - - Summary - Resum + + Activities + Activitats - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 + libs/common/src/lib/routes/routes.ts + 128 + + + Update activity + Activitat d’actualització - apps/client/src/app/pages/home/home-page.component.ts - 48 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 - - Markets - Mercats + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Accions, ETF, bons, criptomonedes, matèries primeres - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - apps/client/src/app/pages/home/home-page.component.ts - 58 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + One-time fee, annual account fees + Comissió única, comissions de compte anual - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribució dels beneficis de les empreses - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Revenue for lending out money + Ingressos per prestar diners - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio és un tauler de control de finances personals per fer un seguiment del teu patrimoni net, incloent-hi efectiu, accions, ETF i criptomonedes en múltiples plataformes. + + Mortgages, personal loans, credit cards + Hipoteques, préstecs personals, targetes de crèdit - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - aplicació, actiu, criptomoneda, tauler de control, ETF, finances, gestió, rendiment, cartera, programari, acció, negociació, riquesa, web3 + + Luxury items, real estate, private companies + Articles de luxe, immobiliari, empreses privades - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 - - My Account - El meu compte + + Account + Compte - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 - - - Open Source Wealth Management Software - Programari de gestió patrimonial de codi obert - apps/client/src/app/pages/i18n/i18n-page.html - 14 + libs/ui/src/lib/activities-table/activities-table.component.html + 308 - - - Manage your wealth like a boss - Gestiona la teva riquesa com un cap - apps/client/src/app/pages/landing/landing-page.html - 5 + libs/ui/src/lib/assistant/assistant.html + 144 - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio és un tauler de control de codi obert i amb privacitat per a les teves finances personals. Analitza la distribució dels teus actius, coneix el teu patrimoni net i pren decisions d’inversió sòlides i basades en dades. + + Update Cash Balance + Actualitzar el saldo d’efectiu - apps/client/src/app/pages/landing/landing-page.html - 9 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 - - Get Started - Comença + + Unit Price + Preu unitari - apps/client/src/app/pages/landing/landing-page.html - 41 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 214 - apps/client/src/app/pages/pricing/pricing-page.html - 342 + libs/ui/src/lib/activities-table/activities-table.component.html + 210 - - Live Demo - Demostració en directe + + Fee + Quota - apps/client/src/app/pages/landing/landing-page.html - 49 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 262 - apps/client/src/app/pages/landing/landing-page.html - 451 + libs/ui/src/lib/activities-table/activities-table.component.html + 234 - - Monthly Active Users - Usuaris actius mensuals + + Import Activities + Activitats d’importació - apps/client/src/app/pages/landing/landing-page.html - 70 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 47 - - Stars on GitHub - Estrelles a GitHub + + Import Dividends + Importar dividends - apps/client/src/app/pages/landing/landing-page.html + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts 88 + + + Importing data... + S’estan important dades... - apps/client/src/app/pages/open/open-page.html - 103 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 126 - - Pulls on Docker Hub - Activa el Docker Hub + + Import has been completed + La importació s’ha completat - apps/client/src/app/pages/landing/landing-page.html - 106 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 134 + + + Validating data... + S’estan validant les dades... - apps/client/src/app/pages/open/open-page.html - 117 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 242 - - As seen in - Com es veu a + + Select Holding + Seleccioneu Holding - apps/client/src/app/pages/landing/landing-page.html - 115 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 - - Protect your assets. Refine your personal investment strategy. - Protegeix els teus actius. Refina la teva estratègia d’inversió personal. + + Select File + Seleccioneu Fitxer - apps/client/src/app/pages/landing/landing-page.html - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio permet a la gent ocupada fer un seguiment d’accions, ETF o criptomonedes sense ser rastrejada. + + Holding + Holding - apps/client/src/app/pages/landing/landing-page.html - 229 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 - - - 360° View - Vista de 360° - apps/client/src/app/pages/landing/landing-page.html - 240 + libs/ui/src/lib/assistant/assistant.html + 166 - - Get the full picture of your personal finances across multiple platforms. - Obtingueu la imatge completa de les vostres finances personals en múltiples plataformes. - - apps/client/src/app/pages/landing/landing-page.html - 242 + + Load Dividends + Càrrega de dividends + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 - - Web3 Ready - Web3 llest + + Choose or drop a file here + Trieu o deixeu anar un fitxer aquí - apps/client/src/app/pages/landing/landing-page.html - 251 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - Use Ghostfolio anonymously and own your financial data. - Utilitza Ghostfolio de manera anònima i sigues propietari de les teves dades financeres. + + The following file formats are supported: + S’admeten els formats de fitxer següents: - apps/client/src/app/pages/landing/landing-page.html - 253 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 - - Open Source - codi obert + + Select Dividends + Seleccioneu Dividends - apps/client/src/app/pages/landing/landing-page.html - 261 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 - - Benefit from continuous improvements through a strong community. - Beneficia’t de millores contínues gràcies a una comunitat forta. + + Select Activities + Seleccioneu Activitats - apps/client/src/app/pages/landing/landing-page.html - 263 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 - - Why Ghostfolio? - Why Ghostfolio? + + Back + Enrere - apps/client/src/app/pages/landing/landing-page.html - 272 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 - - - Ghostfolio is for you if you are... - Ghostfolio is for you if you are... - apps/client/src/app/pages/landing/landing-page.html - 273 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 - - trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms + + Allocations + Allocations - apps/client/src/app/pages/landing/landing-page.html - 280 + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts + 13 - - - pursuing a buy & hold strategy - pursuing a buy & hold strategy - apps/client/src/app/pages/landing/landing-page.html - 286 + libs/common/src/lib/routes/routes.ts + 133 - - interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition + + Allocations + Assignacions - apps/client/src/app/pages/landing/landing-page.html - 291 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 - - valuing privacy and data ownership - valuing privacy and data ownership + + Proportion of Net Worth + Proporció del patrimoni net - apps/client/src/app/pages/landing/landing-page.html - 296 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 - - into minimalism - into minimalism + + By Platform + Per plataforma - apps/client/src/app/pages/landing/landing-page.html - 299 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 - - caring about diversifying your financial resources - caring about diversifying your financial resources + + By Currency + Per Moneda - apps/client/src/app/pages/landing/landing-page.html - 303 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 63 - - interested in financial independence - interested in financial independence + + By Asset Class + Per classe d’actiu - apps/client/src/app/pages/landing/landing-page.html - 307 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 - - saying no to spreadsheets in - saying no to spreadsheets in + + By Holding + Per Holding - apps/client/src/app/pages/landing/landing-page.html - 311 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 - - still reading this list - still reading this list + + By Sector + Per sectors - apps/client/src/app/pages/landing/landing-page.html - 314 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 - - Learn more about Ghostfolio - Learn more about Ghostfolio + + By Continent + Per continent - apps/client/src/app/pages/landing/landing-page.html - 319 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 - - What our users are saying - What our users are saying + + By Market + Per Mercat - apps/client/src/app/pages/landing/landing-page.html - 327 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 - - Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + + Regions + Regions - apps/client/src/app/pages/landing/landing-page.html - 366 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 - - - How does Ghostfolio work? - How does Ghostfolio work? - apps/client/src/app/pages/landing/landing-page.html - 383 + apps/client/src/app/pages/public/public-page.html + 143 - - Get started in only 3 steps - Get started in only 3 steps + + Developed Markets + Mercats desenvolupats - apps/client/src/app/pages/landing/landing-page.html - 386 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 - - - Sign up anonymously* - Sign up anonymously* - apps/client/src/app/pages/landing/landing-page.html - 392 + apps/client/src/app/pages/public/public-page.html + 160 - - * no e-mail address nor credit card required - * no e-mail address nor credit card required + + Emerging Markets + Mercats emergents - apps/client/src/app/pages/landing/landing-page.html - 394 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 - - - Add any of your historical transactions - Add any of your historical transactions - apps/client/src/app/pages/landing/landing-page.html - 405 + apps/client/src/app/pages/public/public-page.html + 169 - - Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + + Other Markets + Altres Mercats - apps/client/src/app/pages/landing/landing-page.html - 417 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 - - - Are you ready? - Are you ready? - apps/client/src/app/pages/landing/landing-page.html - 431 + apps/client/src/app/pages/public/public-page.html + 178 - - Join now or check out the example account - Join now or check out the example account + + No data available + No hi ha dades disponibles - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - - - Get Started - Get Started - apps/client/src/app/pages/landing/landing-page.html - 446 + apps/client/src/app/pages/public/public-page.html + 188 - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - apps/client/src/app/pages/open/open-page.html - 6 + libs/ui/src/lib/benchmark/benchmark.component.html + 202 - - - (Last 24 hours) - (Last 24 hours) - apps/client/src/app/pages/open/open-page.html - 37 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 181 - - Active Users - Active Users + + By Country + Per País - apps/client/src/app/pages/open/open-page.html - 40 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 + + + By Account + Per compte - apps/client/src/app/pages/open/open-page.html - 62 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 - - (Last 30 days) - (Last 30 days) + + By ETF Provider + Pel proveïdor d’ETF - apps/client/src/app/pages/open/open-page.html - 48 - - - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 - - New Users - New Users + + By ETF Holding + Per ETF Holding - apps/client/src/app/pages/open/open-page.html - 51 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Users in Slack community - Users in Slack community + + Approximation based on the top holdings of each ETF + Aproximació basada en les participacions principals de cada ETF - apps/client/src/app/pages/open/open-page.html - 75 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Contributors on GitHub - Contributors on GitHub + + Analysis + Anàlisi - apps/client/src/app/pages/open/open-page.html - 89 + libs/common/src/lib/routes/routes.ts + 138 - - (Last 90 days) - (Last 90 days) + + Dividend + Dividend - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 - - - Uptime - Uptime - apps/client/src/app/pages/open/open-page.html - 132 + libs/ui/src/lib/i18n.ts + 36 - - Activities - Activities + + Investment + Inversió - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - - - Update activity - Update activity - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 10 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities + + Monthly + Mensualment - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 25 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 66 + + + Yearly + Anualment - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 65 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 67 - - One-time fee, annual account fees - One-time fee, annual account fees + + Analysis + Anàlisi - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 - - Distribution of corporate earnings - Distribution of corporate earnings + + Absolute Asset Performance + Rendiment absolut dels actius - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Revenue for lending out money - Revenue for lending out money + + Asset Performance + Rendiment de l’actiu - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards + + Absolute Currency Performance + Rendiment absolut de la moneda - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Luxury items, real estate, private companies - Luxury items, real estate, private companies + + Currency Performance + Rendiment de la moneda - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 73 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Account - Account + + Absolute Net Performance + Rendiment net absolut - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 85 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 + + + Net Performance + Rendiment net - libs/ui/src/lib/activities-table/activities-table.component.html - 308 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 + + + Top + A dalt - libs/ui/src/lib/assistant/assistant.html - 109 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 239 - - Update Cash Balance - Update Cash Balance + + Bottom + A baix - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 288 - - Unit Price - Unit Price + + Portfolio Evolution + Evolució de la cartera - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 341 + + + Investment Timeline + Cronologia de la inversió - libs/ui/src/lib/activities-table/activities-table.component.html - 210 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 368 - - Fee - Fee + + Current Streak + Ratxa actual - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 389 + + + Longest Streak + Ratxa més llarga - libs/ui/src/lib/activities-table/activities-table.component.html - 234 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 398 - - Import Activities - Import Activities + + Dividend Timeline + Cronologia de dividends - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 47 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 425 - - Import Dividends - Import Dividends + + FIRE + FOC - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 88 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 - - Importing data... - Importing data... + + Calculator + Calculadora - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 126 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 - - Import has been completed - Import has been completed + + 4% Rule + 4% Regla - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 134 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 - - Validating data... - Validating data... + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 242 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Select Holding - Select Holding + + Currency Cluster Risks + Riscos del clúster de divises - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 20 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 - - Select File - Select File + + Account Cluster Risks + Riscos del clúster de comptes - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 22 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 - - Holding - Holding + + Pricing + Preus - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 32 + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 - libs/ui/src/lib/assistant/assistant.html - 129 + libs/common/src/lib/routes/routes.ts + 271 - - Load Dividends - Load Dividends + + Pricing Plans + Plans de preus - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 68 + apps/client/src/app/pages/pricing/pricing-page.html + 4 - - Choose or drop a file here - Choose or drop a file here + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + La nostra oferta oficial al núvol Ghostfolio Premium és la manera més senzilla de començar. A causa del temps que estalvia, aquesta serà la millor opció per a la majoria de la gent. Els ingressos s’utilitzen per cobrir els costos de la infraestructura d’allotjament i per finançar el desenvolupament en curs. - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/pages/pricing/pricing-page.html + 6 - - The following file formats are supported: - The following file formats are supported: + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 90 + apps/client/src/app/pages/pricing/pricing-page.html + 12 - - Select Dividends - Select Dividends + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + Per a inversors experts en tecnologia que prefereixen executar Ghostfolio a la seva pròpia infraestructura. - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 113 + apps/client/src/app/pages/pricing/pricing-page.html + 24 - - Select Activities - Select Activities + + Unlimited Transactions + Transaccions il·limitades - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + apps/client/src/app/pages/pricing/pricing-page.html + 31 - - - Back - Back - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 144 + apps/client/src/app/pages/pricing/pricing-page.html + 120 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + apps/client/src/app/pages/pricing/pricing-page.html + 192 - - Allocations - Allocations + + Unlimited Accounts + Comptes il·limitats - apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts - 13 + apps/client/src/app/pages/pricing/pricing-page.html + 35 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + apps/client/src/app/pages/pricing/pricing-page.html + 124 - - - Allocations - Allocations - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 4 + apps/client/src/app/pages/pricing/pricing-page.html + 196 - - Proportion of Net Worth - Proportion of Net Worth + + Portfolio Performance + Rendiment de la cartera - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 12 + apps/client/src/app/pages/pricing/pricing-page.html + 39 - - - By Platform - By Platform - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 44 + apps/client/src/app/pages/pricing/pricing-page.html + 128 - - - By Currency - By Currency - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 63 + apps/client/src/app/pages/pricing/pricing-page.html + 200 - - By Asset Class - By Asset Class + + Data Import and Export + Importació i exportació de dades - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 85 + apps/client/src/app/pages/pricing/pricing-page.html + 59 - - - By Holding - By Holding - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 107 + apps/client/src/app/pages/pricing/pricing-page.html + 132 + + + apps/client/src/app/pages/pricing/pricing-page.html + 220 - - By Sector - By Sector + + Community Support + Suport comunitari - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 130 + apps/client/src/app/pages/pricing/pricing-page.html + 76 - - By Continent - By Continent + + Self-hosted, update manually. + S’allotja automàticament, actualitza manualment. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 153 + apps/client/src/app/pages/pricing/pricing-page.html + 80 - - By Market - By Market + + Free + Gratuït - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 175 + apps/client/src/app/pages/pricing/pricing-page.html + 81 + + + apps/client/src/app/pages/pricing/pricing-page.html + 144 - - Regions - Regions + + For new investors who are just getting started with trading. + Per a nous inversors que acaben de començar a operar. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 198 + apps/client/src/app/pages/pricing/pricing-page.html + 114 + + + Fully managed Ghostfolio cloud offering. + Oferta al núvol Ghostfolio totalment gestionada. - apps/client/src/app/pages/public/public-page.html + apps/client/src/app/pages/pricing/pricing-page.html 143 - - - Developed Markets - Developed Markets - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 222 + apps/client/src/app/pages/pricing/pricing-page.html + 269 + + + For ambitious investors who need the full picture of their financial assets. + Per a inversors ambiciosos que necessiten la imatge completa dels seus actius financers. - apps/client/src/app/pages/public/public-page.html - 160 + apps/client/src/app/pages/pricing/pricing-page.html + 185 - - Emerging Markets - Emerging Markets + + Email and Chat Support + Suport per correu electrònic i xat - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 231 + apps/client/src/app/pages/pricing/pricing-page.html + 265 + + + One-time payment, no auto-renewal. + Pagament únic, sense renovació automàtica. - apps/client/src/app/pages/public/public-page.html - 169 + apps/client/src/app/pages/pricing/pricing-page.html + 302 - - Other Markets - Other Markets + + It’s free. + És gratuït. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 240 + apps/client/src/app/pages/pricing/pricing-page.html + 352 + + + Hello, has shared a Portfolio with you! + Hello, has shared a Portfolio with you! apps/client/src/app/pages/public/public-page.html - 178 + 4 - - No data available - No data available + + Currencies + Monedes - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 250 + apps/client/src/app/pages/public/public-page.html + 88 + + + Continents + Continents apps/client/src/app/pages/public/public-page.html - 188 + 124 + + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - libs/ui/src/lib/benchmark/benchmark.component.html - 188 + apps/client/src/app/pages/public/public-page.html + 211 + + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio us permet fer un seguiment de la vostra riquesa. - libs/ui/src/lib/top-holdings/top-holdings.component.html - 181 + apps/client/src/app/pages/public/public-page.html + 215 - - By Country - By Country + + Registration + Inscripció - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 264 + libs/common/src/lib/routes/routes.ts + 281 - - By Account - By Account + + Continue with Internet Identity + Continueu amb Internet Identity - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 286 + apps/client/src/app/pages/register/register-page.html + 42 - - By ETF Provider - By ETF Provider + + Continue with Google + Continueu amb Google - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 306 + apps/client/src/app/pages/register/register-page.html + 53 - - By ETF Holding - By ETF Holding + + Copy to clipboard + Copia al porta-retalls - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 88 - - Approximation based on the top holdings of each ETF - Approximation based on the top holdings of each ETF + + Personal Finance Tools + Eines de finances personals - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + libs/common/src/lib/routes/routes.ts + 329 - - Analysis - Analysis + + open-source-alternative-to + alternativa-codi-obert-a + kebab-case - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 324 - - Dividend - Dividend - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 51 - + + Discover Open Source Alternatives for Personal Finance Tools + Descobriu alternatives de codi obert per a les eines de finances personals - libs/ui/src/lib/i18n.ts - 36 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 - - Investment - Investment - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 - + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Exploreu els enllaços següents per comparar una varietat d'eines de finances personals amb Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 - - Monthly - Monthly + + Open Source Alternative to + Alternativa de codi obert a - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 66 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 - - Yearly - Yearly + + Switzerland + Suïssa - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 - - - Analysis - Analysis - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 2 + libs/ui/src/lib/i18n.ts + 93 - - Absolute Asset Performance - Absolute Asset Performance + + Global + Global - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - - - Asset Performance - Asset Performance - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + libs/ui/src/lib/i18n.ts + 16 - - Absolute Currency Performance - Absolute Currency Performance + + The Open Source Alternative to + L’alternativa de codi obert a - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 - - Currency Performance - Currency Performance + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 - - Absolute Net Performance - Absolute Net Performance + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 - - Net Performance - Net Performance + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 - - Top - Top + + Ghostfolio vs comparison table + Ghostfolio vs comparison table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 239 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 - - Bottom - Bottom + + Founded + Fundat - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 288 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 - - Portfolio Evolution - Portfolio Evolution + + Origin + Origen - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 - - Investment Timeline - Investment Timeline + + Region + Regió - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 368 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 87 - - Current Streak - Current Streak + + Available in + Disponible a - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 389 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 108 - - Longest Streak - Longest Streak + + ✅ Yes + ✅ Sí - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 398 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 - - - Dividend Timeline - Dividend Timeline - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 425 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - - - FIRE - FIRE - apps/client/src/app/pages/portfolio/fire/fire-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 179 - - - Calculator - Calculator - apps/client/src/app/pages/portfolio/fire/fire-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 196 - - - 4% Rule - 4% Rule - apps/client/src/app/pages/portfolio/fire/fire-page.html - 40 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 218 - - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 235 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 257 - - - Account Cluster Risks - Account Cluster Risks - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 274 - - Pricing - Pricing + + ❌ No + ❌ No - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 147 - - - Pricing Plans - Pricing Plans - apps/client/src/app/pages/pricing/pricing-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 - - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - apps/client/src/app/pages/pricing/pricing-page.html - 6 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 186 - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - apps/client/src/app/pages/pricing/pricing-page.html - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 203 - - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - apps/client/src/app/pages/pricing/pricing-page.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 225 - - - Unlimited Transactions - Unlimited Transactions - apps/client/src/app/pages/pricing/pricing-page.html - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 242 - apps/client/src/app/pages/pricing/pricing-page.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 264 - apps/client/src/app/pages/pricing/pricing-page.html - 206 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 281 - - Unlimited Accounts - Unlimited Accounts - - apps/client/src/app/pages/pricing/pricing-page.html - 49 - + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/pricing/pricing-page.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 170 + + + Use anonymously + Use anonymously - apps/client/src/app/pages/pricing/pricing-page.html - 210 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 - - Portfolio Performance - Portfolio Performance + + Free Plan + Free Plan - apps/client/src/app/pages/pricing/pricing-page.html - 53 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + Starting from + Starting from - apps/client/src/app/pages/pricing/pricing-page.html - 142 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - apps/client/src/app/pages/pricing/pricing-page.html - 214 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 - - Data Import and Export - Data Import and Export + + year + year - apps/client/src/app/pages/pricing/pricing-page.html - 73 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - apps/client/src/app/pages/pricing/pricing-page.html - 146 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 + + + Notes + Notes - apps/client/src/app/pages/pricing/pricing-page.html - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 302 - - Community Support - Community Support + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - apps/client/src/app/pages/pricing/pricing-page.html - 90 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 - - Self-hosted, update manually. - Self-hosted, update manually. + + Ready to take your investments to the next level? + Ready to take your investments to the next level? - apps/client/src/app/pages/pricing/pricing-page.html - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 - - Free - Free + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - apps/client/src/app/pages/pricing/pricing-page.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 328 + + + Get Started + Get Started - apps/client/src/app/pages/pricing/pricing-page.html - 158 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 - - For new investors who are just getting started with trading. - For new investors who are just getting started with trading. + + Personal Finance Tools + Personal Finance Tools - apps/client/src/app/pages/pricing/pricing-page.html - 128 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 351 - - Fully managed Ghostfolio cloud offering. - Fully managed Ghostfolio cloud offering. + + Resources + Resources - apps/client/src/app/pages/pricing/pricing-page.html - 157 + libs/common/src/lib/routes/routes.ts + 332 + + + Guides + Guides - apps/client/src/app/pages/pricing/pricing-page.html - 283 + apps/client/src/app/pages/resources/guides/resources-guides.component.html + 4 - - For ambitious investors who need the full picture of their financial assets. - For ambitious investors who need the full picture of their financial assets. + + Glossary + Glossary - apps/client/src/app/pages/pricing/pricing-page.html - 199 + apps/client/src/app/pages/resources/glossary/resources-glossary.component.html + 4 - - Email and Chat Support - Email and Chat Support + + Membership + Membership - apps/client/src/app/pages/pricing/pricing-page.html - 279 + libs/common/src/lib/routes/routes.ts + 31 - - One-time payment, no auto-renewal. - One-time payment, no auto-renewal. + + Access + Access - apps/client/src/app/pages/pricing/pricing-page.html - 316 + libs/common/src/lib/routes/routes.ts + 26 - - It’s free. - It’s free. + + My Ghostfolio + My Ghostfolio - apps/client/src/app/pages/pricing/pricing-page.html - 345 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 34 - - Hello, has shared a Portfolio with you! - Hello, has shared a Portfolio with you! + + Oops, authentication has failed. + Oops, authentication has failed. - apps/client/src/app/pages/public/public-page.html - 4 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 - - Currencies - Currencies + + Try again + Try again - apps/client/src/app/pages/public/public-page.html - 88 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 - - Continents - Continents + + Go back to Home Page + Go back to Home Page - apps/client/src/app/pages/public/public-page.html - 124 + apps/client/src/app/pages/webauthn/webauthn-page.html + 33 - - Would you like to refine your personal investment strategy? - Would you like to refine your personal investment strategy? + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - apps/client/src/app/pages/public/public-page.html - 211 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 - - Ghostfolio empowers you to keep track of your wealth. - Ghostfolio empowers you to keep track of your wealth. + + Import Activities + Import Activities - apps/client/src/app/pages/public/public-page.html - 215 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - - - Registration - Registration - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/ui/src/lib/activities-table/activities-table.component.html + 371 - - Continue with Internet Identity - Continue with Internet Identity + + Import Dividends + Import Dividends - apps/client/src/app/pages/register/register-page.html - 42 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - - - Continue with Google - Continue with Google - apps/client/src/app/pages/register/register-page.html - 53 + libs/ui/src/lib/activities-table/activities-table.component.html + 383 - - Copy to clipboard - Copy to clipboard + + Export Activities + Export Activities - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 88 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - - - Personal Finance Tools - Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/ui/src/lib/activities-table/activities-table.component.html + 396 - - open-source-alternative-to - open-source-alternative-to + + Export Drafts as ICS + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/ui/src/lib/activities-table/activities-table.component.html + 409 - - Open Source Alternative to - Open Source Alternative to + + Delete Activities + Delete Activities - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 - - - - Discover Open Source Alternatives for Personal Finance Tools - Discover Open Source Alternatives for Personal Finance Tools - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 - - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. + + Draft + Draft - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + libs/ui/src/lib/activities-table/activities-table.component.html + 145 - - Open Source Alternative to - Open Source Alternative to + + Clone + Clone - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + libs/ui/src/lib/activities-table/activities-table.component.html + 436 - - Switzerland - Switzerland - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - + + Export Draft as ICS + Export Draft as ICS - libs/ui/src/lib/i18n.ts - 93 + libs/ui/src/lib/activities-table/activities-table.component.html + 446 - - Global - Global - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 - + + Do you really want to delete these activities? + Do you really want to delete these activities? - libs/ui/src/lib/i18n.ts - 16 + libs/ui/src/lib/activities-table/activities-table.component.ts + 219 - - The Open Source Alternative to - The Open Source Alternative to + + Do you really want to delete this activity? + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + libs/ui/src/lib/activities-table/activities-table.component.ts + 229 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + + Week to date + Week to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + Month to date + Month to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Ghostfolio vs comparison table - Ghostfolio vs comparison table + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Founded - Founded + + Year to date + Year to date - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 77 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Origin - Origin + + year + year - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 82 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Region - Region + + years + years - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 87 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Available in - Available in + + Asset Profiles + Asset Profiles - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 108 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 - - ✅ Yes - ✅ Yes - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 140 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 157 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 179 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 196 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 218 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 235 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 257 - + + Date Range + Date Range - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 274 + libs/ui/src/lib/assistant/assistant.html + 130 - - ❌ No - ❌ No - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 147 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 164 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 186 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 203 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 242 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 264 - + + Reset Filters + Reset Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 281 + libs/ui/src/lib/assistant/assistant.html + 224 - - Self-Hosting - Self-Hosting + + Apply Filters + Apply Filters - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 170 + libs/ui/src/lib/assistant/assistant.html + 234 - - Use anonymously - Use anonymously + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 209 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 - - Free Plan - Free Plan + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 248 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 - - Starting from - Starting from - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 - + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 - - year - year - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 - + + Change from All Time High + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + libs/ui/src/lib/benchmark/benchmark.component.html + 110 - - Notes - Notes + + from ATH + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 302 + libs/ui/src/lib/benchmark/benchmark.component.html + 112 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + + Market data provided by + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 - - Ready to take your investments to the next level? - Ready to take your investments to the next level? + + Savings Rate per Month + Savings Rate per Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + + Annual Interest Rate + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 328 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 - - Get Started - Get Started + + Retirement Date + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 - - Personal Finance Tools - Personal Finance Tools + + Projected Total Amount + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 351 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 - - Resources - Resources + + Deposit + Deposit - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 360 - - Guides - Guides + + Interest + Interest - apps/client/src/app/pages/resources/guides/resources-guides.component.html - 4 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 370 - - - Glossary - Glossary - apps/client/src/app/pages/resources/glossary/resources-glossary.component.html - 4 + libs/ui/src/lib/i18n.ts + 38 - - Membership - Membership - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - + + Savings + Savings - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 380 - - Access - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - + + Allocation + Allocation - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - - - My Ghostfolio - My Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 40 - - - Oops, authentication has failed. - Oops, authentication has failed. - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 116 - - Try again - Try again + + Show all + Show all - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 - - Go back to Home Page - Go back to Home Page + + Account + Account - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 4 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + Asia-Pacific + Asia-Pacific - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + libs/ui/src/lib/i18n.ts + 5 - - Import Activities - Import Activities - - libs/ui/src/lib/activities-table/activities-table.component.html - 9 - + + Asset Class + Asset Class - libs/ui/src/lib/activities-table/activities-table.component.html - 371 + libs/ui/src/lib/i18n.ts + 6 - - Import Dividends - Import Dividends - - libs/ui/src/lib/activities-table/activities-table.component.html - 29 - + + Asset Sub Class + Asset Sub Class - libs/ui/src/lib/activities-table/activities-table.component.html - 383 + libs/ui/src/lib/i18n.ts + 7 - - Export Activities - Export Activities - - libs/ui/src/lib/activities-table/activities-table.component.html - 41 - + + Buy and sell + Buy and sell - libs/ui/src/lib/activities-table/activities-table.component.html - 396 + libs/ui/src/lib/i18n.ts + 8 - - Export Drafts as ICS - Export Drafts as ICS - - libs/ui/src/lib/activities-table/activities-table.component.html - 54 - + + Core + Core - libs/ui/src/lib/activities-table/activities-table.component.html - 409 + libs/ui/src/lib/i18n.ts + 10 - - Delete Activities - Delete Activities + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + libs/ui/src/lib/i18n.ts + 12 - - Draft - Draft + + Switch to Ghostfolio Premium easily + Switch to Ghostfolio Premium easily - libs/ui/src/lib/activities-table/activities-table.component.html - 145 + libs/ui/src/lib/i18n.ts + 13 - - Clone - Clone + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - libs/ui/src/lib/activities-table/activities-table.component.html - 436 + libs/ui/src/lib/i18n.ts + 14 - - Export Draft as ICS - Export Draft as ICS + + Emergency Fund + Emergency Fund - libs/ui/src/lib/activities-table/activities-table.component.html - 446 + libs/ui/src/lib/i18n.ts + 15 - - Do you really want to delete these activities? - Do you really want to delete these activities? + + Grant + Grant - libs/ui/src/lib/activities-table/activities-table.component.ts - 219 + libs/ui/src/lib/i18n.ts + 17 - - Do you really want to delete this activity? - Do you really want to delete this activity? + + Higher Risk + Higher Risk - libs/ui/src/lib/activities-table/activities-table.component.ts - 229 + libs/ui/src/lib/i18n.ts + 18 - - Find holding... - Find holding... + + This activity already exists. + This activity already exists. - libs/ui/src/lib/assistant/assistant.component.ts - 143 + libs/ui/src/lib/i18n.ts + 19 - - Week to date - Week to date + + Japan + Japan - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 86 - - WTD - WTD + + Lower Risk + Lower Risk - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 20 - - Month to date - Month to date + + Month + Month - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 21 - - MTD - MTD + + Months + Months - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 22 - - Year to date - Year to date + + Other + Other - libs/ui/src/lib/assistant/assistant.component.ts - 230 + libs/ui/src/lib/i18n.ts + 23 - - - year - year - libs/ui/src/lib/assistant/assistant.component.ts - 234 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 400 - - years - years + + Preset + Preset - libs/ui/src/lib/assistant/assistant.component.ts - 256 + libs/ui/src/lib/i18n.ts + 25 - - No entries... - No entries... + + Retirement Provision + Retirement Provision - libs/ui/src/lib/assistant/assistant.html - 62 + libs/ui/src/lib/i18n.ts + 26 + + + Satellite + Satellite - libs/ui/src/lib/assistant/assistant.html - 85 + libs/ui/src/lib/i18n.ts + 27 - - Asset Profiles - Asset Profiles + + Symbol + Symbol - libs/ui/src/lib/assistant/assistant.html - 67 + libs/ui/src/lib/i18n.ts + 28 - - Date Range - Date Range + + Tag + Tag - libs/ui/src/lib/assistant/assistant.html - 95 + libs/ui/src/lib/i18n.ts + 29 - - Reset Filters - Reset Filters + + Year + Year - libs/ui/src/lib/assistant/assistant.html - 187 + libs/ui/src/lib/i18n.ts + 30 - - Apply Filters - Apply Filters + + Years + Years - libs/ui/src/lib/assistant/assistant.html - 197 + libs/ui/src/lib/i18n.ts + 31 - - 50-Day Trend - 50-Day Trend + + Buy + Buy - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + libs/ui/src/lib/i18n.ts + 35 - - 200-Day Trend - 200-Day Trend + + Fee + Fee - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + libs/ui/src/lib/i18n.ts + 37 - - Last All Time High - Last All Time High + + Valuable + Valuable - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + libs/ui/src/lib/i18n.ts + 39 - - Change from All Time High - Change from All Time High + + Liability + Liability - libs/ui/src/lib/benchmark/benchmark.component.html - 96 + libs/ui/src/lib/i18n.ts + 40 - - from ATH - from ATH + + Sell + Sell - libs/ui/src/lib/benchmark/benchmark.component.html - 98 + libs/ui/src/lib/i18n.ts + 41 - - Market data provided by - Market data provided by + + Cash + Cash - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 44 - - Savings Rate per Month - Savings Rate per Month + + Commodity + Commodity - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 45 - - Annual Interest Rate - Annual Interest Rate + + Equity + Patrimoni - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 46 - - Retirement Date - Retirement Date + + Fixed Income + Fixed Income - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 47 - - Projected Total Amount - Projected Total Amount + + Liquidity + Liquidity - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + libs/ui/src/lib/i18n.ts + 48 - - Deposit - Deposit + + Real Estate + Real Estate - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 360 + libs/ui/src/lib/i18n.ts + 49 - - Interest - Interest + + Bond + Bond - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 370 + libs/ui/src/lib/i18n.ts + 52 + + + Cryptocurrency + Cryptocurrency libs/ui/src/lib/i18n.ts - 38 + 53 - - Savings - Savings + + ETF + ETF - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 380 + libs/ui/src/lib/i18n.ts + 54 - - Allocation - Allocation + + Mutual Fund + Mutual Fund - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/i18n.ts + 55 + + + Precious Metal + Precious Metal - libs/ui/src/lib/top-holdings/top-holdings.component.html - 40 + libs/ui/src/lib/i18n.ts + 56 + + + Private Equity + Private Equity - libs/ui/src/lib/top-holdings/top-holdings.component.html - 116 + libs/ui/src/lib/i18n.ts + 57 - - Show all - Show all + + Stock + Stock - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/i18n.ts + 58 - - Account - Account + + Africa + Africa libs/ui/src/lib/i18n.ts - 4 + 65 - - Asia-Pacific - Asia-Pacific + + Asia + Asia libs/ui/src/lib/i18n.ts - 5 + 66 - - Asset Class - Asset Class + + Europe + Europe libs/ui/src/lib/i18n.ts - 6 + 67 - - Asset Sub Class - Asset Sub Class + + North America + North America libs/ui/src/lib/i18n.ts - 7 + 68 - - Buy and sell - Buy and sell + + Oceania + Oceania libs/ui/src/lib/i18n.ts - 8 + 69 - - Core - Core + + South America + South America libs/ui/src/lib/i18n.ts - 10 + 70 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Switch to Ghostfolio Premium or Ghostfolio Open Source easily + + Extreme Fear + Extreme Fear libs/ui/src/lib/i18n.ts - 12 + 100 - - Switch to Ghostfolio Premium easily - Switch to Ghostfolio Premium easily + + Extreme Greed + Extreme Greed libs/ui/src/lib/i18n.ts - 13 + 101 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Switch to Ghostfolio Open Source or Ghostfolio Basic easily + + Neutral + Neutral libs/ui/src/lib/i18n.ts - 14 + 104 - - Emergency Fund - Emergency Fund + + Membership + Membership - libs/ui/src/lib/i18n.ts - 15 + libs/ui/src/lib/membership-card/membership-card.component.html + 37 - - Grant - Grant + + Valid until + Valid until - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 74 + + + libs/ui/src/lib/membership-card/membership-card.component.html + 42 - - Higher Risk - Higher Risk + + Time to add your first activity. + Time to add your first activity. - libs/ui/src/lib/i18n.ts - 18 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - This activity already exists. - This activity already exists. + + No data available + No data available - libs/ui/src/lib/i18n.ts - 19 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 402 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 415 - - Japan - Japan + + Show more + Show more - libs/ui/src/lib/i18n.ts - 86 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Lower Risk - Lower Risk + + Alternative + Alternative - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - Month - Month + + App + App - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Months - Months + + Budgeting + Budgeting - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - Other - Other + + Community + Community - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 + + + Family Office + Family Office - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Preset - Preset + + Investor + Investor - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - Retirement Provision - Retirement Provision + + Open Source + Open Source - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - Satellite - Satellite + + Personal Finance + Personal Finance - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Symbol - Symbol + + Privacy + Privacy - libs/ui/src/lib/i18n.ts - 28 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Tag - Tag + + Software + Software - libs/ui/src/lib/i18n.ts - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Year - Year + + Tool + Tool - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Years - Years + + User Experience + User Experience - libs/ui/src/lib/i18n.ts - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - Buy - Buy + + Wealth + Wealth - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - Fee - Fee + + Wealth Management + Wealth Management - libs/ui/src/lib/i18n.ts - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Valuable - Valuable + + Australia + Australia libs/ui/src/lib/i18n.ts - 39 + 74 - - Liability - Liability + + Austria + Austria libs/ui/src/lib/i18n.ts - 40 + 75 - - Sell - Sell + + Belgium + Belgium libs/ui/src/lib/i18n.ts - 41 + 76 - - Cash - Cash + + Bulgaria + Bulgaria libs/ui/src/lib/i18n.ts - 44 + 78 - - Commodity - Commodity + + Canada + Canada libs/ui/src/lib/i18n.ts - 45 + 79 - - Equity - Patrimoni + + Czech Republic + Czech Republic libs/ui/src/lib/i18n.ts - 46 + 80 - - Fixed Income - Fixed Income + + Finland + Finland libs/ui/src/lib/i18n.ts - 47 + 81 - - Liquidity - Liquidity + + France + France libs/ui/src/lib/i18n.ts - 48 + 82 - - Real Estate - Real Estate + + Germany + Germany libs/ui/src/lib/i18n.ts - 49 + 83 - - Bond - Bond + + India + India libs/ui/src/lib/i18n.ts - 52 + 84 - - Cryptocurrency - Cryptocurrency + + Italy + Italy libs/ui/src/lib/i18n.ts - 53 + 85 - - ETF - ETF + + Netherlands + Netherlands libs/ui/src/lib/i18n.ts - 54 + 87 - - Mutual Fund - Mutual Fund + + New Zealand + New Zealand libs/ui/src/lib/i18n.ts - 55 + 88 - - Precious Metal - Precious Metal + + Poland + Poland libs/ui/src/lib/i18n.ts - 56 + 89 - - Private Equity - Private Equity + + Romania + Romania libs/ui/src/lib/i18n.ts - 57 + 90 - - Stock - Stock + + South Africa + South Africa libs/ui/src/lib/i18n.ts - 58 + 92 - - Africa - Africa + + Thailand + Thailand libs/ui/src/lib/i18n.ts - 65 + 94 - - Asia - Asia + + United States + United States libs/ui/src/lib/i18n.ts - 66 + 97 - - Europe - Europe + + Error + Error - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - - North America - North America + + + Deactivate + Deactivate - libs/ui/src/lib/i18n.ts - 68 + apps/client/src/app/components/rule/rule.component.html + 72 - - Oceania - Oceania + + Activate + Activate - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/components/rule/rule.component.html + 74 - - South America - South America + + Inactive + Inactive - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Extreme Fear - Extreme Fear + + Cancel + Cancel libs/ui/src/lib/i18n.ts - 100 + 9 - - Extreme Greed - Extreme Greed + + Close + Close libs/ui/src/lib/i18n.ts - 101 + 11 - - Neutral - Neutral + + Yes + Yes libs/ui/src/lib/i18n.ts - 104 + 32 - - Membership - Membership + + Copy link to clipboard + Copy link to clipboard - libs/ui/src/lib/membership-card/membership-card.component.html - 37 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Valid until - Valid until + + Portfolio Snapshot + Portfolio Snapshot - apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 + + + Change with currency effect Change + Change with currency effect Change - libs/ui/src/lib/membership-card/membership-card.component.html - 42 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Time to add your first activity. - Time to add your first activity. + + Performance with currency effect Performance + Performance with currency effect Performance - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - No data available - No data available + + Threshold Min + Threshold Min - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 + + + Threshold Max + Threshold Max - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Show more - Show more + + Close + Close - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Alternative - Alternative + + Customize + Customize - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/components/rule/rule.component.html + 67 - - App - App + + No auto-renewal. + No auto-renewal. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Budgeting - Budgeting + + Today + Today - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/public/public-page.html + 24 - - Community - Community + + This year + This year - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/public/public-page.html + 42 - - Family Office - Family Office + + From the beginning + From the beginning - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/public/public-page.html + 60 - - Investor - Investor + + Oops! Invalid currency. + Oops! Invalid currency. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - Open Source - Open Source + + This page has been archived. + This page has been archived. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Personal Finance - Personal Finance + + is Open Source Software + is Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Privacy - Privacy + + is not Open Source Software + is not Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Software - Software + + is Open Source Software + is Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Tool - Tool + + is not Open Source Software + is not Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - User Experience - User Experience + + can be self-hosted + can be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Wealth - Wealth + + cannot be self-hosted + cannot be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Wealth Management - Wealth Management + + can be self-hosted + can be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Australia - Australia + + cannot be self-hosted + cannot be self-hosted - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Austria - Austria + + can be used anonymously + can be used anonymously - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Belgium - Belgium + + cannot be used anonymously + cannot be used anonymously - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Bulgaria - Bulgaria + + can be used anonymously + can be used anonymously - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Canada - Canada + + cannot be used anonymously + cannot be used anonymously - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Czech Republic - Czech Republic + + offers a free plan + offers a free plan - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Finland - Finland + + does not offer a free plan + does not offer a free plan - libs/ui/src/lib/i18n.ts - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - France - France + + offers a free plan + offers a free plan - libs/ui/src/lib/i18n.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Germany - Germany + + does not offer a free plan + does not offer a free plan - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - India - India + + Oops! Could not find any assets. + Oops! Could not find any assets. - libs/ui/src/lib/i18n.ts - 84 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Italy - Italy + + Data Providers + Data Providers - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Netherlands - Netherlands + + Set API key + Set API key - libs/ui/src/lib/i18n.ts - 87 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - New Zealand - New Zealand + + Get access to 80’000+ tickers from over 50 exchanges + Get access to 80’000+ tickers from over 50 exchanges libs/ui/src/lib/i18n.ts - 88 + 24 - - Poland - Poland + + Ukraine + Ukraine libs/ui/src/lib/i18n.ts - 89 + 95 - - Romania - Romania + + Join now + Join now - libs/ui/src/lib/i18n.ts - 90 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - South Africa - South Africa + + Glossary + Glossary - libs/ui/src/lib/i18n.ts - 92 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - Thailand - Thailand - libs/ui/src/lib/i18n.ts - 94 + libs/common/src/lib/routes/routes.ts + 293 - - United States - United States + + Guides + Guides - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Error - Error - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + libs/common/src/lib/routes/routes.ts + 301 - - Deactivate - Deactivate + + guides + guides + kebab-case - apps/client/src/app/components/rule/rule.component.html - 72 + libs/common/src/lib/routes/routes.ts + 296 - - - Activate - Activate - apps/client/src/app/components/rule/rule.component.html - 74 + libs/common/src/lib/routes/routes.ts + 299 - - Inactive - Inactive + + glossary + glossary + kebab-case - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + libs/common/src/lib/routes/routes.ts + 288 - - - Cancel - Cancel - libs/ui/src/lib/i18n.ts - 9 + libs/common/src/lib/routes/routes.ts + 291 - - Close - Close + + Threshold range + Threshold range - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Yes - Yes + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Copy link to clipboard - Copy link to clipboard + + Economic Market Cluster Risks + Economic Market Cluster Risks - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Portfolio Snapshot - Portfolio Snapshot + + of + of - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Change with currency effect Change - Change with currency effect Change + + daily requests + daily requests - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Performance with currency effect Performance - Performance with currency effect Performance + + Remove API key + Remove API key - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Threshold Min - Threshold Min + + Do you really want to delete the API key? + Do you really want to delete the API key? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Threshold Max - Threshold Max + + Please enter your Ghostfolio API key: + Please enter your Ghostfolio API key: - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Close - Close + + API Requests Today + API Requests Today - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Customize - Customize + + Could not generate an API key + Could not generate an API key - apps/client/src/app/components/rule/rule.component.html - 67 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - No auto-renewal. - No auto-renewal. + + Set this API key in your self-hosted environment: + Set this API key in your self-hosted environment: - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Today - Today + + Ghostfolio Premium Data Provider API Key + Ghostfolio Premium Data Provider API Key - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - This year - This year + + Do you really want to generate a new API key? + Do you really want to generate a new API key? - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - From the beginning - From the beginning + + Tag + Tag - apps/client/src/app/pages/public/public-page.html - 60 + libs/ui/src/lib/assistant/assistant.html + 194 - - Oops! Invalid currency. - Oops! Invalid currency. + + API Key + API Key - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - This page has been archived. - This page has been archived. + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - is Open Source Software - is Open Source Software + + out of + out of - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - is not Open Source Software - is not Open Source Software + + rules align with your portfolio. + rules align with your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - is Open Source Software - is Open Source Software + + Save + Save - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - is not Open Source Software - is not Open Source Software + + Asset Class Cluster Risks + Asset Class Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - can be self-hosted - can be self-hosted + + Me + Me - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - cannot be self-hosted - cannot be self-hosted + + Received Access + Received Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - can be self-hosted - can be self-hosted + + Please enter your Ghostfolio API key. + Please enter your Ghostfolio API key. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - cannot be self-hosted - cannot be self-hosted + + AI prompt has been copied to the clipboard + AI prompt has been copied to the clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - can be used anonymously - can be used anonymously + + Link has been copied to the clipboard + Link has been copied to the clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - cannot be used anonymously - cannot be used anonymously + + Regional Market Cluster Risks + Regional Market Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - can be used anonymously - can be used anonymously + + Lazy + Lazy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be used anonymously - cannot be used anonymously + + Instant + Instant - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - offers a free plan - offers a free plan + + Default Market Price + Default Market Price - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - does not offer a free plan - does not offer a free plan + + Mode + Mode - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - offers a free plan - offers a free plan + + Selector + Selector - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - does not offer a free plan - does not offer a free plan + + HTTP Request Headers + HTTP Request Headers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - Oops! Could not find any assets. - Oops! Could not find any assets. + + end of day + end of day - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - Data Providers - Data Providers + + real-time + real-time - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - Set API key - Set API key + + Open Duck.ai + Open Duck.ai - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - Get access to 80’000+ tickers from over 50 exchanges - Get access to 80’000+ tickers from over 50 exchanges + + Create + Create - libs/ui/src/lib/i18n.ts - 24 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - Ukraine - Ukraine + + Market Data + Market Data - libs/ui/src/lib/i18n.ts - 95 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - Join now - Join now + + Change + Change - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - Glossary - Glossary + + Performance + Performance - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Guides - Guides + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 + + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - guides - guides - snake-case + + Armenia + Armenia - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + libs/ui/src/lib/i18n.ts + 73 + + + British Virgin Islands + British Virgin Islands - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + libs/ui/src/lib/i18n.ts + 77 - - glossary - glossary - snake-case + + Singapore + Singapore - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + libs/ui/src/lib/i18n.ts + 91 + + + Terms and Conditions + Terms and Conditions - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Threshold range - Threshold range + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + + I understand that if I lose my security token, I cannot recover my account + I understand that if I lose my security token, I cannot recover my account - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - Economic Market Cluster Risks - Economic Market Cluster Risks + + Continue + Continue - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 - - of - of + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - daily requests - daily requests + + Security token + Security token - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Remove API key - Remove API key + + Do you really want to generate a new security token for this user? + Do you really want to generate a new security token for this user? - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Do you really want to delete the API key? - Do you really want to delete the API key? + + Generate Security Token + Generate Security Token - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Please enter your Ghostfolio API key: - Please enter your Ghostfolio API key: + + United Kingdom + United Kingdom - apps/client/src/app/pages/api/api-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 96 - - I have an API key - I have an API key + + Terms of Service + Terms of Service - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/app.component.html + 112 - - API Requests Today - API Requests Today + + terms-of-service + terms-of-service + kebab-case - apps/client/src/app/components/admin-users/admin-users.html - 178 + libs/common/src/lib/routes/routes.ts + 212 + + + libs/common/src/lib/routes/routes.ts + 215 - - Could not generate an API key - Could not generate an API key + + Terms of Service + Terms of Service - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + libs/common/src/lib/routes/routes.ts + 217 - - Set this API key in your self-hosted environment: - Set this API key in your self-hosted environment: + + Terms of Service + Terms of Service - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - Ghostfolio Premium Data Provider API Key - Ghostfolio Premium Data Provider API Key + + and I agree to the Terms of Service. + and I agree to the Terms of Service. - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - Do you really want to generate a new API key? - Do you really want to generate a new API key? + + () is already in use. + () is already in use. - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Tag - Tag + + An error occurred while updating to (). + An error occurred while updating to (). - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - API Key - API Key + + Apply + Apply - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + + with API access for + with API access for - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - out of - out of + + Gather Recent Historical Market Data + Gather Recent Historical Market Data - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - rules align with your portfolio. - rules align with your portfolio. + + Gather All Historical Market Data + Gather All Historical Market Data - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - Save - Save + + Gather Historical Market Data + Gather Historical Market Data - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Asset Class Cluster Risks - Asset Class Cluster Risks + + Data Gathering is off + Data Gathering is off - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - Me - Me + + Performance Calculation + Performance Calculation - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - Received Access - Received Access + + someone + someone - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Please enter your Ghostfolio API key. - Please enter your Ghostfolio API key. + + Add asset to watchlist + Add asset to watchlist - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - AI prompt has been copied to the clipboard - AI prompt has been copied to the clipboard + + Watchlist + Watchlist - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Link has been copied to the clipboard - Link has been copied to the clipboard - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/pages/features/features-page.html + 197 - - Early Access - Early Access + + Watchlist + Watchlist - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + libs/common/src/lib/routes/routes.ts + 110 - - Regional Market Cluster Risks - Regional Market Cluster Risks + + Do you really want to delete this item? + Do you really want to delete this item? - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - Lazy - Lazy + + Log out + Log out - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/components/header/header.component.html + 329 - - Instant - Instant + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Default Market Price - Default Market Price - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/markets/markets.html + 52 - - Mode - Mode + + changelog + changelog + kebab-case - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + libs/common/src/lib/routes/routes.ts + 180 - - - Selector - Selector - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + libs/common/src/lib/routes/routes.ts + 183 - - HTTP Request Headers - HTTP Request Headers + + Demo user account has been synced. + Demo user account has been synced. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - end of day - end of day + + Sync Demo User Account + Sync Demo User Account - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - real-time - real-time + + Emergency Fund: Set up + Emergency Fund: Set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Open Duck.ai - Open Duck.ai + + No emergency fund has been set up + No emergency fund has been set up - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - Create - Create + + An emergency fund has been set up + An emergency fund has been set up - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - Market Data - Market Data + + Fee Ratio + Fee Ratio - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - Change - Change + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Performance - Performance + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + apps/client/src/app/pages/i18n/i18n-page.html + 93 + + + Name + Name - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Copy portfolio data to clipboard for AI prompt - Copy portfolio data to clipboard for AI prompt + + Find holding or page... + Find holding or page... - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Copy AI prompt to clipboard for analysis - Copy AI prompt to clipboard for analysis + + Quick Links + Quick Links - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + libs/ui/src/lib/assistant/assistant.html + 43 - - Armenia - Armenia + + Asset Profiles + Asset Profiles - libs/ui/src/lib/i18n.ts - 73 + libs/ui/src/lib/assistant/assistant.html + 99 - - British Virgin Islands - British Virgin Islands + + Live Demo + Live Demo - libs/ui/src/lib/i18n.ts - 77 + libs/common/src/lib/routes/routes.ts + 231 - - Singapore - Singapore + + Open Source Alternative to + Open Source Alternative to - libs/ui/src/lib/i18n.ts - 91 + libs/common/src/lib/routes/routes.ts + 326 - - Terms and Conditions - Terms and Conditions + + Single Account + Single Account - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Please keep your security token safe. If you lose it, you will not be able to recover your account. + + Your net worth is managed by a single account + Your net worth is managed by a single account - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - I understand that if I lose my security token, I cannot recover my account - I understand that if I lose my security token, I cannot recover my account + + Your net worth is managed by ${accountsLength} accounts + Your net worth is managed by ${accountsLength} accounts - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + apps/client/src/app/pages/i18n/i18n-page.html 28 - - Continue - Continue + + Holdings + Holdings - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/ui/src/lib/assistant/assistant.html + 69 - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Here is your security token. It is only visible once, please store and keep it in a safe place. + + personal-finance-tools + personal-finance-tools + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 312 + + + libs/common/src/lib/routes/routes.ts + 315 + + + libs/common/src/lib/routes/routes.ts + 323 - - Security token - Security token + + markets + markets + kebab-case - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + libs/common/src/lib/routes/routes.ts + 304 + + + libs/common/src/lib/routes/routes.ts + 307 - - Do you really want to generate a new security token for this user? - Do you really want to generate a new security token for this user? + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Generate Security Token - Generate Security Token + + Get Access + Get Access - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - United Kingdom - United Kingdom + + Learn more + Learn more - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - Terms of Service - Terms of Service + + new + new - apps/client/src/app/app.component.html - 112 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - terms-of-service - terms-of-service - snake-case + + Limited Offer! + Limited Offer! - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 311 + + + Get extra + Get extra - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Available - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Unavailable - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 - - Terms of Service - Terms of Service + + new + new - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 + + + Investment + Investment - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 14 - - Terms of Service - Terms of Service + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - and I agree to the Terms of Service. - and I agree to the Terms of Service. + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - () is already in use. - () is already in use. + + Equity + Equity - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - An error occurred while updating to (). - An error occurred while updating to (). + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - Apply - Apply + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - with API access for - with API access for + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - Gather Recent Historical Market Data - Gather Recent Historical Market Data + + Fixed Income + Fixed Income - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather All Historical Market Data - Gather All Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather Historical Market Data - Gather Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Data Gathering is off - Data Gathering is off + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Performance Calculation - Performance Calculation + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - someone - someone + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - Add asset to watchlist - Add asset to watchlist + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Watchlist - Watchlist + + Investment + Investment - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 71 + + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 72 - - Watchlist - Watchlist + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + + + start + start + kebab-case + + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - Get Early Access + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - Do you really want to delete this item? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - Log out + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index c73acd8e9..a951dd6ea 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -110,11 +110,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 224 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -146,11 +146,11 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + 46 apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -162,16 +162,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + 139 libs/ui/src/lib/activities-table/activities-table.component.html 138 - - libs/ui/src/lib/benchmark/benchmark.component.html - 4 - libs/ui/src/lib/holdings-table/holdings-table.component.html 28 @@ -210,15 +206,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 205 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 208 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 211 libs/ui/src/lib/account-balances/account-balances.component.html @@ -258,11 +254,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -290,11 +286,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -306,7 +302,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 155 + 169 @@ -346,7 +342,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 308 @@ -366,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 155 @@ -400,13 +396,17 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html 110 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + Asset Profiles Anlageprofile - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 @@ -458,7 +458,7 @@ Datum apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + 161 libs/ui/src/lib/account-balances/account-balances.component.html @@ -482,7 +482,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 109 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -506,7 +506,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + 38 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -530,7 +530,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 338 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -554,7 +554,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + 45 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -578,7 +578,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + 345 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -598,7 +598,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + 212 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -630,7 +630,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -638,7 +638,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -646,7 +646,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -758,7 +758,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -774,11 +774,11 @@ Benutzer apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 @@ -818,11 +818,15 @@ Übersicht apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 @@ -830,11 +834,11 @@ Portfolio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 @@ -842,7 +846,7 @@ Konten apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -850,15 +854,15 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -870,11 +874,11 @@ Administration apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 @@ -886,11 +890,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -906,15 +910,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -930,11 +934,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -942,7 +946,7 @@ Ich apps/client/src/app/components/header/header.component.html - 207 + 213 @@ -950,7 +954,7 @@ Mein Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 @@ -958,7 +962,7 @@ Über Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -974,7 +978,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -990,12 +994,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1017,12 +1025,16 @@ Sign in Einloggen - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -1030,7 +1042,11 @@ Ups! Falsches Sicherheits-Token. apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1052,6 +1068,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1068,6 +1088,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -1085,8 +1113,8 @@ or oder - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1110,7 +1138,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1142,7 +1170,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1175,10 +1203,10 @@ Investment - Einlage + Investition apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1270,7 +1298,7 @@ Dividenden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1282,7 +1310,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 @@ -1306,7 +1334,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + 277 apps/client/src/app/pages/public/public-page.html @@ -1326,7 +1354,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 289 @@ -1334,7 +1362,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1350,7 +1378,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -1398,7 +1426,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -1410,7 +1438,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -1422,7 +1450,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -1434,7 +1462,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -1446,7 +1474,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -1454,11 +1482,11 @@ Okay apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1469,16 +1497,12 @@ About Über Ghostfolio - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 @@ -1566,7 +1590,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -1578,7 +1602,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -1617,12 +1641,8 @@ Privacy Policy Datenschutzbestimmungen - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -1630,7 +1650,7 @@ Mein Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1638,7 +1658,7 @@ Bitte gebe deinen Gutscheincode ein. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1646,7 +1666,7 @@ Gutscheincode konnte nicht eingelöst werden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1654,7 +1674,7 @@ Gutscheincode wurde eingelöst apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1662,7 +1682,7 @@ Neu laden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1686,7 +1706,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -1706,7 +1726,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -1798,7 +1818,7 @@ Gewährte Zugangsberechtigung apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 @@ -1821,8 +1841,8 @@ Accounts Konten - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -1874,7 +1894,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + 145 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1925,16 +1945,16 @@ Admin Control Administration - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -1948,21 +1968,21 @@ Frequently Asked Questions (FAQ) Häufig gestellte Fragen (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Features Features - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -1970,47 +1990,43 @@ Übersicht apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Markets Märkte - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -2021,8 +2037,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -2105,12 +2121,8 @@ Analysis Analyse - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -2173,20 +2185,12 @@ Holdings Positionen - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 @@ -2204,10 +2208,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Update activity @@ -2222,7 +2222,7 @@ Aktivität hinzufügen apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2262,11 +2262,11 @@ Anzahl apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2278,7 +2278,7 @@ Stückpreis apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2290,7 +2290,7 @@ Gebühr apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2310,7 +2310,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + 275 @@ -2330,27 +2330,23 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + 235 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + 290 libs/ui/src/lib/assistant/assistant.html - 168 + 205 Activities Aktivitäten - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -2376,21 +2372,25 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Portfolio Portfolio apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 @@ -2421,8 +2421,8 @@ Registration Registrierung - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -2453,8 +2453,8 @@ Resources Ressourcen - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/common/src/lib/routes/routes.ts + 332 @@ -2478,7 +2478,7 @@ Zurück zur Startseite apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -2550,7 +2550,7 @@ Änderung vom Allzeithoch libs/ui/src/lib/benchmark/benchmark.component.html - 96 + 110 @@ -2558,7 +2558,7 @@ vom AZH libs/ui/src/lib/benchmark/benchmark.component.html - 98 + 112 @@ -2590,7 +2590,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 418 + 432 @@ -2598,7 +2598,7 @@ Diese Funktion ist derzeit nicht verfügbar. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2606,11 +2606,11 @@ Bitte versuche es später noch einmal. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2622,7 +2622,7 @@ Ups! Es ist etwas schief gelaufen. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2642,7 +2642,7 @@ Ø Preis pro Einheit apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -2650,7 +2650,7 @@ Minimum Preis apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -2658,7 +2658,7 @@ Maximum Preis apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -2678,11 +2678,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + 306 @@ -2694,7 +2694,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + 261 @@ -2710,7 +2710,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + 271 @@ -2816,6 +2816,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2828,6 +2832,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2882,7 +2890,7 @@ Benchmark apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 @@ -3333,36 +3341,24 @@ Market Data Marktdaten - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Users Benutzer - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 Summary Zusammenfassung - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 @@ -3374,7 +3370,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -3406,7 +3402,7 @@ Gültig bis apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + 74 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3502,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -3518,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -3534,11 +3530,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -3550,11 +3546,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -3574,7 +3570,7 @@ Abonnement abschliessen apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3586,7 +3582,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -3594,7 +3590,7 @@ Für technisch versierte Anleger, die Ghostfolio auf der eigenen Infrastruktur betreiben möchten. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -3602,15 +3598,15 @@ Unlimitierte Transaktionen apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -3618,15 +3614,15 @@ Unlimitierte Accounts apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -3634,15 +3630,15 @@ Portfolio Performance apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -3650,7 +3646,7 @@ Selbst gehostet, manuelles Update. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -3658,11 +3654,11 @@ Kostenlos apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -3670,7 +3666,7 @@ Für Einsteiger, die gerade mit dem Börsenhandel beginnen. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -3678,11 +3674,11 @@ Vollständig verwaltetes Ghostfolio Cloud-Angebot. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -3690,7 +3686,7 @@ Für ambitionierte Anleger, die den vollständigen Überblick über ihr Anlagevermögen benötigen. apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -3698,7 +3694,7 @@ Einmalige Zahlung, keine automatische Erneuerung. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -3714,7 +3710,7 @@ Es ist kostenlos. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 @@ -3722,7 +3718,7 @@ Gebühren apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3746,11 +3742,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -3766,15 +3762,15 @@ Datenimport und -export apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -3790,7 +3786,7 @@ Community Support apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -3798,7 +3794,7 @@ E-Mail und Chat Support apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -3850,7 +3846,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -3866,7 +3862,7 @@ Abonnement erneuern apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -3874,7 +3870,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 @@ -3946,7 +3942,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3966,7 +3962,7 @@ Plattformen apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 @@ -4001,32 +3997,24 @@ 47 - + Add Platform Plattform hinzufügen apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 Settings Einstellungen - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 @@ -4126,7 +4114,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 @@ -4193,24 +4181,16 @@ Changelog Changelog - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License Lizenz - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 @@ -4345,8 +4325,8 @@ Personal Finance Tools Tools für persönliche Finanzen - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/common/src/lib/routes/routes.ts + 329 @@ -4694,7 +4674,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4714,7 +4694,7 @@ Konten einrichten apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 @@ -4878,7 +4858,7 @@ Wenn du Ghostfolio lieber auf deiner eigenen Infrastruktur betreiben möchtest, findest du den Quellcode und weitere Informationen auf GitHub. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 @@ -4891,7 +4871,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio ist ein Open Source Dashboard für deine persönlichen Finanzen mit Fokus auf Datenschutz. Analysiere deine Vermögensverteilung, ermittle dein Nettovermögen und treffe fundierte, datengestützte Investitionsentscheidungen. + Ghostfolio ist ein Open Source Dashboard für deine persönlichen Finanzen mit Fokus auf Datenschutz. Analysiere deine Vermögensverteilung, ermittle dein Gesamtvermögen und treffe fundierte, datengestützte Investitionsentscheidungen. apps/client/src/app/pages/landing/landing-page.html 9 @@ -4906,7 +4886,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -5150,7 +5130,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -5169,2832 +5149,2898 @@ 386 - + faq haeufig-gestellte-fragen - snake-case - - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - + kebab-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 245 - + features features - snake-case + kebab-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 255 + + + about + ueber-uns + kebab-case - apps/client/src/app/components/header/header.component.ts - 88 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/core/paths.ts - 4 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 214 + + + privacy-policy + datenschutzbestimmungen + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 207 + + + license + lizenz + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + maerkte + kebab-case - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + preise + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - ueber-uns - snake-case - - apps/client/src/app/app.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 270 + + + register + registrierung + kebab-case - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + ressourcen + kebab-case - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 322 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Diese Übersichtsseite zeigt eine Auswahl an Tools zur Verwaltung der persönliche Finanzen im Vergleich zur Open Source Alternative Ghostfolio. Wenn du Wert auf Transparenz, Datenschutz und die gemeinschaftliche Zusammenarbeit der Open Source Community legst, bietet dir Ghostfolio eine ausgezeichnete Möglichkeit, die Kontrolle über dein Finanzmanagement zu übernehmen. - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Über die Links unten kannst du eine Reihe an Tools mit Ghostfolio vergleichen. - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source Alternative zu - apps/client/src/app/pages/about/about-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + Die Open Source Alternative zu - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Suchst du nach einer Open Source Alternative zu ? Ghostfolio ist ein leistungsstarkes Portfolio Management Tool, das Privatpersonen eine umfassende Plattform bietet, um ihre Investitionen zu verfolgen, zu analysieren und zu optimieren. Egal, ob du ein erfahrener Investor bist oder gerade erst anfängst, Ghostfolio bietet eine intuitive Benutzeroberfläche und eine Vielzahl an Funktionen, die dir dabei helfen, fundierte Entscheidungen zu treffen und die Kontrolle über deine finanzielle Zukunft zu übernehmen. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio ist eine Open Source Software (OSS), die eine kostengünstige Alternative zu darstellt und sich besonders für Personen mit knappem Budget eignet, wie z.B. für diejenigen, die finanzielle Unabhängigkeit und einen frühen Ruhestand anstreben (FIRE). Ghostfolio nutzt die gemeinsamen Aktivitäten einer Community von Entwicklern und Finanzenthusiasten, um seine Funktionalität, Sicherheit und Benutzerfreundlichkeit kontinuierlich zu verbessern. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Wir möchten uns in der untenstehenden Ghostfolio vs Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + open-source-alternative-zu + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 324 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Bereit, deine Investitionen auf ein neues Levelzu bringen? - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Jetzt loslegen - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Schweiz apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + 57 - - - privacy-policy - datenschutzbestimmungen - snake-case - apps/client/src/app/app.component.ts - 76 + libs/ui/src/lib/i18n.ts + 93 + + + Global + Weltweit - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/ui/src/lib/i18n.ts + 16 - - license - lizenz - snake-case + + (Last 24 hours) + (Letzte 24 Stunden) - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Letzte 30 Tage) - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/open/open-page.html + 59 - - markets - maerkte - snake-case + + (Last 90 days) + (Letzte 90 Tage) - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Wähle eine Datei aus oder ziehe sie hierhin - apps/client/src/app/components/header/header.component.ts + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 + + + You are using the Live Demo. + Du verwendest die Live Demo. - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Ausschüttung von Unternehmensgewinnen - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Fee + Gebühr - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + libs/ui/src/lib/i18n.ts + 37 + + + Interest + Zins - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 + + + Revenue for lending out money + Ertrag für das Ausleihen von Geld - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Tag hinzufügen - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - pricing - preise - snake-case + + Do you really want to delete this tag? + Möchtest du diesen Tag wirklich löschen? - apps/client/src/app/app.component.ts + apps/client/src/app/components/admin-tag/admin-tag.component.ts 85 + + + Update tag + Tag bearbeiten - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Tag hinzufügen - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Currency Cluster Risks + Währungsklumpenrisiken - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 + + + Account Cluster Risks + Kontoklumpenrisiken - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 + + + Transfer Cash Balance + Cash-Bestand Transfer - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Version + Version - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Einstellungen - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + Von - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + Nach - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transferieren - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Mitgliedschaft - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 31 + + + Access + Zugang - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 26 + + + Asset Profile + Anlageprofil - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Möchtest du dieses Anlageprofil wirklich löschen? - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Search + Suche - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Manuell hinzufügen - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Mit dem Finanz-Dashboard Ghostfolio kannst du dein Vermögen in Cash, Aktien, ETFs und Kryptowährungen über mehrere Finanzinstitute überwachen. - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Letztes Allzeithoch - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 - - register - registrierung - snake-case + + User + Benutzer - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs Vergleichstabelle - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + Open Source Wealth Management Software + Open Source Software für die Vermögensverwaltung - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/pages/i18n/i18n-page.html + 97 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 - apps/client/src/app/core/paths.ts + apps/client/src/app/pages/i18n/i18n-page.html 9 + + + Oops, cash balance transfer has failed. + Ups, der Cash-Bestand Transfer ist fehlgeschlagen. - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 + + + Extreme Fear + Extreme Angst - apps/client/src/app/pages/features/features-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 100 + + + Extreme Greed + Extreme Gier - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 101 + + + Neutral + Neutral - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + libs/ui/src/lib/i18n.ts + 104 - - resources - ressourcen - snake-case + + Oops! Could not parse historical data. + Ups! Die historischen Daten konnten nicht geparsed werden. - apps/client/src/app/app.component.ts - 87 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 + + + Do you really want to delete this system message? + Möchtest du diese Systemmeldung wirklich löschen? - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + 50-Day Trend + 50 Tage Trend - apps/client/src/app/components/header/header.component.ts - 92 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend + 200 Tage Trend - apps/client/src/app/core/paths.ts - 10 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Cash Balances + Cash-Bestände - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Starting from + Ab - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 + + + year + Jahr - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 + + + Do you really want to delete this account balance? + Möchtest du diesen Cash-Bestand wirklich löschen? - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + If a translation is missing, kindly support us in extending it here. + Wenn eine Übersetzung fehlt, unterstütze uns bitte dabei, sie hier zu ergänzen. - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 + + + The current market price is + Der aktuelle Marktpreis ist - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 + + + Test + Test - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 + + + Date Range + Zeitraum - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/ui/src/lib/assistant/assistant.html + 130 + + + Permission + Rechte - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Diese Übersichtsseite zeigt eine Auswahl an Tools zur Verwaltung der persönliche Finanzen im Vergleich zur Open Source Alternative Ghostfolio. Wenn du Wert auf Transparenz, Datenschutz und die gemeinschaftliche Zusammenarbeit der Open Source Community legst, bietet dir Ghostfolio eine ausgezeichnete Möglichkeit, die Kontrolle über dein Finanzmanagement zu übernehmen. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Über die Links unten kannst du eine Reihe an Tools mit Ghostfolio vergleichen. + + Restricted view + Eingeschränkte Ansicht - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Open Source Alternative to - Open Source Alternative zu - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Open Source Alternative to - Open Source Alternative zu + + Oops! Could not grant access. + Ups! Der Zugang konnte nicht gewährt werden. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - The Open Source Alternative to - Die Open Source Alternative zu + + Private + Privat - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Suchst du nach einer Open Source Alternative zu ? Ghostfolio ist ein leistungsstarkes Portfolio Management Tool, das Privatpersonen eine umfassende Plattform bietet, um ihre Investitionen zu verfolgen, zu analysieren und zu optimieren. Egal, ob du ein erfahrener Investor bist oder gerade erst anfängst, Ghostfolio bietet eine intuitive Benutzeroberfläche und eine Vielzahl an Funktionen, die dir dabei helfen, fundierte Entscheidungen zu treffen und die Kontrolle über deine finanzielle Zukunft zu übernehmen. + + Job Queue + Job Warteschlange - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + libs/common/src/lib/routes/routes.ts + 46 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio ist eine Open Source Software (OSS), die eine kostengünstige Alternative zu darstellt und sich besonders für Personen mit knappem Budget eignet, wie z.B. für diejenigen, die finanzielle Unabhängigkeit und einen frühen Ruhestand anstreben (FIRE). Ghostfolio nutzt die gemeinsamen Aktivitäten einer Community von Entwicklern und Finanzenthusiasten, um seine Funktionalität, Sicherheit und Benutzerfreundlichkeit kontinuierlich zu verbessern. + + Market data is delayed for + Die Marktdaten sind verzögert für - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Wir möchten uns in der untenstehenden Ghostfolio vs Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. + + Investment + Investition - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - open-source-alternative-to - open-source-alternative-zu - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. + + Absolute Asset Performance + Absolute Anlage Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Ready to take your investments to the next level? - Bereit, deine Investitionen auf ein neues Levelzu bringen? + + Asset Performance + Anlage Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Get Started - Jetzt loslegen + + Absolute Currency Performance + Absolute Währungsperformance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Switzerland - Schweiz + + Currency Performance + Währungsperformance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 + + + Absolute Net Performance + Absolute Netto Performance - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - Global - Weltweit + + Net Performance + Netto Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 + + + Week to date + Seit Wochenbeginn - libs/ui/src/lib/i18n.ts - 16 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - (Last 24 hours) - (Letzte 24 Stunden) + + WTD + WTD - apps/client/src/app/pages/open/open-page.html - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - (Last 30 days) - (Letzte 30 Tage) + + Month to date + Seit Monatsbeginn - apps/client/src/app/pages/open/open-page.html - 48 + libs/ui/src/lib/assistant/assistant.component.ts + 348 + + + MTD + MTD - apps/client/src/app/pages/open/open-page.html - 59 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - (Last 90 days) - (Letzte 90 Tage) + + Year to date + Seit Jahresbeginn - apps/client/src/app/pages/open/open-page.html - 127 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Choose or drop a file here - Wähle eine Datei aus oder ziehe sie hierhin + + View + Ansicht - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - You are using the Live Demo. - Du verwendest die Live Demo. - apps/client/src/app/app.component.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - One-time fee, annual account fees - Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren + + Oops! A data provider is experiencing the hiccups. + Ups! Ein Datenprovider-Partner hat gerade ein Problem. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Distribution of corporate earnings - Ausschüttung von Unternehmensgewinnen + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Wenn du heute in den Ruhestand gehen würdest, könnest du pro Jahr oder pro Monatentnehmen, bezogen auf dein Gesamtanlagevermögen von und einer Entnahmerate von 4%. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Fee - Gebühr + + Reset Filters + Filter zurücksetzen - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.html + 224 - - Interest - Zins + + year + Jahr - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Revenue for lending out money - Ertrag für das Ausleihen von Geld + + years + Jahre - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Add Tag - Tag hinzufügen + + Apply Filters + Filter anwenden - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + libs/ui/src/lib/assistant/assistant.html + 234 - - Do you really want to delete this tag? - Möchtest du diesen Tag wirklich löschen? + + Data Gathering + Finanzmarktdaten synchronisieren - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Update tag - Tag bearbeiten - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - Add tag - Tag hinzufügen + + General + Allgemein - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Currency Cluster Risks - Währungsklumpenrisiken + + Cloud + Cloud - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Account Cluster Risks - Kontoklumpenrisiken - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + libs/common/src/lib/routes/routes.ts + 240 - - Transfer Cash Balance - Cash-Bestand Transfer + + Self-Hosting + Self-Hosting - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + libs/common/src/lib/routes/routes.ts + 248 - - Benchmark - Benchmark + + self-hosting + self-hosting + kebab-case - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + libs/common/src/lib/routes/routes.ts + 243 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + libs/common/src/lib/routes/routes.ts + 246 - - Settings - Einstellungen + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Ups! Es sieht so aus, als würdest du zu viele Anfragen senden. Bitte geh es ein bisschen langsamer an. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - From - Von + + My Account + Mein Konto - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - To - Nach + + Active + Aktiv - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 - - Transfer - Transferieren + + Closed + Abgeschlossen - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Membership - Mitgliedschaft + + Activity + Aktivität - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 + + + Dividend Yield + Dividendenrendite - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - Access - Zugang + + Execute Job + Job ausführen - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 + + + Priority + Priorität - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - Find holding... - Finde Position... + + This action is not allowed. + Diese Aktion ist nicht zulässig. - libs/ui/src/lib/assistant/assistant.component.ts - 143 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - No entries... - Keine Einträge vorhanden... + + Liquidity + Liquidität - libs/ui/src/lib/assistant/assistant.html - 62 + libs/ui/src/lib/i18n.ts + 48 + + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {Aktivität} other {Aktivitäten}} - libs/ui/src/lib/assistant/assistant.html - 85 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Asset Profile - Anlageprofil + + Buy and sell + Kauf und Verkauf - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + libs/ui/src/lib/i18n.ts + 8 - - Do you really want to delete this asset profile? - Möchtest du dieses Anlageprofil wirklich löschen? + + Delete Activities + Aktivitäten löschen - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Search - Suche + + Internationalization + Internationalisierung - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + libs/common/src/lib/routes/routes.ts + 119 - - Add Manually - Manuell hinzufügen + + Do you really want to close your Ghostfolio account? + Möchtest du dieses Ghostfolio Konto wirklich schliessen? - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Mit dem Finanz-Dashboard Ghostfolio kannst du dein Vermögen in Cash, Aktien, ETFs und Kryptowährungen über mehrere Finanzinstitute überwachen. + + Danger Zone + Gefahrenzone - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Last All Time High - Letztes Allzeithoch + + Close Account + Konto schliessen - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - User - Benutzer + + By ETF Holding + Nach ETF Position - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Ghostfolio vs comparison table - Ghostfolio vs Vergleichstabelle + + Approximation based on the top holdings of each ETF + Annäherung auf Basis der grössten Positionen pro ETF - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Open Source Wealth Management Software - Open Source Software für die Vermögensverwaltung + + Join now or check out the example account + Melde dich jetzt an oder probiere die Live Demo aus - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/landing/landing-page.html + 434 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Oops, cash balance transfer has failed. - Ups, der Cash-Bestand Transfer ist fehlgeschlagen. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 - - - - Extreme Fear - Extreme Angst - - libs/ui/src/lib/i18n.ts - 100 - - - - Extreme Greed - Extreme Gier - - libs/ui/src/lib/i18n.ts - 101 - - - - Neutral - Neutral - - libs/ui/src/lib/i18n.ts - 104 - - - - Oops! Could not parse historical data. - Ups! Die historischen Daten konnten nicht geparsed werden. - - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 - - - - Do you really want to delete this system message? - Möchtest du diese Systemmeldung wirklich löschen? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 - - - - 50-Day Trend - 50 Tage Trend - - libs/ui/src/lib/benchmark/benchmark.component.html - 16 - - - - 200-Day Trend - 200 Tage Trend - - libs/ui/src/lib/benchmark/benchmark.component.html - 45 - - - - Cash Balances - Cash-Bestände - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 - - - - Starting from - Ab - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 - - - - year - Jahr - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 - - - - Do you really want to delete this account balance? - Möchtest du diesen Cash-Bestand wirklich löschen? - - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 - - - - If a translation is missing, kindly support us in extending it here. - Wenn eine Übersetzung fehlt, unterstütze uns bitte dabei, sie hier zu ergänzen. - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 - - - - The current market price is - Der aktuelle Marktpreis ist - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 - - - - Test - Test - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 - - - - Date Range - Zeitraum - - libs/ui/src/lib/assistant/assistant.html - 95 - - - - Permission - Rechte - - apps/client/src/app/components/access-table/access-table.component.html - 18 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - - - - Restricted view - Eingeschränkte Ansicht - - apps/client/src/app/components/access-table/access-table.component.html - 26 - + + Oops! There was an error setting up biometric authentication. + Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Oops! Could not grant access. - Ups! Der Zugang konnte nicht gewährt werden. + + Show more + Mehr anzeigen - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Private - Privat + + Benchmarks + Benchmarks - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - Job Queue - Job Warteschlange - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 - + + Delete Profiles + Profile löschen - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Market data is delayed for - Die Marktdaten sind verzögert für + + Do you really want to delete these profiles? + Möchtest du diese Profile wirklich löschen? - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Investment - Einlage + + Oops! Could not delete profiles. + Ups! Die Profile konnten nicht gelöscht werden. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 56 - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 - - - - Absolute Asset Performance - Absolute Anlage Performance - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 - - - Asset Performance - Anlage Performance - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 - - - - Absolute Currency Performance - Absolute Währungsperformance - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 - - - - Currency Performance - Währungsperformance + + Table + Tabelle - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 - - Absolute Net Performance - Absolute Netto Performance + + Chart + Diagramm - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Net Performance - Netto Performance + + Would you like to refine your personal investment strategy? + Möchtest du deine persönliche Anlagestrategie verfeinern? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html + apps/client/src/app/pages/public/public-page.html 211 - - Week to date - Seit Wochenbeginn + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - WTD - WTD + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Month to date - Seit Monatsbeginn + + Budgeting + Budgetierung - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - MTD - MTD + + Community + Community - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Year to date - Seit Jahresbeginn + + Family Office + Family Office - libs/ui/src/lib/assistant/assistant.component.ts - 230 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - View - Ansicht - - apps/client/src/app/components/access-table/access-table.component.html - 23 - + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - Oops! A data provider is experiencing the hiccups. - Ups! Ein Datenprovider-Partner hat gerade ein Problem. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Wenn du heute in den Ruhestand gehen würdest, könnest du pro Jahr oder pro Monatentnehmen, bezogen auf dein Gesamtanlagevermögen von und einer Entnahmerate von 4%. + + Personal Finance + Persönliche Finanzen - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Reset Filters - Filter zurücksetzen + + Privacy + Datenschutz - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - year - Jahr + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - years - Jahre + + Tool + Tool - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Apply Filters - Filter anwenden + + User Experience + User Experience - libs/ui/src/lib/assistant/assistant.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - Data Gathering - Finanzmarktdaten synchronisieren + + Wealth + Vermögen - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 + + + Wealth Management + Vermögensverwaltung - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - General - Allgemein + + Australia + Australien - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 74 - - Cloud - Cloud + + Austria + Österreich - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + libs/ui/src/lib/i18n.ts + 75 + + + Belgium + Belgien - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgarien - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 78 + + + Canada + Kanada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - self-hosting - self-hosting + + Czech Republic + Tschechien - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/ui/src/lib/i18n.ts + 80 - - FAQ - Häufig gestellte Fragen + + Finland + Finnland - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 81 + + + France + Frankreich - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 82 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Ups! Es sieht so aus, als würdest du zu viele Anfragen senden. Bitte geh es ein bisschen langsamer an. + + Germany + Deutschland - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 83 - - My Account - Mein Konto + + India + Indien - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 84 - - Active - Aktiv + + Italy + Italien - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 85 - - Closed - Abgeschlossen + + Netherlands + Niederlande - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + libs/ui/src/lib/i18n.ts + 87 - - Activity - Aktivität + + New Zealand + Neuseeland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 88 - - Dividend Yield - Dividendenrendite + + Poland + Polen - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 89 - - Execute Job - Job ausführen + + Romania + Rumänien - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 90 - - Priority - Priorität + + South Africa + Südafrika - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 92 - - This action is not allowed. - Diese Aktion ist nicht zulässig. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 64 + libs/ui/src/lib/i18n.ts + 94 - - Liquidity - Liquidität + + United States + USA libs/ui/src/lib/i18n.ts - 48 + 97 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {Aktivität} other {Aktivitäten}} + + Error + Fehler - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - Buy and sell - Kauf und Verkauf + + Deactivate + Deaktivieren - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/components/rule/rule.component.html + 72 - - Delete Activities - Aktivitäten löschen + + Activate + Aktivieren - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/components/rule/rule.component.html + 74 - - Internationalization - Internationalisierung + + Inactive + Inaktiv - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Do you really want to close your Ghostfolio account? - Möchtest du dieses Ghostfolio Konto wirklich schliessen? + + Cancel + Abbrechen - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/ui/src/lib/i18n.ts + 9 - - Danger Zone - Gefahrenzone + + Close + Schliessen - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + libs/ui/src/lib/i18n.ts + 11 - - Close Account - Konto schliessen + + Yes + Ja - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + libs/ui/src/lib/i18n.ts + 32 - - By ETF Holding - Nach ETF Position + + Copy link to clipboard + Link in die Zwischenablage kopieren - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Approximation based on the top holdings of each ETF - Annäherung auf Basis der grössten Positionen pro ETF + + Portfolio Snapshot + Portfolio Snapshot - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Join now or check out the example account - Melde dich jetzt an oder probiere die Live Demo aus + + Change with currency effect Change + Änderung mit Währungseffekt Änderung - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Oops! There was an error setting up biometric authentication. - Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. + + Performance with currency effect Performance + Performance mit Währungseffekt Performance - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Show more - Mehr anzeigen + + Threshold Min + Schwellenwert (Minimum) - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Benchmarks - Benchmarks + + Threshold Max + Schwellenwert (Maximum) - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Delete Profiles - Profile löschen + + Close + Schliessen - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Do you really want to delete these profiles? - Möchtest du diese Profile wirklich löschen? + + Customize + Anpassen - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/rule/rule.component.html + 67 - - Oops! Could not delete profiles. - Ups! Die Profile konnten nicht gelöscht werden. + + No auto-renewal. + Keine automatische Erneuerung. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Table - Tabelle + + Today + Heute - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 24 - - Chart - Diagramm + + This year + Dieses Jahr - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/pages/public/public-page.html + 42 - - Would you like to refine your personal investment strategy? - Möchtest du deine persönliche Anlagestrategie verfeinern? + + From the beginning + Seit Beginn apps/client/src/app/pages/public/public-page.html - 211 + 60 - - Alternative - Alternative + + Oops! Invalid currency. + Ups! Ungültige Währung. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - App - App + + This page has been archived. + Diese Seite wurde archiviert. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Budgeting - Budgetierung + + is Open Source Software + ist Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Community - Community + + is not Open Source Software + ist keine Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Family Office - Family Office + + is Open Source Software + ist Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Investor - Investor + + is not Open Source Software + ist keine Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Open Source - Open Source + + can be self-hosted + kann selbst gehostet werden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Personal Finance - Persönliche Finanzen - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + + cannot be self-hosted + kann nicht selbst gehostet werden + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Privacy - Datenschutz + + can be self-hosted + kann selbst gehostet werden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Software - Software + + cannot be self-hosted + kann nicht selbst gehostet werden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Tool - Tool + + can be used anonymously + kann anonym genutzt werden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - User Experience - User Experience + + cannot be used anonymously + kann nicht anonym genutzt werden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Wealth - Vermögen + + can be used anonymously + kann anonym genutzt werden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Wealth Management - Vermögensverwaltung + + cannot be used anonymously + kann nicht anonym genutzt werden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Australia - Australien + + offers a free plan + hat ein kostenloses Angebot - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Austria - Österreich + + does not offer a free plan + hat kein kostenloses Angebot - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Belgium - Belgien + + offers a free plan + hat ein kostenloses Angebot - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Bulgaria - Bulgarien + + does not offer a free plan + hat kein kostenloses Angebot - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Canada - Kanada + + Oops! Could not find any assets. + Ups! Es konnten leider keine Assets gefunden werden. - libs/ui/src/lib/i18n.ts - 79 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Czech Republic - Tschechien + + Data Providers + Datenanbieter - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Finland - Finnland + + Set API key + API-Schlüssel setzen - libs/ui/src/lib/i18n.ts - 81 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - France - Frankreich + + Get access to 80’000+ tickers from over 50 exchanges + Erhalte Zugang zu 80’000+ Tickern von über 50 Handelsplätzen libs/ui/src/lib/i18n.ts - 82 + 24 - - Germany - Deutschland + + Ukraine + Ukraine libs/ui/src/lib/i18n.ts - 83 + 95 - - India - Indien + + Join now + Jetzt teilnehmen - libs/ui/src/lib/i18n.ts - 84 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Italy - Italien + + Glossary + Lexikon - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - Netherlands - Niederlande - libs/ui/src/lib/i18n.ts - 87 + libs/common/src/lib/routes/routes.ts + 293 - - New Zealand - Neuseeland + + Guides + Ratgeber - libs/ui/src/lib/i18n.ts - 88 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Poland - Polen - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 301 - - Romania - Rumänien + + guides + ratgeber + kebab-case - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 296 - - - South Africa - Südafrika - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 299 - - Thailand - Thailand + + glossary + lexikon + kebab-case - libs/ui/src/lib/i18n.ts - 94 + libs/common/src/lib/routes/routes.ts + 288 - - - United States - USA - libs/ui/src/lib/i18n.ts - 97 + libs/common/src/lib/routes/routes.ts + 291 - - Error - Fehler + + Threshold range + Schwellenwertbereich - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Deactivate - Deaktivieren + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray nutzt statische Analysen, um potenzielle Probleme und Risiken in deinem Portfolio aufzudecken. Passe die untenstehenden Regeln an und lege individuelle Schwellenwerte fest, um sie mit deiner persönlichen Anlagestrategie abzustimmen. - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Activate - Aktivieren + + Economic Market Cluster Risks + Wirtschaftsraumklumpenrisiken - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 + + + + of + von + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Inactive - Inaktiv + + daily requests + täglichen Anfragen - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Cancel - Abbrechen + + Remove API key + API-Schlüssel löschen - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Close - Schliessen + + Do you really want to delete the API key? + Möchtest du den API-Schlüssel wirklich löschen? - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Yes - Ja + + Please enter your Ghostfolio API key: + Bitte gib den API-Schlüssel ein: - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Copy link to clipboard - Link in die Zwischenablage kopieren + + API Requests Today + Heutige API Anfragen - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Portfolio Snapshot - Portfolio Snapshot + + Could not generate an API key + API-Schlüssel konnte nicht erstellt werden - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Change with currency effect Change - Änderung mit Währungseffekt Änderung + + Set this API key in your self-hosted environment: + Setze diesen API-Schlüssel in deiner selbst gehosteten Umgebung: - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Performance with currency effect Performance - Performance mit Währungseffekt Performance + + Ghostfolio Premium Data Provider API Key + API-Schlüssel für den Ghostfolio Premium Datenanbieter - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Threshold Min - Schwellenwert (Minimum) + + Do you really want to generate a new API key? + Möchtest du wirklich einen neuen API-Schlüssel erstellen? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Max - Schwellenwert (Maximum) + + Tag + Tag - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/assistant/assistant.html + 194 - - Close - Schliessen + + API Key + API-Schlüssel - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Customize - Anpassen + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Ghostfolio Premium Datenanbieter API-Schlüssel für selbst gehostete Umgebungen erstellen... - apps/client/src/app/components/rule/rule.component.html - 67 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - No auto-renewal. - Keine automatische Erneuerung. + + out of + von - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - Today - Heute + + rules align with your portfolio. + Regeln werden von deinem Portfolio erfüllt. - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - This year - Dieses Jahr + + Save + Speichern - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - From the beginning - Seit Beginn + + Asset Class Cluster Risks + Anlageklasseklumpenrisiken - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - Oops! Invalid currency. - Ups! Ungültige Währung. + + Me + Ich - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - This page has been archived. - Diese Seite wurde archiviert. + + Received Access + Erhaltene Zugangsberechtigung - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - is Open Source Software - ist Open Source Software + + Please enter your Ghostfolio API key. + Bitte gebe deinen Ghostfolio API-Schlüssel ein. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is not Open Source Software - ist keine Open Source Software + + AI prompt has been copied to the clipboard + KI-Anweisung wurde in die Zwischenablage kopiert - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is Open Source Software - ist Open Source Software + + Link has been copied to the clipboard + Link wurde in die Zwischenablage kopiert - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is not Open Source Software - ist keine Open Source Software + + Regional Market Cluster Risks + Regionale Marktklumpenrisiken - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - can be self-hosted - kann selbst gehostet werden + + Lazy + Verzögert - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be self-hosted - kann nicht selbst gehostet werden + + Instant + Sofort - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - can be self-hosted - kann selbst gehostet werden + + Default Market Price + Standardmarktpreis - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - cannot be self-hosted - kann nicht selbst gehostet werden + + Mode + Modus - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - can be used anonymously - kann anonym genutzt werden + + Selector + Selektor - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - cannot be used anonymously - kann nicht anonym genutzt werden + + HTTP Request Headers + HTTP Request-Headers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - can be used anonymously - kann anonym genutzt werden + + end of day + Tagesende - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be used anonymously - kann nicht anonym genutzt werden + + real-time + in Echtzeit - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - offers a free plan - hat ein kostenloses Angebot + + Open Duck.ai + Öffne Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - does not offer a free plan - hat kein kostenloses Angebot + + Create + Erstelle - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - offers a free plan - hat ein kostenloses Angebot + + Market Data + Marktdaten - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - does not offer a free plan - hat kein kostenloses Angebot + + Change + Änderung - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - Oops! Could not find any assets. - Ups! Es konnten leider keine Assets gefunden werden. + + Performance + Performance - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Data Providers - Datenanbieter - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Set API key - API-Schlüssel setzen + + Copy portfolio data to clipboard for AI prompt + Kopiere Portfolio-Daten in die Zwischenablage für KI-Anweisung - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Get access to 80’000+ tickers from over 50 exchanges - Erhalte Zugang zu 80’000+ Tickern von über 50 Handelsplätzen + + Copy AI prompt to clipboard for analysis + Kopiere KI-Anweisung in die Zwischenablage für Analyse - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Ukraine - Ukraine + + Armenia + Armenien libs/ui/src/lib/i18n.ts - 95 + 73 - - Join now - Jetzt teilnehmen + + British Virgin Islands + Britische Jungferninseln - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 77 - - Glossary - Lexikon + + Singapore + Singapur - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + libs/ui/src/lib/i18n.ts + 91 + + + Terms and Conditions + Nutzungsbedingungen - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Guides - Ratgeber + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Bitte bewahre dein Sicherheits-Token sicher auf. Wenn du es verlierst, kannst du dein Benutzerkonto nicht wiederherstellen. - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + Ich nehme zur Kenntnis, dass ich mein Benutzerkonto nicht wiederherstellen kann, wenn ich mein Sicherheits-Token verliere - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - guides - ratgeber - snake-case + + Continue + Weiter - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Hier ist dein Sicherheits-Token. Es ist nur ein einziges Mal sichtbar. Bitte bewahre es sicher auf. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - glossary - lexikon - snake-case + + Security token + Sicherheits-Token - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Threshold range - Schwellenwertbereich + + Do you really want to generate a new security token for this user? + Möchtest du für diesen Benutzer wirklich ein neues Sicherheits-Token generieren? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray nutzt statische Analysen, um potenzielle Probleme und Risiken in deinem Portfolio aufzudecken. Passe die untenstehenden Regeln an und lege individuelle Schwellenwerte fest, um sie mit deiner persönlichen Anlagestrategie abzustimmen. + + Generate Security Token + Sicherheits-Token generieren - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Economic Market Cluster Risks - Wirtschaftsraumklumpenrisiken + + United Kingdom + Vereinigtes Königreich - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + libs/ui/src/lib/i18n.ts + 96 - - of - von + + Terms of Service + Allgemeine Geschäftsbedingungen - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/app.component.html + 112 - - daily requests - täglichen Anfragen + + terms-of-service + allgemeine-geschaeftsbedingungen + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/common/src/lib/routes/routes.ts + 212 - - - Remove API key - API-Schlüssel löschen - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + libs/common/src/lib/routes/routes.ts + 215 - - Do you really want to delete the API key? - Möchtest du den API-Schlüssel wirklich löschen? + + Terms of Service + Allgemeine Geschäftsbedingungen - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 217 - - Please enter your Ghostfolio API key: - Bitte gib den API-Schlüssel ein: + + Terms of Service + Allgemeine Geschäftsbedingungen - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - I have an API key - Ich habe einen API-Schlüssel + + and I agree to the Terms of Service. + und ich stimme den Allgemeinen Geschäftsbedingungen zu. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - API Requests Today - Heutige API Anfragen + + () is already in use. + () wird bereits verwendet. - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Could not generate an API key - API-Schlüssel konnte nicht erstellt werden + + An error occurred while updating to (). + Bei der Änderung zu () ist ein Fehler aufgetreten. - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Set this API key in your self-hosted environment: - Setze diesen API-Schlüssel in deiner selbst gehosteten Umgebung: + + Apply + Übernehmen - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Ghostfolio Premium Data Provider API Key - API-Schlüssel für den Ghostfolio Premium Datenanbieter + + with API access for + inklusive API-Zugriff für - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Do you really want to generate a new API key? - Möchtest du wirklich einen neuen API-Schlüssel erstellen? + + Data Gathering is off + Finanzmarktdaten synchronisieren ist deaktiviert - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - Tag - Tag + + Performance Calculation + Performance Berechnung - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - API Key - API-Schlüssel + + someone + jemand - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Ghostfolio Premium Datenanbieter API-Schlüssel für selbst gehostete Umgebungen erstellen... + + Add asset to watchlist + Anlage zur Beobachtungsliste hinzufügen - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - out of - von + + Watchlist + Beobachtungsliste - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - rules align with your portfolio. - Regeln werden von Ihrem Portfolio erfüllt. - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/pages/features/features-page.html + 197 - - Save - Speichern + + Watchlist + Beobachtungsliste - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + libs/common/src/lib/routes/routes.ts + 110 - - Asset Class Cluster Risks - Anlageklasseklumpenrisiken + + Do you really want to delete this item? + Möchtest du diesen Eintrag wirklich löschen? - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - Me - Ich + + Log out + Ausloggen - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/components/header/header.component.html + 329 - - Received Access - Erhaltene Zugangsberechtigung + + Calculations are based on delayed market data and may not be displayed in real-time. + Berechnungen basieren auf verzögerten Marktdaten und werden nicht in Echtzeit angezeigt. - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Please enter your Ghostfolio API key. - Bitte gebe deinen Ghostfolio API-Schlüssel ein. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + apps/client/src/app/components/markets/markets.html + 52 - - AI prompt has been copied to the clipboard - KI-Anweisung wurde in die Zwischenablage kopiert + + changelog + changelog + kebab-case - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + libs/common/src/lib/routes/routes.ts + 180 - - - Link has been copied to the clipboard - Link wurde in die Zwischenablage kopiert - apps/client/src/app/components/access-table/access-table.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 183 - - Early Access - Early Access + + Demo user account has been synced. + Demo Benutzerkonto wurde synchronisiert. - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Regional Market Cluster Risks - Regionale Marktklumpenrisiken + + Sync Demo User Account + Synchronisiere Demo Benutzerkonto - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Lazy - Verzögert + + Emergency Fund: Set up + Notfallfonds: Einrichtung - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Instant - Sofort + + No emergency fund has been set up + Es wurde kein Notfallfonds eingerichtet - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - Default Market Price - Standardmarktpreis + + An emergency fund has been set up + Ein Notfallfonds wurde eingerichtet - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - Mode - Modus + + Fee Ratio + Gebührenverhältnis - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - Selector - Selektor + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - HTTP Request Headers - HTTP Request-Headers + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) nicht - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - end of day - Tagesende + + Name + Name - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - real-time - in Echtzeit + + Find holding or page... + Position oder Seite finden... - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Open Duck.ai - Öffne Duck.ai + + Quick Links + Schnellzugriff - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + libs/ui/src/lib/assistant/assistant.html + 43 - - Create - Erstelle + + Asset Profiles + Anlageprofile - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/assistant/assistant.html + 99 - - Market Data - Marktdaten + + Live Demo + Live Demo - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/common/src/lib/routes/routes.ts + 231 - - Change - Änderung + + Open Source Alternative to + Open Source Alternative zu - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/common/src/lib/routes/routes.ts + 326 - - Performance - Performance + + Single Account + Einzelkonto - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + apps/client/src/app/pages/i18n/i18n-page.html + 24 + + + Your net worth is managed by a single account + Dein Gesamtvermögen wird von einem einzigen Konto verwaltet - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - Copy portfolio data to clipboard for AI prompt - Kopiere Portfolio-Daten in die Zwischenablage für KI-Anweisung + + Your net worth is managed by ${accountsLength} accounts + Dein Gesamtvermögen wird von ${accountsLength} Konten verwaltet - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Copy AI prompt to clipboard for analysis - Kopiere KI-Anweisung in die Zwischenablage für Analyse + + Holdings + Positionen - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + libs/ui/src/lib/assistant/assistant.html + 69 - - Armenia - Armenien + + personal-finance-tools + tools-fuer-persoenliche-finanzen + kebab-case - libs/ui/src/lib/i18n.ts - 73 + libs/common/src/lib/routes/routes.ts + 312 - - - British Virgin Islands - Britische Jungferninseln - libs/ui/src/lib/i18n.ts - 77 + libs/common/src/lib/routes/routes.ts + 315 - - - Singapore - Singapur - libs/ui/src/lib/i18n.ts - 91 + libs/common/src/lib/routes/routes.ts + 323 - - Terms and Conditions - Nutzungsbedingungen + + markets + maerkte + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 304 + + + libs/common/src/lib/routes/routes.ts + 307 - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Bitte bewahre dein Sicherheits-Token sicher auf. Wenn du es verlierst, kannst du dein Benutzerkonto nicht wiederherstellen. + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Erweitere dein selbst gehostetes Ghostfolio durch einen leistungsstarken Datenanbieter mit Zugriff auf über 80’000 Ticker von mehr als 50 Börsen weltweit. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - I understand that if I lose my security token, I cannot recover my account - Ich nehme zur Kenntnis, dass ich mein Benutzerkonto nicht wiederherstellen kann, wenn ich mein Sicherheits-Token verliere + + Get Access + Zugang erhalten - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Continue - Weiter + + Learn more + Mehr erfahren - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Hier ist dein Sicherheits-Token. Es ist nur ein einziges Mal sichtbar. Bitte bewahre es sicher auf. + + new + neu - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + apps/client/src/app/components/admin-settings/admin-settings.component.html 67 - - Security token - Sicherheits-Token + + Limited Offer! + Begrenztes Angebot! - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - Do you really want to generate a new security token for this user? - Möchtest du für diesen Benutzer wirklich einen neuen Sicherheits-Token generieren? + + Get extra + Erhalte extra - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/pages/pricing/pricing-page.html + 313 - - Generate Security Token - Sicherheits-Token generieren + + Available + Verfügbar - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 - - United Kingdom - Vereinigtes Königreich + + Unavailable + Nicht verfügbar - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 - - Terms of Service - Allgemeine Geschäftsbedingungen + + new + neu - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - terms-of-service - allgemeine-geschaeftsbedingungen - snake-case + + Investment + Investition - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Über ${thresholdMax}% deiner aktuellen Investition ist bei ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/pages/i18n/i18n-page.html + 15 + + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + Der Hauptteil deiner aktuellen Investition ist bei ${maxAccountName} (${maxInvestmentRatio}%) und übersteigt ${thresholdMax}% nicht - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/i18n/i18n-page.html + 19 + + + Equity + Beteiligungskapital - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - Terms of Service - Allgemeine Geschäftsbedingungen + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + Der Beteiligungskapitalanteil deiner aktuellen Investition (${equityValueRatio}%) übersteigt ${thresholdMax}% - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 32 + + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + Der Beteiligungskapitalanteil deiner aktuellen Investition (${equityValueRatio}%) liegt unter ${thresholdMin}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Terms of Service - Allgemeine Geschäftsbedingungen + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + Der Beteiligungskapitalanteil deiner aktuellen Investition (${equityValueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - and I agree to the Terms of Service. - und ich stimme den Allgemeinen Geschäftsbedingungen zu. + + Fixed Income + Feste Einkünfte - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - () is already in use. - () wird bereits verwendet. + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + Der Anteil der festen Einkünfte deiner aktuellen Investition (${fixedIncomeValueRatio}%) übersteigt ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - An error occurred while updating to (). - Bei der Änderung zu () ist ein Fehler aufgetreten. + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + Der Anteil der festen Einkünfte deiner aktuellen Investition (${fixedIncomeValueRatio}%) liegt unter ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Apply - Übernehmen + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + Der Anteil der festen Einkünfte deiner aktuellen Investition (${fixedIncomeValueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - with API access for - inklusive API-Zugriff für + + Investment: Base Currency + Investition: Basiswährung - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Data Gathering is off - Finanzmarktdaten synchronisieren ist deaktiviert + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + Der Hauptteil deiner aktuellen Investition ist nicht in deiner Basiswährung (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - Performance Calculation - Performance Berechnung + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + Der Hauptteil deiner aktuellen Investition ist in deiner Basiswährung (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - someone - jemand + + Investment + Investition - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Add asset to watchlist - Anlage zur Beobachtungsliste hinzufügen + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Über ${thresholdMax}% deiner aktuellen Investition ist in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 72 - - Watchlist - Beobachtungsliste + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + Der Hauptteil deiner aktuellen Investition ist in ${currency} (${maxValueRatio}%) und übersteigt ${thresholdMax}% nicht - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + + start + start + kebab-case - apps/client/src/app/pages/features/features-page.html - 197 + libs/common/src/lib/routes/routes.ts + 336 - - - Watchlist - Beobachtungsliste - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 337 + + + Do you really want to generate a new security token? + Möchtest du wirklich ein neues Sicherheits-Token generieren? - apps/client/src/app/pages/home/home-page.component.ts - 53 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Get Early Access - Early Access erhalten + + Generate + Generieren - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Do you really want to delete this item? - Möchtest du diesen Eintrag wirklich löschen? + + Stocks + Aktien - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/markets/markets.component.ts + 54 - - Log out - Ausloggen + + Cryptocurrencies + Kryptowährungen - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index de9f07c8d..8b5bbd6b6 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -103,7 +103,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -111,11 +111,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 224 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -147,11 +147,11 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + 46 apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -163,16 +163,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + 139 libs/ui/src/lib/activities-table/activities-table.component.html 138 - - libs/ui/src/lib/benchmark/benchmark.component.html - 4 - libs/ui/src/lib/holdings-table/holdings-table.component.html 28 @@ -211,15 +207,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 205 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 208 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 211 libs/ui/src/lib/account-balances/account-balances.component.html @@ -259,11 +255,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -291,11 +287,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -307,7 +303,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 155 + 169 @@ -347,7 +343,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 308 @@ -367,7 +363,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 155 @@ -401,13 +397,17 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html 110 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + Asset Profiles Perfiles de activos. - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 @@ -459,7 +459,7 @@ Fecha apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + 161 libs/ui/src/lib/account-balances/account-balances.component.html @@ -483,7 +483,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 109 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -507,7 +507,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + 38 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -531,7 +531,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 338 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -555,7 +555,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + 45 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -579,7 +579,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + 345 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -599,7 +599,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + 212 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -631,7 +631,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -639,7 +639,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -647,7 +647,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -743,7 +743,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -759,11 +759,11 @@ Usuario apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 @@ -803,11 +803,15 @@ Visión general apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 @@ -815,11 +819,11 @@ Cartera apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 @@ -827,7 +831,7 @@ Cuentas apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -835,15 +839,15 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -855,11 +859,11 @@ Control de administrador apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 @@ -871,11 +875,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -891,15 +895,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -915,11 +919,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -927,7 +931,7 @@ apps/client/src/app/components/header/header.component.html - 207 + 213 @@ -935,7 +939,7 @@ Mi Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 @@ -943,7 +947,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -959,7 +963,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -975,12 +979,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1002,12 +1010,16 @@ Sign in Iniciar sesión - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -1015,7 +1027,11 @@ Vaya! Token de seguridad incorrecto. apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1037,6 +1053,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1053,6 +1073,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -1070,8 +1098,8 @@ or o - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1095,7 +1123,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1127,7 +1155,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1163,7 +1191,7 @@ Inversión apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1255,7 +1283,7 @@ Dividendo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1267,12 +1295,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 Please set the amount of your emergency fund. - Por favor, ingresa la cantidad de tu fondo de emergencia: + Por favor, ingresa la cantidad de tu fondo de emergencia: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 64 @@ -1291,7 +1319,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + 277 apps/client/src/app/pages/public/public-page.html @@ -1311,7 +1339,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 289 @@ -1319,7 +1347,7 @@ Etiquetas apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1335,7 +1363,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -1383,7 +1411,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -1395,7 +1423,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -1407,7 +1435,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -1419,7 +1447,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -1431,7 +1459,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -1439,11 +1467,11 @@ De acuerdo apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1454,16 +1482,12 @@ About Sobre - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 @@ -1551,7 +1575,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -1563,7 +1587,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -1602,12 +1626,8 @@ Privacy Policy Política de privacidad - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -1615,15 +1635,15 @@ Mi Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 Please enter your coupon code. - Por favor, ingresa tu código de cupón: + Por favor, ingresa tu código de cupón: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1631,7 +1651,7 @@ No se puede canjear este código de cupón apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1639,7 +1659,7 @@ El codigo de cupón ha sido canjeado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1647,7 +1667,7 @@ Refrescar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1671,7 +1691,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -1691,7 +1711,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -1783,7 +1803,7 @@ Acceso concedido apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 @@ -1806,8 +1826,8 @@ Accounts Cuentas - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -1859,7 +1879,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + 145 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1910,16 +1930,16 @@ Admin Control Control de administrador - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -1933,21 +1953,21 @@ Frequently Asked Questions (FAQ) Preguntas más frecuentes (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Features Funcionalidades - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -1955,47 +1975,43 @@ Visión general apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Markets Mercados - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -2006,8 +2022,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -2090,12 +2106,8 @@ Analysis Análisis - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -2158,20 +2170,12 @@ Holdings Participaciones - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 @@ -2189,10 +2193,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Update activity @@ -2207,7 +2207,7 @@ Añadir operación apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2247,11 +2247,11 @@ Cantidad apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2263,7 +2263,7 @@ Precio unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2275,7 +2275,7 @@ Comisión apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2295,7 +2295,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + 275 @@ -2315,27 +2315,23 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + 235 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + 290 libs/ui/src/lib/assistant/assistant.html - 168 + 205 Activities Operación - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -2361,21 +2357,25 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Portfolio Cartera apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 @@ -2406,8 +2406,8 @@ Registration Registro - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -2438,8 +2438,8 @@ Resources Recursos - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/common/src/lib/routes/routes.ts + 332 @@ -2463,7 +2463,7 @@ Volver a la página principal apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -2535,7 +2535,7 @@ Variación respecto al máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 96 + 110 @@ -2543,7 +2543,7 @@ desde el máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 98 + 112 @@ -2575,7 +2575,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 418 + 432 @@ -2583,7 +2583,7 @@ Esta funcionalidad no está disponible actualmente. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2591,7 +2591,7 @@ Vaya! Algo no funcionó bien. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2603,11 +2603,11 @@ Por favor, prueba más tarde. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2651,11 +2651,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + 306 @@ -2663,7 +2663,7 @@ Precio unitario medio apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -2671,7 +2671,7 @@ Precio máximo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -2707,7 +2707,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + 261 @@ -2723,7 +2723,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + 271 @@ -2731,7 +2731,7 @@ Precio mínimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -2801,6 +2801,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2813,6 +2817,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2828,7 +2836,7 @@ Hello, has shared a Portfolio with you! - Hola, ha compartido una Cartera contigo! + Hola, ha compartido una Cartera contigo! apps/client/src/app/pages/public/public-page.html 4 @@ -2859,7 +2867,7 @@ Benchmark apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 @@ -3318,48 +3326,36 @@ Market Data Datos del mercado - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Users Usuarios - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 Summary Resumen - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 Holding - Holding + Participación apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 32 libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -3391,7 +3387,7 @@ Válido hasta apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + 74 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3400,7 +3396,7 @@ Core - Core + Núcleo libs/ui/src/lib/i18n.ts 10 @@ -3487,11 +3483,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -3503,11 +3499,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -3519,11 +3515,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -3535,11 +3531,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -3559,7 +3555,7 @@ Mejorar plan apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3571,7 +3567,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -3579,7 +3575,7 @@ Para inversores expertos en tecnología que prefieren ejecutar Ghostfolio en su propia infraestructura. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -3587,15 +3583,15 @@ Transacciones ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -3603,15 +3599,15 @@ Cuentas ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -3619,15 +3615,15 @@ Rendimiento del Portfolio apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -3635,7 +3631,7 @@ Auto alojado, actualiza manualmente. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -3643,11 +3639,11 @@ Gratis apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -3655,7 +3651,7 @@ Para nuevos inversores que estan empezando con el trading. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -3663,11 +3659,11 @@ Oferta en la nube de Ghostfolio totalmente administrada. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -3675,7 +3671,7 @@ Para inversores ambiciosos que necesitan una visión completa de sus activos financieros apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -3683,7 +3679,7 @@ Pago único, sin renovación automática. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -3699,7 +3695,7 @@ Es gratis. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 @@ -3707,7 +3703,7 @@ Comisiones apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3731,11 +3727,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -3751,15 +3747,15 @@ Importacion y exportacion de datos apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -3775,7 +3771,7 @@ Soporte de la comunidad apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -3783,7 +3779,7 @@ Soporte a Traves de Email y Chat apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -3812,7 +3808,7 @@ Retirement Date - Retirement Date + Fecha de jubilación libs/ui/src/lib/fire-calculator/fire-calculator.component.html 32 @@ -3820,19 +3816,19 @@ Professional Data Provider - Professional Data Provider + Proveedor de datos profesional apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 40 apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 Pricing Plans - Pricing Plans + Planes de precios apps/client/src/app/pages/pricing/pricing-page.html 4 @@ -3843,7 +3839,7 @@ Renovar Plan apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -3851,12 +3847,12 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + Nuestra oferta oficial en la nube de Ghostfolio Premium es la forma más sencilla de comenzar. Debido al tiempo que ahorra, esta será la mejor opción para la mayoría de las personas. Los ingresos se utilizan para cubrir los costos de la infraestructura de alojamiento y para financiar el desarrollo continuo. apps/client/src/app/pages/pricing/pricing-page.html 6 @@ -3864,7 +3860,7 @@ Impersonate User - Impersonate User + Suplantar usuario apps/client/src/app/components/admin-users/admin-users.html 239 @@ -3872,7 +3868,7 @@ Delete User - Delete User + Eliminar usuario apps/client/src/app/components/admin-users/admin-users.html 260 @@ -3880,7 +3876,7 @@ Do you really want to delete these activities? - Do you really want to delete these activities? + ¿Realmente deseas eliminar estas actividades? libs/ui/src/lib/activities-table/activities-table.component.ts 219 @@ -3888,7 +3884,7 @@ By ETF Provider - By ETF Provider + Por proveedor de ETF apps/client/src/app/pages/portfolio/allocations/allocations-page.html 306 @@ -3896,7 +3892,7 @@ Update platform - Update platform + Actualizar plataforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html 8 @@ -3904,7 +3900,7 @@ Add platform - Add platform + Agregar plataforma apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html 10 @@ -3912,7 +3908,7 @@ Url - Url + ¿La URL? apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 455 @@ -3923,7 +3919,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3932,7 +3928,7 @@ Do you really want to delete this platform? - Do you really want to delete this platform? + ¿Realmente deseas eliminar esta plataforma? apps/client/src/app/components/admin-platform/admin-platform.component.ts 87 @@ -3940,15 +3936,15 @@ Platforms - Platforms + Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 Update Cash Balance - Update Cash Balance + Actualizar saldo en efectivo apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 112 @@ -3956,7 +3952,7 @@ By Platform - By Platform + Por plataforma apps/client/src/app/pages/portfolio/allocations/allocations-page.html 44 @@ -3964,7 +3960,7 @@ Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Actualiza a Ghostfolio Premium hoy y accede a características exclusivas para mejorar tu experiencia de inversión: apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 17 @@ -3972,43 +3968,35 @@ Get the tools to effectively manage your finances and refine your personal investment strategy. - Get the tools to effectively manage your finances and refine your personal investment strategy. + Obtén las herramientas para gestionar eficazmente tus finanzas y perfeccionar tu estrategia de inversión personal. apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 47 - + Add Platform - Add Platform + Agregar plataforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 Settings - Settings + Configuraciones - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 Equity - Equity + Equidad apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html 58 @@ -4016,7 +4004,7 @@ This activity already exists. - This activity already exists. + Esta actividad ya existe. libs/ui/src/lib/i18n.ts 19 @@ -4024,7 +4012,7 @@ Manage Benchmarks - Manage Benchmarks + Gestionar puntos de referencia apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html 35 @@ -4032,7 +4020,7 @@ Select Holding - Select Holding + Seleccionar posición apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 20 @@ -4040,7 +4028,7 @@ Select File - Select File + Seleccionar archivo apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 22 @@ -4048,7 +4036,7 @@ Select Dividends - Select Dividends + Seleccionar dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 113 @@ -4056,7 +4044,7 @@ Select Activities - Select Activities + Seleccionar dividendos apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 115 @@ -4064,7 +4052,7 @@ Import Activities - Import Activities + Seleccionar dividendos libs/ui/src/lib/activities-table/activities-table.component.html 9 @@ -4076,7 +4064,7 @@ Import Dividends - Import Dividends + Importar dividendos libs/ui/src/lib/activities-table/activities-table.component.html 29 @@ -4088,7 +4076,7 @@ Personal Finance - Personal Finance + Finanzas personales apps/client/src/app/app.component.html 57 @@ -4096,19 +4084,19 @@ Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) + Preguntas frecuentes (FAQ) apps/client/src/app/app.component.html 83 apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 Current Streak - Current Streak + Racha actual apps/client/src/app/pages/portfolio/analysis/analysis-page.html 389 @@ -4116,7 +4104,7 @@ Longest Streak - Longest Streak + Racha más larga apps/client/src/app/pages/portfolio/analysis/analysis-page.html 398 @@ -4124,7 +4112,7 @@ Months - Months + Meses libs/ui/src/lib/i18n.ts 22 @@ -4132,7 +4120,7 @@ Years - Years + Años libs/ui/src/lib/i18n.ts 31 @@ -4140,7 +4128,7 @@ Month - Month + Mes libs/ui/src/lib/i18n.ts 21 @@ -4148,7 +4136,7 @@ Year - Year + Año libs/ui/src/lib/i18n.ts 30 @@ -4156,7 +4144,7 @@ Liabilities - Liabilities + Pasivos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 255 @@ -4168,31 +4156,23 @@ Changelog - Changelog - - apps/client/src/app/pages/about/about-page.component.ts - 50 - + Registro de cambios - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License - License - - apps/client/src/app/pages/about/about-page.component.ts - 55 - + Licencia - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 Stocks - Stocks + Acciones apps/client/src/app/pages/features/features-page.html 15 @@ -4200,7 +4180,7 @@ ETFs - ETFs + ETFs apps/client/src/app/pages/features/features-page.html 25 @@ -4208,7 +4188,7 @@ Bonds - Bonds + Bonos apps/client/src/app/pages/features/features-page.html 38 @@ -4216,7 +4196,7 @@ Cryptocurrencies - Cryptocurrencies + Criptomonedas apps/client/src/app/pages/features/features-page.html 51 @@ -4224,7 +4204,7 @@ Wealth Items - Wealth Items + Elementos de patrimonio apps/client/src/app/pages/features/features-page.html 76 @@ -4232,7 +4212,7 @@ Import and Export - Import and Export + Importar y exportar apps/client/src/app/pages/features/features-page.html 115 @@ -4240,7 +4220,7 @@ Multi-Accounts - Multi-Accounts + Cuentas múltiples apps/client/src/app/pages/features/features-page.html 127 @@ -4248,7 +4228,7 @@ Portfolio Calculations - Portfolio Calculations + Cálculos de portafolio apps/client/src/app/pages/features/features-page.html 141 @@ -4256,7 +4236,7 @@ Dark Mode - Dark Mode + Modo oscuro apps/client/src/app/pages/features/features-page.html 233 @@ -4264,7 +4244,7 @@ Market Mood - Market Mood + Modo de mercado apps/client/src/app/pages/features/features-page.html 215 @@ -4272,7 +4252,7 @@ Static Analysis - Static Analysis + Análisis estático apps/client/src/app/pages/features/features-page.html 179 @@ -4280,7 +4260,7 @@ Multi-Language - Multi-Language + Multilenguaje apps/client/src/app/pages/features/features-page.html 259 @@ -4288,7 +4268,7 @@ Open Source Software - Open Source Software + Software de código abierto apps/client/src/app/pages/features/features-page.html 295 @@ -4296,7 +4276,7 @@ Liability - Liability + Responsabilidad libs/ui/src/lib/i18n.ts 40 @@ -4304,7 +4284,7 @@ Scraper Configuration - Scraper Configuration + Configuración del scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 377 @@ -4312,7 +4292,7 @@ Add Asset Profile - Add Asset Profile + Agregar perfil de activo apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 7 @@ -4320,10 +4300,10 @@ Personal Finance Tools - Personal Finance Tools + Herramientas de finanzas personales - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/common/src/lib/routes/routes.ts + 329 @@ -4440,7 +4420,7 @@ Self-Hosting - Self-Hosting + Autoalojamiento apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 170 @@ -4480,7 +4460,7 @@ Personal Finance Tools - Personal Finance Tools + Herramientas de finanzas personales apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 351 @@ -4488,7 +4468,7 @@ Guides - Guides + Guías apps/client/src/app/pages/resources/guides/resources-guides.component.html 4 @@ -4496,7 +4476,7 @@ Glossary - Glossary + Glosario apps/client/src/app/pages/resources/glossary/resources-glossary.component.html 4 @@ -4504,7 +4484,7 @@ Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities + Acciones, ETFs, bonos, criptomonedas, materias primas apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 25 @@ -4516,7 +4496,7 @@ Mortgages, personal loans, credit cards - Mortgages, personal loans, credit cards + Hipotecas, préstamos personales, tarjetas de crédito apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 57 @@ -4524,7 +4504,7 @@ Luxury items, real estate, private companies - Luxury items, real estate, private companies + Artículos de lujo, bienes raíces, empresas privadas apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 73 @@ -4532,7 +4512,7 @@ Buy - Buy + Comprar libs/ui/src/lib/i18n.ts 35 @@ -4540,7 +4520,7 @@ Valuable - Valuable + Valioso libs/ui/src/lib/i18n.ts 39 @@ -4548,7 +4528,7 @@ ETFs without Countries - ETFs without Countries + ETFs sin países apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 91 @@ -4556,7 +4536,7 @@ ETFs without Sectors - ETFs without Sectors + ETFs sin sectores apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 96 @@ -4564,7 +4544,7 @@ Assets - Assets + Activos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 215 @@ -4572,7 +4552,7 @@ Preset - Preset + Preestablecido libs/ui/src/lib/i18n.ts 25 @@ -4580,7 +4560,7 @@ By Market - By Market + Por mercado apps/client/src/app/pages/portfolio/allocations/allocations-page.html 175 @@ -4588,7 +4568,7 @@ Asia-Pacific - Asia-Pacific + Asia-Pacífico libs/ui/src/lib/i18n.ts 5 @@ -4596,7 +4576,7 @@ Japan - Japan + Japón libs/ui/src/lib/i18n.ts 86 @@ -4604,7 +4584,7 @@ Welcome to Ghostfolio - Welcome to Ghostfolio + Bienvenido a Ghostfolio apps/client/src/app/components/home-overview/home-overview.html 7 @@ -4612,7 +4592,7 @@ Setup your accounts - Setup your accounts + Configura tus cuentas apps/client/src/app/components/home-overview/home-overview.html 15 @@ -4620,7 +4600,7 @@ Get a comprehensive financial overview by adding your bank and brokerage accounts. - Get a comprehensive financial overview by adding your bank and brokerage accounts. + Obtén una visión financiera completa agregando tus cuentas bancarias y de corretaje. apps/client/src/app/components/home-overview/home-overview.html 17 @@ -4628,7 +4608,7 @@ Capture your activities - Capture your activities + Captura tus actividades apps/client/src/app/components/home-overview/home-overview.html 24 @@ -4636,7 +4616,7 @@ Record your investment activities to keep your portfolio up to date. - Record your investment activities to keep your portfolio up to date. + Registra tus actividades de inversión para mantener tu portafolio actualizado. apps/client/src/app/components/home-overview/home-overview.html 26 @@ -4644,7 +4624,7 @@ Monitor and analyze your portfolio - Monitor and analyze your portfolio + Monitorea y analiza tu portafolio apps/client/src/app/components/home-overview/home-overview.html 33 @@ -4652,7 +4632,7 @@ Track your progress in real-time with comprehensive analysis and insights. - Track your progress in real-time with comprehensive analysis and insights. + Sigue tu progreso en tiempo real con análisis e información detallada. apps/client/src/app/components/home-overview/home-overview.html 35 @@ -4660,7 +4640,7 @@ No data available - No data available + No hay datos disponibles. apps/client/src/app/pages/portfolio/allocations/allocations-page.html 250 @@ -4671,7 +4651,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4680,7 +4660,7 @@ Ready to take control of your personal finances? - Ready to take control of your personal finances? + ¿Listo para tomar el control de tus finanzas personales? apps/client/src/app/components/home-overview/home-overview.html 8 @@ -4688,15 +4668,15 @@ Setup accounts - Setup accounts + Configura tus cuentas apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 Biometric Authentication - Biometric Authentication + Autenticación biométrica apps/client/src/app/components/user-account-settings/user-account-settings.html 218 @@ -4704,7 +4684,7 @@ At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + En Ghostfolio, la transparencia está en el centro de nuestros valores. Publicamos el código fuente como software de código abierto (OSS) bajo la licencia Licencia AGPL-3.0 y compartimos abiertamente métricas clave agregadas sobre el estado operativo de la plataforma. apps/client/src/app/pages/open/open-page.html 6 @@ -4712,7 +4692,7 @@ Active Users - Active Users + Usuarios activos apps/client/src/app/pages/open/open-page.html 40 @@ -4724,7 +4704,7 @@ New Users - New Users + Nuevos usuarios apps/client/src/app/pages/open/open-page.html 51 @@ -4732,7 +4712,7 @@ Users in Slack community - Users in Slack community + Usuarios en la comunidad de Slack apps/client/src/app/pages/open/open-page.html 75 @@ -4740,7 +4720,7 @@ Contributors on GitHub - Contributors on GitHub + Colaboradores en GitHub apps/client/src/app/pages/open/open-page.html 89 @@ -4748,7 +4728,7 @@ Stars on GitHub - Stars on GitHub + Estrellas en GitHub apps/client/src/app/pages/landing/landing-page.html 88 @@ -4760,7 +4740,7 @@ Pulls on Docker Hub - Pulls on Docker Hub + Descargas en Docker Hub apps/client/src/app/pages/landing/landing-page.html 106 @@ -4772,7 +4752,7 @@ Uptime - Uptime + Tiempo de actividad apps/client/src/app/pages/open/open-page.html 132 @@ -4780,7 +4760,7 @@ Export Data - Export Data + Exportar datos apps/client/src/app/components/user-account-settings/user-account-settings.html 260 @@ -4788,7 +4768,7 @@ Currencies - Currencies + Monedas apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 86 @@ -4796,7 +4776,7 @@ Our - Our + Nuestro apps/client/src/app/pages/about/oss-friends/oss-friends-page.html 6 @@ -4804,7 +4784,7 @@ Visit - Visit + Visitar apps/client/src/app/pages/about/oss-friends/oss-friends-page.html 28 @@ -4812,7 +4792,7 @@ Discover other exciting Open Source Software projects - Discover other exciting Open Source Software projects + Descubre otros proyectos emocionantes de software de código abierto apps/client/src/app/pages/about/oss-friends/oss-friends-page.html 9 @@ -4820,7 +4800,7 @@ Frequently Asked Questions (FAQ) - Frequently Asked Questions (FAQ) + Preguntas Frecuentes (FAQ) apps/client/src/app/pages/faq/overview/faq-overview-page.html 4 @@ -4836,7 +4816,7 @@ Check out the numerous features of Ghostfolio to manage your wealth - Check out the numerous features of Ghostfolio to manage your wealth + Descubra las numerosas funciones de Ghostfolio para gestionar su patrimonio apps/client/src/app/pages/features/features-page.html 6 @@ -4844,7 +4824,7 @@ Discover the latest Ghostfolio updates and insights on personal finance - Discover the latest Ghostfolio updates and insights on personal finance + Conoce las últimas actualizaciones de Ghostfolio y obtén información sobre finanzas personales apps/client/src/app/pages/blog/blog-page.html 7 @@ -4852,15 +4832,15 @@ If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Si prefieres ejecutar Ghostfolio en tu propia infraestructura, puedes encontrar el código fuente e instrucciones adicionales en GitHub. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 Manage your wealth like a boss - Manage your wealth like a boss + Gestiona tu patrimonio como un jefe apps/client/src/app/pages/landing/landing-page.html 5 @@ -4868,7 +4848,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio es un panel de control de código abierto y centrado en la privacidad para tus finanzas personales. Analiza la asignación de tus activos, conoce tu patrimonio neto y toma decisiones de inversión sólidas basadas en datos. apps/client/src/app/pages/landing/landing-page.html 9 @@ -4883,12 +4863,12 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 Monthly Active Users - Monthly Active Users + Usuarios activos mensuales apps/client/src/app/pages/landing/landing-page.html 70 @@ -4896,7 +4876,7 @@ As seen in - As seen in + Visto en apps/client/src/app/pages/landing/landing-page.html 115 @@ -4904,7 +4884,7 @@ Protect your assets. Refine your personal investment strategy. - Protect your assets. Refine your personal investment strategy. + Protege tus assets. Mejora tu estrategia de inversión personal. apps/client/src/app/pages/landing/landing-page.html 225 @@ -4912,7 +4892,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio permite a las personas ocupadas hacer un seguimiento de acciones, ETFs o criptomonedas sin ser rastreadas. apps/client/src/app/pages/landing/landing-page.html 229 @@ -4920,7 +4900,7 @@ 360° View - 360° View + Vista 360° apps/client/src/app/pages/landing/landing-page.html 240 @@ -4928,7 +4908,7 @@ Web3 Ready - Web3 Ready + Preparado para Web3 apps/client/src/app/pages/landing/landing-page.html 251 @@ -4936,7 +4916,7 @@ Use Ghostfolio anonymously and own your financial data. - Use Ghostfolio anonymously and own your financial data. + Usa Ghostfolio de forma anónima y sé dueño de tus datos financieros. apps/client/src/app/pages/landing/landing-page.html 253 @@ -4944,7 +4924,7 @@ Open Source - Open Source + Código Abierto apps/client/src/app/pages/landing/landing-page.html 261 @@ -4952,7 +4932,7 @@ Benefit from continuous improvements through a strong community. - Benefit from continuous improvements through a strong community. + Disfruta de mejoras continuas gracias a una comunidad sólida. apps/client/src/app/pages/landing/landing-page.html 263 @@ -4960,7 +4940,7 @@ Why Ghostfolio? - Why Ghostfolio? + ¿Por qué Ghostfolio? apps/client/src/app/pages/landing/landing-page.html 272 @@ -4968,7 +4948,7 @@ Ghostfolio is for you if you are... - Ghostfolio is for you if you are... + Ghostfolio es para ti si estás... apps/client/src/app/pages/landing/landing-page.html 273 @@ -4976,7 +4956,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms + operando con acciones, ETFs o criptomonedas en múltiples plataformas apps/client/src/app/pages/landing/landing-page.html 280 @@ -4984,7 +4964,7 @@ pursuing a buy & hold strategy - pursuing a buy & hold strategy + persiguiendo una compra & mantener estrategia apps/client/src/app/pages/landing/landing-page.html 286 @@ -4992,7 +4972,7 @@ interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition + interesado en obtener información sobre la composición de tu portafolio apps/client/src/app/pages/landing/landing-page.html 291 @@ -5000,7 +4980,7 @@ valuing privacy and data ownership - valuing privacy and data ownership + valorando la privacidad y la propiedad de tus datos apps/client/src/app/pages/landing/landing-page.html 296 @@ -5008,7 +4988,7 @@ into minimalism - into minimalism + en el minimalismo apps/client/src/app/pages/landing/landing-page.html 299 @@ -5016,7 +4996,7 @@ caring about diversifying your financial resources - caring about diversifying your financial resources + preocuparse por diversificar tus recursos financieros apps/client/src/app/pages/landing/landing-page.html 303 @@ -5024,7 +5004,7 @@ interested in financial independence - interested in financial independence + interesado en la independencia financiera apps/client/src/app/pages/landing/landing-page.html 307 @@ -5032,7 +5012,7 @@ saying no to spreadsheets in - saying no to spreadsheets in + diciendo no a las hojas de cálculo en apps/client/src/app/pages/landing/landing-page.html 311 @@ -5040,7 +5020,7 @@ still reading this list - still reading this list + todavía leyendo esta lista apps/client/src/app/pages/landing/landing-page.html 314 @@ -5048,7 +5028,7 @@ Learn more about Ghostfolio - Learn more about Ghostfolio + Más información sobre Ghostfolio apps/client/src/app/pages/landing/landing-page.html 319 @@ -5056,7 +5036,7 @@ What our users are saying - What our users are saying + Lo que nuestros usuarios están diciendo apps/client/src/app/pages/landing/landing-page.html 327 @@ -5064,7 +5044,7 @@ Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + Miembros de todo el mundo están usando Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html 366 @@ -5072,7 +5052,7 @@ How does Ghostfolio work? - How does Ghostfolio work? + ¿Cómo Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html 383 @@ -5080,7 +5060,7 @@ Sign up anonymously* - Sign up anonymously* + Regístrate de forma anónima* apps/client/src/app/pages/landing/landing-page.html 392 @@ -5088,7 +5068,7 @@ * no e-mail address nor credit card required - * no e-mail address nor credit card required + * no se requiere dirección de correo electrónico ni tarjeta de crédito apps/client/src/app/pages/landing/landing-page.html 394 @@ -5096,7 +5076,7 @@ Add any of your historical transactions - Add any of your historical transactions + Agrega cualquiera de tus transacciones históricas apps/client/src/app/pages/landing/landing-page.html 405 @@ -5104,7 +5084,7 @@ Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + Obtén información valiosa sobre la composición de tu portafolio apps/client/src/app/pages/landing/landing-page.html 417 @@ -5112,7 +5092,7 @@ Are you ready? - Are you ready? + ¿Estás listo? apps/client/src/app/pages/landing/landing-page.html 431 @@ -5120,19 +5100,19 @@ Live Demo - Live Demo + Demostración en vivo apps/client/src/app/pages/landing/landing-page.html 49 apps/client/src/app/pages/landing/landing-page.html - 451 + 452 Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. + Obtén una visión completa de tus finanzas personales en múltiples plataformas. apps/client/src/app/pages/landing/landing-page.html 242 @@ -5140,2862 +5120,2928 @@ Get started in only 3 steps - Get started in only 3 steps + Comienza en solo 3 pasos apps/client/src/app/pages/landing/landing-page.html 386 - + faq preguntas-mas-frecuentes - snake-case - - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - + kebab-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 245 - + features funcionalidades - snake-case + kebab-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 255 + + + about + sobre + kebab-case - apps/client/src/app/components/header/header.component.ts - 88 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/core/paths.ts - 4 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 214 + + + privacy-policy + politica-de-privacidad + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 207 + + + license + licencia + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + mercados + kebab-case - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + libs/common/src/lib/routes/routes.ts + 260 - - about - sobre - snake-case + + pricing + precios + kebab-case - apps/client/src/app/app.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 270 + + + register + registro + kebab-case - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + recursos + kebab-case - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 322 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Esta página de resumen presenta una colección seleccionada de herramientas de finanzas personales, comparadas con la alternativa de código abierto Ghostfolio. Si valoras la transparencia, la privacidad de los datos y la colaboración comunitaria, Ghostfolio ofrece una excelente oportunidad para tomar el control de tu gestión financiera. - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explora los siguientes enlaces para comparar una variedad de herramientas de finanzas personales con Ghostfolio. - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Alternativa de software libre a - apps/client/src/app/pages/about/about-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + La alternativa de software libre a - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + ¿Estás buscando una alternativa de código abierto a ? Ghostfolio es una potente herramienta de gestión de carteras que ofrece a los usuarios una plataforma integral para rastrear, analizar y optimizar sus inversiones. Ya seas un inversor con experiencia o estés comenzando, Ghostfolio ofrece una interfaz intuitiva y una amplia gama de funcionalidades para ayudarte a tomar decisiones informadas y tener el control de tu futuro financiero. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio es un software de código abierto (OSS), que ofrece una alternativa rentable a lo que lo hace especialmente adecuado para personas con un presupuesto ajustado, como aquellas que buscan la Independencia Financiera y Jubilación Anticipada (FIRE). Al aprovechar los esfuerzos colectivos de una comunidad de desarrolladores y entusiastas de las finanzas personales, Ghostfolio mejora continuamente sus capacidades, seguridad y experiencia de usuario. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Analicemos en detalle la tabla comparativa entre Ghostfolio y que encontrarás a continuación, para obtener una comprensión completa de cómo se posiciona Ghostfolio en relación con . Exploraremos diversos aspectos como funcionalidades, privacidad de los datos, precios y más, lo que te permitirá tomar una decisión bien fundamentada según tus necesidades personales. - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternativa-de-software-libre-a + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 324 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Ten en cuenta que la información proporcionada en la tabla comparativa entre Ghostfolio y se basa en nuestra investigación y análisis independientes. Este sitio web no está afiliado con ni con ningún otro producto mencionado en la comparación. Dado que el panorama de las herramientas de finanzas personales evoluciona constantemente, es fundamental verificar cualquier detalle específico o cambio directamente en la página oficial del producto correspondiente. ¿Los datos necesitan una actualización? Ayúdanos a mantener la información precisa en GitHub. - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + ¿Listo para llevar sus inversiones al siguiente nivel? - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Comenzar - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Suiza apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + 57 - - - privacy-policy - politica-de-privacidad - snake-case - apps/client/src/app/app.component.ts - 76 + libs/ui/src/lib/i18n.ts + 93 + + + Global + Global - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/ui/src/lib/i18n.ts + 16 - - license - licencia - snake-case + + (Last 24 hours) + (Últimas 24 horas) - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Últimos 30 días) - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/open/open-page.html + 59 - - markets - mercados - snake-case + + (Last 90 days) + (Últimos 90 días) - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Elige o suelta un archivo aquí - apps/client/src/app/components/header/header.component.ts + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 + + + You are using the Live Demo. + Estás usando la demostración en vivo. - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + Tarifa única, tarifas anuales de la cuenta - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribución de ganancias corporativas - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Fee + Tarifa - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + libs/ui/src/lib/i18n.ts + 37 + + + Interest + Interés - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 + + + Revenue for lending out money + Ingresos por prestar dinero - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Agregar etiqueta - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - pricing - precios - snake-case + + Do you really want to delete this tag? + ¿Realmente deseas eliminar esta etiqueta? - apps/client/src/app/app.component.ts + apps/client/src/app/components/admin-tag/admin-tag.component.ts 85 + + + Update tag + Actualizar etiqueta - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Añadir etiqueta - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Currency Cluster Risks + Riesgos de clúster de divisas - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 + + + Account Cluster Risks + Riesgos de clúster de cuentas - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 + + + Transfer Cash Balance + Transferir saldo de efectivo - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/core/paths.ts + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Version + Versión - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Configuración - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 - - - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + Desde - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + A - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transferir - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Membresía - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + libs/common/src/lib/routes/routes.ts + 31 + + + Access + Acceso - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + libs/common/src/lib/routes/routes.ts + 26 - - register - registro - snake-case + + Asset Profile + Perfil de activo - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + ¿Realmente deseas eliminar este perfil de activo? - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Search + Buscar - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Añadir manualmente - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Último máximo histórico - apps/client/src/app/pages/features/features-page.component.ts - 28 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + User + Usuario - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs tabla comparativa - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 - - resources - recursos - snake-case + + Open Source Wealth Management Software + Software de gestión de patrimonio de código abierto - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/pages/i18n/i18n-page.html + 97 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Oops, el saldo de efectivo no se ha transferido. - apps/client/src/app/components/header/header.component.ts - 92 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 + + + Extreme Fear + Miedo extremo - apps/client/src/app/core/paths.ts - 10 + libs/ui/src/lib/i18n.ts + 100 + + + Extreme Greed + Avaricia extrema - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + libs/ui/src/lib/i18n.ts + 101 + + + Neutral + Neutral - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + libs/ui/src/lib/i18n.ts + 104 + + + Oops! Could not parse historical data. + ¡Ups! No se pudieron analizar los datos históricos. - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 + + + Do you really want to delete this system message? + ¿Realmente deseas eliminar este mensaje del sistema? - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + 50-Day Trend + Tendencia de 50 días - apps/client/src/app/pages/features/features-page.component.ts - 29 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend + Tendencia de 200 días - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Cash Balances + Saldos de efectivo - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Starting from + A partir de - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 + + + year + año - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + + Do you really want to delete this account balance? + ¿Realmente desea eliminar el saldo de esta cuenta? - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. + + If a translation is missing, kindly support us in extending it here. + Si falta una traducción, por favor ayúdenos a ampliarla. here. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 - - Open Source Alternative to - Alternativa de software libre a + + The current market price is + El precio actual de mercado es - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 - - Open Source Alternative to - Alternativa de software libre a + + Test + Prueba - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 - - The Open Source Alternative to - La alternativa de software libre a + + Date Range + Rango de fechas - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + libs/ui/src/lib/assistant/assistant.html + 130 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + + Permission + Permiso - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + apps/client/src/app/components/access-table/access-table.component.html 18 - - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 32 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 - - - - open-source-alternative-to - alternativa-de-software-libre-a + + Restricted view + Vista restringida - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + apps/client/src/app/components/access-table/access-table.component.html 26 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + + Oops! Could not grant access. + ¡Ups! No se pudo otorgar acceso. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Ready to take your investments to the next level? - ¿Listo para llevar sus inversiones al siguiente nivel? + + Private + Privado - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Get Started - Get Started + + Job Queue + Cola de trabajos - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + libs/common/src/lib/routes/routes.ts + 46 - - Switzerland - Switzerland + + Market data is delayed for + Los datos del mercado se retrasan por - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 + + + Investment + Inversión - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Global - Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - (Last 24 hours) - (Last 24 hours) + + Absolute Asset Performance + Rendimiento absoluto de los activos - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - (Last 30 days) - (Last 30 days) + + Asset Performance + Rendimiento de activos - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 + + + Absolute Currency Performance + Rendimiento absoluto de divisas - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - (Last 90 days) - (Last 90 days) + + Currency Performance + Rendimiento de la moneda - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Choose or drop a file here - Choose or drop a file here + + Absolute Net Performance + Rendimiento neto absoluto - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - You are using the Live Demo. - You are using the Live Demo. + + Net Performance + Rendimiento neto - apps/client/src/app/app.component.html - 12 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - One-time fee, annual account fees - One-time fee, annual account fees + + Week to date + Semana hasta la fecha - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Distribution of corporate earnings - Distribution of corporate earnings + + WTD + WTD - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Fee - Fee + + Month to date + Mes hasta la fecha - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Interest - Interest + + MTD + MTD - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Revenue for lending out money - Revenue for lending out money + + Year to date + El año hasta la fecha - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Add Tag - Add Tag + + View + Ver - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Update tag - Update tag + + Oops! A data provider is experiencing the hiccups. + ¡Ups! Un proveedor de datos está experimentando problemas. - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html 8 - - Add tag - Add tag + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Currency Cluster Risks - Currency Cluster Risks + + Reset Filters + Reiniciar filtros - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + libs/ui/src/lib/assistant/assistant.html + 224 - - Account Cluster Risks - Account Cluster Risks + + year + año - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Transfer Cash Balance - Transfer Cash Balance + + years + años - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + libs/ui/src/lib/assistant/assistant.component.ts + 387 + + + Apply Filters + Aplicar filtros - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + libs/ui/src/lib/assistant/assistant.html + 234 - - Benchmark - Benchmark + + Data Gathering + Recopilación de datos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + 541 - - - Version - Version apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - Settings - Settings - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + 60 - - From - From + + General + General - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - To - To + + Cloud + Nube - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Transfer - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + libs/common/src/lib/routes/routes.ts + 240 - - Membership - Membership + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + libs/common/src/lib/routes/routes.ts + 248 - - Access - Access + + self-hosting + auto-alojado + kebab-case - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + libs/common/src/lib/routes/routes.ts + 243 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + libs/common/src/lib/routes/routes.ts + 246 - - Find holding... - Find holding... - - libs/ui/src/lib/assistant/assistant.component.ts - 143 - - - - No entries... - No entries... + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! It looks like you’re making too many requests. Please slow down a bit. - libs/ui/src/lib/assistant/assistant.html - 62 + apps/client/src/app/core/http-response.interceptor.ts + 106 + + + My Account + Mi cuenta - libs/ui/src/lib/assistant/assistant.html - 85 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Asset Profile - Asset Profile + + Active + Activo - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? + + Closed + Closed - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Search - Search + + Activity + Activity - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - Add Manually - Add Manually + + Dividend Yield + Dividend Yield - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. + + Execute Job + Ejecutar Tarea - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 - - Last All Time High - Last All Time High + + Priority + Prioridad - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - User - User + + This action is not allowed. + This action is not allowed. - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - Ghostfolio vs comparison table - Ghostfolio vs tabla comparativa + + Liquidity + Liquidez - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + libs/ui/src/lib/i18n.ts + 48 - - Open Source Wealth Management Software - Open Source Wealth Management Software + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - apps/client/src/app/pages/i18n/i18n-page.html + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 14 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + Buy and sell + Comprar y vender - apps/client/src/app/pages/i18n/i18n-page.html - 9 + libs/ui/src/lib/i18n.ts + 8 - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. + + Delete Activities + Delete Activities - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Extreme Fear - Extreme Fear + + Internationalization + Internacionalización - libs/ui/src/lib/i18n.ts - 100 + libs/common/src/lib/routes/routes.ts + 119 - - Extreme Greed - Extreme Greed + + Do you really want to close your Ghostfolio account? + ¿Estás seguro de querer borrar tu cuenta de Ghostfolio? - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Neutral - Neutral + + Danger Zone + Zona peligrosa - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Oops! Could not parse historical data. - Oops! Could not parse historical data. + + Close Account + Eliminar cuenta - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - Do you really want to delete this system message? - Do you really want to delete this system message? + + By ETF Holding + By ETF Holding - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - 50-Day Trend - 50-Day Trend + + Approximation based on the top holdings of each ETF + Approximation based on the top holdings of each ETF - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - 200-Day Trend - 200-Day Trend + + Join now or check out the example account + Join now or check out the example account - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Cash Balances - Cash Balances + + Oops! There was an error setting up biometric authentication. + Oops! There was an error setting up biometric authentication. - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Starting from - Starting from + + Show more + Mostrar más - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 + + + Benchmarks + Benchmarks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - year - year + + Delete Profiles + Borrar Perfiles - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 + + + Do you really want to delete these profiles? + Estas seguro de borrar estos perfiles? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + Oops! Could not delete profiles. + Oops! Could not delete profiles. - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Table + Tabla - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 - - The current market price is - The current market price is + + Chart + Grafico - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Test - Test + + Would you like to refine your personal investment strategy? + Would you like to refine your personal investment strategy? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + apps/client/src/app/pages/public/public-page.html + 211 - - Date Range - Date Range + + Alternative + Alternative - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - Permission - Permiso - - apps/client/src/app/components/access-table/access-table.component.html - 18 - + + App + App - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Restricted view - Restricted view + + Budgeting + Budgeting - apps/client/src/app/components/access-table/access-table.component.html - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 + + + Community + Community - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Oops! Could not grant access. - Oops! Could not grant access. + + Family Office + Family Office - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Private - Privado + + Investor + Investor - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - Job Queue - Job Queue + + Open Source + Open Source - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 + + + Personal Finance + Personal Finance - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Market data is delayed for - Market data is delayed for + + Privacy + Privacy - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Investment - Inversión + + Software + Software - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 + + + Tool + Tool - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 + + + User Experience + User Experience apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + 95 - - Absolute Asset Performance - Absolute Asset Performance + + Wealth + Wealth - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - Asset Performance - Asset Performance + + Wealth Management + Wealth Management - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Absolute Currency Performance - Absolute Currency Performance + + Australia + Australia - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + libs/ui/src/lib/i18n.ts + 74 - - Currency Performance - Currency Performance + + Austria + Austria - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + libs/ui/src/lib/i18n.ts + 75 - - Absolute Net Performance - Absolute Net Performance + + Belgium + Belgium - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + libs/ui/src/lib/i18n.ts + 76 - - Net Performance - Net Performance + + Bulgaria + Bulgaria - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 + libs/ui/src/lib/i18n.ts + 78 - - Week to date - Week to date + + Canada + Canada - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 79 - - WTD - WTD + + Czech Republic + Czech Republic - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 80 - - Month to date - Month to date + + Finland + Finland - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 81 - - MTD - MTD + + France + France - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 82 - - Year to date - Year to date + + Germany + Germany - libs/ui/src/lib/assistant/assistant.component.ts - 230 + libs/ui/src/lib/i18n.ts + 83 - - View - Ver + + India + India - apps/client/src/app/components/access-table/access-table.component.html - 23 + libs/ui/src/lib/i18n.ts + 84 + + + Italy + Italy - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + libs/ui/src/lib/i18n.ts + 85 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Netherlands + Netherlands - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + libs/ui/src/lib/i18n.ts + 87 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + New Zealand + New Zealand - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + libs/ui/src/lib/i18n.ts + 88 - - Reset Filters - Reiniciar filtros + + Poland + Poland - libs/ui/src/lib/assistant/assistant.html - 187 + libs/ui/src/lib/i18n.ts + 89 - - year - año + + Romania + Romania - libs/ui/src/lib/assistant/assistant.component.ts - 234 + libs/ui/src/lib/i18n.ts + 90 - - years - años + + South Africa + South Africa - libs/ui/src/lib/assistant/assistant.component.ts - 256 + libs/ui/src/lib/i18n.ts + 92 - - Apply Filters - Aplicar filtros + + Thailand + Thailand - libs/ui/src/lib/assistant/assistant.html - 197 + libs/ui/src/lib/i18n.ts + 94 - - Data Gathering - Data Gathering - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 - + + United States + United States - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + libs/ui/src/lib/i18n.ts + 97 - - General - General + + Error + Error - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - Cloud - Nube - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - + + Deactivate + Deactivate - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + apps/client/src/app/components/rule/rule.component.html + 72 - - Self-Hosting - Self-Hosting - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - + + Activate + Activate - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/components/rule/rule.component.html + 74 - - self-hosting - auto alojado + + Inactive + Inactive - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - FAQ - Preguntas frequentes - - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 - + + Cancel + Cancel - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 9 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Close + Close - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 11 - - My Account - Mi cuenta + + Yes + Yes - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 32 - - Active - Activo + + Copy link to clipboard + Copy link to clipboard - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Closed - Closed + + Portfolio Snapshot + Portfolio Snapshot - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Activity - Activity + + Change with currency effect Change + Change with currency effect Change apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + 61 - - Dividend Yield - Dividend Yield + + Performance with currency effect Performance + Performance with currency effect Performance apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + 80 - - Execute Job - Ejecutar Tarea + + Threshold Min + Threshold Min - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Priority - Prioridad + + Threshold Max + Threshold Max - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - This action is not allowed. - This action is not allowed. + + Close + Close - apps/client/src/app/core/http-response.interceptor.ts - 64 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Liquidity - Liquidez + + Customize + Customize - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/components/rule/rule.component.html + 67 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + No auto-renewal. + No auto-renewal. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Buy and sell - Comprar y vender + + Today + Today - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/pages/public/public-page.html + 24 - - Delete Activities - Delete Activities + + This year + This year - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/pages/public/public-page.html + 42 - - Internationalization - Internacionalización + + From the beginning + From the beginning - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/public/public-page.html + 60 - - Do you really want to close your Ghostfolio account? - ¿Estás seguro de querer borrar tu cuenta de Ghostfolio? + + Oops! Invalid currency. + Oops! Invalid currency. - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - Danger Zone - Zona peligrosa + + This page has been archived. + This page has been archived. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Close Account - Eliminar cuenta + + is Open Source Software + is Open Source Software - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - By ETF Holding - By ETF Holding - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 - - - - Approximation based on the top holdings of each ETF - Approximation based on the top holdings of each ETF - - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 - - - - Join now or check out the example account - Join now or check out the example account - - apps/client/src/app/pages/landing/landing-page.html - 434 - - - - Oops! There was an error setting up biometric authentication. - Oops! There was an error setting up biometric authentication. - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 - - - - Show more - Mostrar más - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 - - - - Benchmarks - Benchmarks - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 - - - - Delete Profiles - Borrar Perfiles - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 - - - - Do you really want to delete these profiles? - Estas seguro de borrar estos perfiles? - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 - - - - Oops! Could not delete profiles. - Oops! Could not delete profiles. - - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 - - - - Table - Tabla - - apps/client/src/app/components/home-holdings/home-holdings.html - 16 - - - - Chart - Grafico - - apps/client/src/app/components/home-holdings/home-holdings.html - 19 - - - - Would you like to refine your personal investment strategy? - Would you like to refine your personal investment strategy? - - apps/client/src/app/pages/public/public-page.html - 211 - - - - Alternative - Alternative - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 - - - - App - App + + is not Open Source Software + is not Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Budgeting - Budgeting + + is Open Source Software + is Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Community - Community + + is not Open Source Software + is not Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Family Office - Family Office + + can be self-hosted + can be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Investor - Investor + + cannot be self-hosted + cannot be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Open Source - Open Source + + can be self-hosted + can be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Personal Finance - Personal Finance + + cannot be self-hosted + cannot be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Privacy - Privacy + + can be used anonymously + can be used anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Software - Software + + cannot be used anonymously + cannot be used anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Tool - Tool + + can be used anonymously + can be used anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - User Experience - User Experience + + cannot be used anonymously + cannot be used anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Wealth - Wealth + + offers a free plan + offers a free plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Wealth Management - Wealth Management + + does not offer a free plan + does not offer a free plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Australia - Australia + + offers a free plan + offers a free plan - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Austria - Austria + + does not offer a free plan + does not offer a free plan - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Belgium - Belgium + + Oops! Could not find any assets. + Oops! Could not find any assets. - libs/ui/src/lib/i18n.ts - 76 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Bulgaria - Bulgaria + + Data Providers + Data Providers - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Canada - Canada + + Set API key + Set API key - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - Czech Republic - Czech Republic + + Get access to 80’000+ tickers from over 50 exchanges + Get access to 80’000+ tickers from over 50 exchanges libs/ui/src/lib/i18n.ts - 80 + 24 - - Finland - Finland + + Ukraine + Ukraine libs/ui/src/lib/i18n.ts - 81 + 95 - - France - France + + Join now + Join now - libs/ui/src/lib/i18n.ts - 82 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Germany - Germany + + Glossary + Glossary - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - India - India - libs/ui/src/lib/i18n.ts - 84 + libs/common/src/lib/routes/routes.ts + 293 - - Italy - Italy + + Guides + Guides - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Netherlands - Netherlands - libs/ui/src/lib/i18n.ts - 87 + libs/common/src/lib/routes/routes.ts + 301 - - New Zealand - New Zealand + + guides + guides + kebab-case - libs/ui/src/lib/i18n.ts - 88 + libs/common/src/lib/routes/routes.ts + 296 - - - Poland - Poland - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 299 - - Romania - Romania + + glossary + glossary + kebab-case - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 288 - - - South Africa - South Africa - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 291 - - Thailand - Thailand + + Threshold range + Threshold range - libs/ui/src/lib/i18n.ts - 94 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - United States - United States + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Error - Error + + Economic Market Cluster Risks + Economic Market Cluster Risks - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Deactivate - Deactivate + + of + of - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Activate - Activate + + daily requests + daily requests - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Inactive - Inactive + + Remove API key + Remove API key - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Cancel - Cancel + + Do you really want to delete the API key? + Do you really want to delete the API key? - libs/ui/src/lib/i18n.ts - 9 - - - - Close - Close + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 + + + + Please enter your Ghostfolio API key: + Please enter your Ghostfolio API key: - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Yes - Yes + + API Requests Today + API Requests Today - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Copy link to clipboard - Copy link to clipboard + + Could not generate an API key + Could not generate an API key - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Portfolio Snapshot - Portfolio Snapshot + + Set this API key in your self-hosted environment: + Set this API key in your self-hosted environment: - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Change with currency effect Change - Change with currency effect Change + + Ghostfolio Premium Data Provider API Key + Ghostfolio Premium Data Provider API Key - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Performance with currency effect Performance - Performance with currency effect Performance + + Do you really want to generate a new API key? + Do you really want to generate a new API key? - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Min - Threshold Min + + Tag + Tag - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + libs/ui/src/lib/assistant/assistant.html + 194 - - Threshold Max - Threshold Max + + API Key + API Key - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Close - Close + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - Customize - Customize + + out of + out of - apps/client/src/app/components/rule/rule.component.html - 67 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - No auto-renewal. - No auto-renewal. + + rules align with your portfolio. + rules align with your portfolio. - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - Today - Today + + Save + Save - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - This year - This year + + Asset Class Cluster Risks + Asset Class Cluster Risks - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - From the beginning - From the beginning + + Me + Me - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - Oops! Invalid currency. - Oops! Invalid currency. + + Received Access + Received Access - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - This page has been archived. - This page has been archived. + + Please enter your Ghostfolio API key. + Please enter your Ghostfolio API key. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is Open Source Software - is Open Source Software + + AI prompt has been copied to the clipboard + AI prompt has been copied to the clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is not Open Source Software - is not Open Source Software + + Link has been copied to the clipboard + Link has been copied to the clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is Open Source Software - is Open Source Software + + Regional Market Cluster Risks + Regional Market Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - is not Open Source Software - is not Open Source Software + + Lazy + Lazy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be self-hosted - can be self-hosted + + Instant + Instant - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be self-hosted - cannot be self-hosted + + Default Market Price + Default Market Price - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - can be self-hosted - can be self-hosted + + Mode + Mode - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - cannot be self-hosted - cannot be self-hosted + + Selector + Selector - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - can be used anonymously - can be used anonymously + + HTTP Request Headers + HTTP Request Headers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - cannot be used anonymously - cannot be used anonymously + + end of day + end of day - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be used anonymously - can be used anonymously + + real-time + real-time - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be used anonymously - cannot be used anonymously + + Open Duck.ai + Open Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - offers a free plan - offers a free plan + + Create + Create - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - does not offer a free plan - does not offer a free plan + + Market Data + Market Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - offers a free plan - offers a free plan + + Change + Change - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - does not offer a free plan - does not offer a free plan + + Performance + Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Oops! Could not find any assets. - Oops! Could not find any assets. - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Data Providers - Data Providers + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Set API key - Set API key + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Get access to 80’000+ tickers from over 50 exchanges - Get access to 80’000+ tickers from over 50 exchanges + + Armenia + Armenia libs/ui/src/lib/i18n.ts - 24 + 73 - - Ukraine - Ukraine + + British Virgin Islands + British Virgin Islands libs/ui/src/lib/i18n.ts - 95 + 77 - - Join now - Join now + + Singapore + Singapore - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 91 - - Glossary - Glossary - - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 - + + Terms and Conditions + Terms and Conditions - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Guides - Guides + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + I understand that if I lose my security token, I cannot recover my account - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - guides - guides - snake-case + + Continue + Continue - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - glossary - glossary - snake-case + + Security token + Security token - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Threshold range - Threshold range + + Do you really want to generate a new security token for this user? + Do you really want to generate a new security token for this user? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + + Generate Security Token + Generate Security Token - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Economic Market Cluster Risks - Economic Market Cluster Risks + + United Kingdom + United Kingdom - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + libs/ui/src/lib/i18n.ts + 96 - - of - of + + Terms of Service + Terms of Service - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/app.component.html + 112 - - daily requests - daily requests + + terms-of-service + terms-of-service + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/common/src/lib/routes/routes.ts + 212 - - - Remove API key - Remove API key - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + libs/common/src/lib/routes/routes.ts + 215 - - Do you really want to delete the API key? - Do you really want to delete the API key? + + Terms of Service + Terms of Service - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 217 - - Please enter your Ghostfolio API key: - Please enter your Ghostfolio API key: + + Terms of Service + Terms of Service - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - I have an API key - I have an API key + + and I agree to the Terms of Service. + and I agree to the Terms of Service. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - API Requests Today - API Requests Today + + () is already in use. + () is already in use. - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Could not generate an API key - Could not generate an API key + + An error occurred while updating to (). + An error occurred while updating to (). - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Set this API key in your self-hosted environment: - Set this API key in your self-hosted environment: + + Apply + Apply - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Ghostfolio Premium Data Provider API Key - Ghostfolio Premium Data Provider API Key + + with API access for + with API access for - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Do you really want to generate a new API key? - Do you really want to generate a new API key? + + Gather Recent Historical Market Data + Gather Recent Historical Market Data - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Tag - Tag + + Gather All Historical Market Data + Gather All Historical Market Data - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - API Key - API Key + + Gather Historical Market Data + Gather Historical Market Data - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + + Data Gathering is off + Data Gathering is off - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - out of - out of + + Performance Calculation + Performance Calculation - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - rules align with your portfolio. - rules align with your portfolio. + + someone + someone - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Save - Save + + Add asset to watchlist + Add asset to watchlist - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - Asset Class Cluster Risks - Asset Class Cluster Risks + + Watchlist + Watchlist - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Me - Me - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/pages/features/features-page.html + 197 - - Received Access - Received Access + + Watchlist + Lista de seguimiento - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + libs/common/src/lib/routes/routes.ts + 110 - - Please enter your Ghostfolio API key. - Please enter your Ghostfolio API key. + + Do you really want to delete this item? + ¿Realmente deseas eliminar este elemento? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - AI prompt has been copied to the clipboard - AI prompt has been copied to the clipboard + + Log out + Finalizar la sesión - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/header/header.component.html + 329 - - Link has been copied to the clipboard - Link has been copied to the clipboard + + Calculations are based on delayed market data and may not be displayed in real-time. + Los cálculos se basan en datos de mercado retrasados ​​y es posible que no se muestren en tiempo real. - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Early Access - Early Access - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/markets/markets.html + 52 - - Regional Market Cluster Risks - Regional Market Cluster Risks + + changelog + registro-decambios + kebab-case - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + libs/common/src/lib/routes/routes.ts + 180 - - - Lazy - Lazy - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/common/src/lib/routes/routes.ts + 183 - - Instant - Instant + + Demo user account has been synced. + La cuenta de usuario de demostración se ha sincronizado. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Default Market Price - Default Market Price + + Sync Demo User Account + Sincronizar cuenta de usuario de demostración - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Mode - Mode + + Emergency Fund: Set up + Fondo de Emergencia: Establecer - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Selector - Selector + + No emergency fund has been set up + No se ha creado ningún fondo de emergencia - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - HTTP Request Headers - HTTP Request Headers + + An emergency fund has been set up + Se ha creado un fondo de emergencia - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - end of day - end of day + + Fee Ratio + Relación de tarifas - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - real-time - real-time + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Las tarifas superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Open Duck.ai - Open Duck.ai + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Las tarifas no superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Create - Create + + Name + Nombre - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Market Data - Market Data + + Find holding or page... + Buscar explotación o página... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Change - Change + + Quick Links + Enlaces rápidos - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 43 - - Performance - Performance + + Asset Profiles + Perfiles de activos - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 99 + + + Live Demo + Live Demo - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/common/src/lib/routes/routes.ts + 231 - - Copy portfolio data to clipboard for AI prompt - Copy portfolio data to clipboard for AI prompt + + Open Source Alternative to + Alternativa de software libre a - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 326 - - Copy AI prompt to clipboard for analysis - Copy AI prompt to clipboard for analysis + + Single Account + Single Account - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Armenia - Armenia + + Your net worth is managed by a single account + Your net worth is managed by a single account - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - British Virgin Islands - British Virgin Islands + + Your net worth is managed by ${accountsLength} accounts + Your net worth is managed by ${accountsLength} accounts - libs/ui/src/lib/i18n.ts - 77 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Singapore - Singapore + + Holdings + Holdings - libs/ui/src/lib/i18n.ts - 91 + libs/ui/src/lib/assistant/assistant.html + 69 - - Terms and Conditions - Terms and Conditions + + personal-finance-tools + personal-finance-tools + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 312 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Please keep your security token safe. If you lose it, you will not be able to recover your account. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 315 - - - I understand that if I lose my security token, I cannot recover my account - I understand that if I lose my security token, I cannot recover my account - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 323 - - Continue - Continue + + markets + markets + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 304 - - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Here is your security token. It is only visible once, please store and keep it in a safe place. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 307 - - Security token - Security token + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Do you really want to generate a new security token for this user? - Do you really want to generate a new security token for this user? + + Get Access + Get Access - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Generate Security Token - Generate Security Token + + Learn more + Learn more - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - United Kingdom - United Kingdom + + new + new - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms of Service - Terms of Service + + Limited Offer! + Limited Offer! - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - terms-of-service - terms-of-service - snake-case + + Get extra + Get extra - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Available - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Unavailable - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + new - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Terms of Service - Terms of Service + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - Terms of Service + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - and I agree to the Terms of Service. - and I agree to the Terms of Service. + + Equity + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - () is already in use. - () is already in use. + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - An error occurred while updating to (). - An error occurred while updating to (). + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Apply - Apply + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - with API access for - with API access for + + Fixed Income + Fixed Income - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather Recent Historical Market Data - Gather Recent Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather All Historical Market Data - Gather All Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Historical Market Data - Gather Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off - Data Gathering is off + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation - Performance Calculation + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone - someone + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist - Add asset to watchlist + + Investment + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist - Watchlist + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - Watchlist + + start + start + kebab-case - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - Get Early Access + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - Do you really want to delete this item? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - Log out + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 5077a4010..a4cb2828b 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -118,11 +118,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 224 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -154,11 +154,11 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + 46 apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -170,16 +170,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + 139 libs/ui/src/lib/activities-table/activities-table.component.html 138 - - libs/ui/src/lib/benchmark/benchmark.component.html - 4 - libs/ui/src/lib/holdings-table/holdings-table.component.html 28 @@ -226,7 +222,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + 145 libs/ui/src/lib/activities-table/activities-table.component.html @@ -266,15 +262,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 205 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 208 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 211 libs/ui/src/lib/account-balances/account-balances.component.html @@ -314,11 +310,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -346,11 +342,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -362,7 +358,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 155 + 169 @@ -394,7 +390,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 308 @@ -414,7 +410,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 155 @@ -448,6 +444,10 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html 110 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + Delete Jobs @@ -459,15 +459,15 @@ Asset Profiles - Profil d’Actifs + Profils d’Actifs - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 Historical Market Data - Données de Marché Historiques + Données historiques du marché apps/client/src/app/components/admin-jobs/admin-jobs.html 37 @@ -514,7 +514,7 @@ Date apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + 161 libs/ui/src/lib/account-balances/account-balances.component.html @@ -531,14 +531,14 @@ Market Price - Prix du Marché + Prix du marché apps/client/src/app/components/admin-market-data/admin-market-data.html 133 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 109 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -562,7 +562,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + 38 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -586,7 +586,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 338 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -610,7 +610,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + 45 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -634,7 +634,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + 345 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -666,15 +666,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + 235 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + 290 libs/ui/src/lib/assistant/assistant.html - 168 + 205 @@ -694,11 +694,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + 306 @@ -714,7 +714,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + 212 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -786,7 +786,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + 261 @@ -802,7 +802,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + 271 @@ -818,7 +818,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + 277 apps/client/src/app/pages/public/public-page.html @@ -838,7 +838,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 289 @@ -862,7 +862,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + 275 @@ -870,7 +870,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -878,7 +878,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -886,7 +886,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -926,7 +926,7 @@ Étiquettes apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1002,7 +1002,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -1018,11 +1018,11 @@ Utilisateur apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 @@ -1038,7 +1038,7 @@ Comptes apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1046,15 +1046,15 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -1102,15 +1102,15 @@ Portefeuille apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 @@ -1118,12 +1118,12 @@ Référence apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 Current Market Mood - Sentiment Actuel du Marché + Sentiment actuel du marché apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html 12 @@ -1134,11 +1134,15 @@ Aperçu apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 @@ -1146,11 +1150,11 @@ Portefeuille apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 @@ -1158,11 +1162,11 @@ Contrôle Administrateur apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 @@ -1174,11 +1178,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -1194,15 +1198,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1218,11 +1222,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -1230,7 +1234,7 @@ Moi apps/client/src/app/components/header/header.component.html - 207 + 213 @@ -1238,7 +1242,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 @@ -1246,7 +1250,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1262,7 +1266,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -1278,12 +1282,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1294,7 +1302,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1306,19 +1314,23 @@ Démarrer apps/client/src/app/components/header/header.component.html - 418 + 432 Sign in Se connecter - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -1326,7 +1338,11 @@ Oups! Jeton de Sécurité Incorrect. apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1348,6 +1364,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -1360,6 +1380,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -1372,6 +1396,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1404,6 +1432,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -1421,8 +1457,8 @@ or ou - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1446,7 +1482,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1475,7 +1511,7 @@ Time in Market - Temps sur le Marché + Temps sur le marché apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html 3 @@ -1502,7 +1538,7 @@ Investissement apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1602,7 +1638,7 @@ Dividende apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1614,7 +1650,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 @@ -1638,7 +1674,7 @@ Prix Unitaire Moyen apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -1646,7 +1682,7 @@ Prix Minimum apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -1654,7 +1690,7 @@ Prix Maximum apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -1662,11 +1698,11 @@ Quantité apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1678,7 +1714,7 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -1690,7 +1726,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -1702,7 +1738,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -1714,7 +1750,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -1726,7 +1762,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -1738,7 +1774,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -1746,7 +1782,7 @@ Cette fonctionnalité est momentanément indisponible. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -1754,11 +1790,11 @@ Veuillez réessayer plus tard. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1770,7 +1806,7 @@ Oups! Quelque chose s’est mal passé. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1782,11 +1818,11 @@ D’accord apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1797,16 +1833,12 @@ About À propos - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 @@ -1837,12 +1869,8 @@ Privacy Policy Politique de Vie Privée - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -1862,7 +1890,7 @@ Mon Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1878,7 +1906,7 @@ Veuillez entrer votre code promotionnel. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1886,7 +1914,7 @@ Le code promotionnel n’a pas pu être appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1894,7 +1922,7 @@ Le code promotionnel a été appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1902,7 +1930,7 @@ Rafraîchir apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1926,7 +1954,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -1946,7 +1974,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -2138,7 +2166,7 @@ Accès donné apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 @@ -2161,8 +2189,8 @@ Accounts Comptes - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -2199,42 +2227,34 @@ Market Data - Données de Marché + Données du marché - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Admin Control Contrôle Admin - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Users Utilisateurs - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -2310,7 +2330,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -2322,7 +2342,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -2344,89 +2364,73 @@ Frequently Asked Questions (FAQ) Questions Fréquentes (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Features Fonctionnalités - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 Holdings Positions - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 Summary Résumé - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 Markets Marchés - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 Activities Activités - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -2442,7 +2446,7 @@ Ajouter Activité apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2482,7 +2486,7 @@ Prix Unitaire apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2494,7 +2498,7 @@ Frais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2569,8 +2573,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -2659,7 +2663,7 @@ Developed Markets - Marchés Développés + Marchés développés apps/client/src/app/pages/portfolio/allocations/allocations-page.html 222 @@ -2671,7 +2675,7 @@ Emerging Markets - Marchés Émergents + Marchés émergents apps/client/src/app/pages/portfolio/allocations/allocations-page.html 231 @@ -2697,12 +2701,8 @@ Analysis Analyse - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -2820,10 +2820,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Pricing @@ -2832,6 +2828,10 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Hello, has shared a Portfolio with you! @@ -2881,8 +2881,8 @@ Registration Enregistrement - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -2933,8 +2933,8 @@ Resources Ressources - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/common/src/lib/routes/routes.ts + 332 @@ -2958,7 +2958,7 @@ Retour à la Page d’Accueil apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -2966,23 +2966,19 @@ Aperçu apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 @@ -3054,7 +3050,7 @@ Différence avec le Record Historique libs/ui/src/lib/benchmark/benchmark.component.html - 96 + 110 @@ -3062,7 +3058,7 @@ par rapport au record historique libs/ui/src/lib/benchmark/benchmark.component.html - 98 + 112 @@ -3358,7 +3354,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -3390,7 +3386,7 @@ Valide jusqu’au apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + 74 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3486,11 +3482,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -3502,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -3518,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -3534,11 +3530,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -3558,7 +3554,7 @@ Mettre à niveau l’Abonnement apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3570,7 +3566,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -3578,7 +3574,7 @@ Pour les investisseurs à l’aise avec la technologie qui préfèrent héberger Ghostfolio sur leur propre infrastructure. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -3586,15 +3582,15 @@ Transactions Illimitées apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -3602,15 +3598,15 @@ Comptes illimités apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -3618,15 +3614,15 @@ Performance du Portefeuille apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -3634,7 +3630,7 @@ Hébergé localement, mises à jour manuelles. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -3642,11 +3638,11 @@ Gratuit apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -3654,7 +3650,7 @@ Pour les nouveaux investisseurs qui débutent en Bourse. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -3662,11 +3658,11 @@ Offre Ghostfolio cloud complètement administrée. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -3674,7 +3670,7 @@ Pour les investisseurs ambitieux qui ont besoin d’une vue complète de leurs actifs financiers. apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -3682,7 +3678,7 @@ Paiement unique, sans auto-renouvellement. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -3698,7 +3694,7 @@ C’est gratuit. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 @@ -3706,7 +3702,7 @@ Frais apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3730,11 +3726,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -3750,15 +3746,15 @@ Import et Export de Données apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -3774,7 +3770,7 @@ Support de la Communauté apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -3782,7 +3778,7 @@ Support par E-mail et Tchat apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -3826,7 +3822,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -3842,7 +3838,7 @@ Renouveler l’Abonnement apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -3850,7 +3846,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 @@ -3922,7 +3918,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3938,7 @@ Platformes apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 @@ -3977,32 +3973,24 @@ 47 - + Add Platform Ajoutez une Plateforme apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 Settings Paramètres - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 @@ -4102,7 +4090,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 @@ -4167,26 +4155,18 @@ Changelog - Historique des Modifications - - apps/client/src/app/pages/about/about-page.component.ts - 50 - + Historique des modifications - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License Licence - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 @@ -4263,7 +4243,7 @@ Market Mood - Sentiment du Marché + Sentiment du marché apps/client/src/app/pages/features/features-page.html 215 @@ -4321,8 +4301,8 @@ Personal Finance Tools Outils de Gestion de Patrimoine - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/common/src/lib/routes/routes.ts + 329 @@ -4579,7 +4559,7 @@ By Market - par Marchés + par marché apps/client/src/app/pages/portfolio/allocations/allocations-page.html 175 @@ -4670,7 +4650,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4690,7 +4670,7 @@ Configurer le compte apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 @@ -4854,7 +4834,7 @@ Si vous préférez exécuter Ghostfolio sur votre propre infrastructure, veuilez trouver le code source ainsi que des instructions supplémentaires sur GitHub. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 @@ -4882,7 +4862,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -5126,7 +5106,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -5145,2856 +5125,2922 @@ 386 - + faq foire-aux-questions - snake-case - - apps/client/src/app/app.component.ts - 82 - - - apps/client/src/app/core/paths.ts - 3 - - - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 - + kebab-case - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 245 - + features fonctionnalites - snake-case + kebab-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 255 + + + about + a-propos + kebab-case - apps/client/src/app/components/header/header.component.ts - 88 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/core/paths.ts - 4 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 214 + + + privacy-policy + politique-de-confidentialite + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 207 + + + license + licence + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + marches + kebab-case - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + prix + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - a-propos - snake-case - - apps/client/src/app/app.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 270 + + + register + enregistrement + kebab-case - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + ressources + kebab-case - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 322 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Cette page d’aperçu présente une collection d’outils de finances personnelles comparés à la solution open source alternative Ghostfolio. Si vous accordez de l’importance à la transparence, à la confidentialité des données et à la collaboration communautaire, Ghostfolio vous offre une excellente occasion de prendre le contrôle de votre gestion financière. - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explorez les liens ci-dessous pour comparer une variété d’outils de finances personnelles avec Ghostfolio. - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Solutions open source alternatives à - apps/client/src/app/pages/about/about-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + L’alternative open source à - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Cherchez-vous des alternatives open source à ? Ghostfolio est un outil de gestion de portefeuille puissant offrant aux particuliers une plateforme complète pour suivre, analyser et optimiser ses investissements. Que vous soyez un investisseur expérimenté ou que vous débutiez, Ghostfolio offre une interface utilisateur intuitive et une large gamme de fonctionnalités pour vous aider à prendre des décisions éclairées et à prendre le contrôle de votre avenir financier. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio est un logiciel open source (OSS), offrant une alternative économique, le rendant particulièrement adaptée aux personnes disposant d’un budget serré, telles que celles qui cherchent à atteindre le mouvement Financial Independence, Retire Early (FIRE). En s’appuyant sur les efforts collectifs d’une communauté de développeurs et de passionnés de finances personnelles, Ghostfolio améliore continuellement ses fonctionnalités, sa sécurité et son expérience utilisateur. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Regardons plus en détails ce que proposent Ghostfolio vs via la table de comparaison ci-dessous pour comprendre comment Ghostfolio se positionne par rapport à . Nous examinerons divers aspects tels que les fonctionnalités, la confidentialité des données, le prix, etc., afin de vous permettre de faire un choix éclairé en fonction de vos besoins personnels. - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternative-open-source-a + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 324 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Veuillez noter que les informations fournies dans le Ghostfolio vs via la table de comparaison se basent de nos recherches et analyses indépendantes. Ce site n’est pas affilié à ou tout autre produit mentionné dans la comparaison. Le paysage des outils de finances personnelles évoluant, il est essentiel de vérifier tout détail ou changement spécifique directement sur la page du produit concerné. Certaines données doivent être mises à jour ? Aidez-nous à maintenir les données exactes sur GitHub. - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Prêt à prendre vos investissements au niveau supérieur? - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Démarrer - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Suisse apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + 57 - - - privacy-policy - politique-de-confidentialite - snake-case - apps/client/src/app/app.component.ts - 76 + libs/ui/src/lib/i18n.ts + 93 + + + Global + Mondial - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/ui/src/lib/i18n.ts + 16 - - license - licence - snake-case + + (Last 24 hours) + (Derniers 24 heures) - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Derniers 30 jours) - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/open/open-page.html + 59 - - markets - marches - snake-case + + (Last 90 days) + (Derniers 90 jours) - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Choisissez ou déposez un fichier ici - apps/client/src/app/components/header/header.component.ts + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 + + + You are using the Live Demo. + Vous utilisez la Démo en Live. - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + Paiement unique, Paiement annuel - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribution des bénéfices de la société - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Fee + Frais - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + libs/ui/src/lib/i18n.ts + 37 + + + Interest + Intérêts - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 + + + Revenue for lending out money + Revenue lié au prêt d’argent - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Ajouter un Tag - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - pricing - prix - snake-case + + Do you really want to delete this tag? + Confirmez la suppression de ce tag ? - apps/client/src/app/app.component.ts + apps/client/src/app/components/admin-tag/admin-tag.component.ts 85 + + + Update tag + Mettre à jour le tag - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Ajouter un tag - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Currency Cluster Risks + Risques de change - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 + + + Account Cluster Risks + Risques liés aux regroupements de comptes - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 + + + Transfer Cash Balance + Transfert de Cash Balance - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Version + Version - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Paramètres - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + De - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + A - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transférer - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Statut - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 31 + + + Access + Accès - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 26 + + + Asset Profile + Profil d’Actif - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Confirmez la suppressoion de ce profil d’actif? - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Search + Chercher - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Ajouter manuellement - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Dernier All Time High - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 - - register - enregistrement - snake-case + + User + Utilisateurs - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs tableau comparatif - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + Open Source Wealth Management Software + Logiciel libre de Gestion de Patrimoine - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/pages/i18n/i18n-page.html + 97 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + application, actif, cryptomonnaies, dashboard, etf, finance, gestion, performance, portefeuille, logiciel, action, trading, patrimoine, web3 - apps/client/src/app/core/paths.ts + apps/client/src/app/pages/i18n/i18n-page.html 9 + + + Oops, cash balance transfer has failed. + Oops, échec du transfert de la cash balance. - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 + + + Extreme Fear + Extreme Peur - apps/client/src/app/pages/features/features-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 100 + + + Extreme Greed + Extreme Cupidité - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 101 + + + Neutral + Neutre - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + libs/ui/src/lib/i18n.ts + 104 - - resources - ressources - snake-case + + Oops! Could not parse historical data. + Oops! Echec du parsing des données historiques. - apps/client/src/app/app.component.ts - 87 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 + + + Do you really want to delete this system message? + Confirmer la suppresion de ce message système? - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + 50-Day Trend + Tendance 50 jours - apps/client/src/app/components/header/header.component.ts - 92 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend + Tendance 200 jours - apps/client/src/app/core/paths.ts - 10 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Cash Balances + Cash Balances - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Starting from + A partir de - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 + + + year + années - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 + + + Do you really want to delete this account balance? + Voulez-vous vraiment supprimer ce solde de compte ? - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + If a translation is missing, kindly support us in extending it here. + Si une traduction est manquante, veuillez nous aider à compléter la traduction here. - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 + + + The current market price is + Le prix actuel du marché est - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 + + + Test + Test - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 + + + Date Range + Intervalle de Date - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + libs/ui/src/lib/assistant/assistant.html + 130 + + + Permission + Autorisation - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Cette page d’aperçu présente une collection d’outils de finances personnelles comparés à la solution open source alternative Ghostfolio. Si vous accordez de l’importance à la transparence, à la confidentialité des données et à la collaboration communautaire, Ghostfolio vous offre une excellente occasion de prendre le contrôle de votre gestion financière. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explorez les liens ci-dessous pour comparer une variété d’outils de finances personnelles avec Ghostfolio. + + Restricted view + Vue restreinte - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Open Source Alternative to - Solutions open source alternatives à - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Open Source Alternative to - Solutions open source alternatives à + + Oops! Could not grant access. + Oops! Impossible d’accorder l’accès. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - The Open Source Alternative to - L’alternative open source à + + Private + Privée - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Cherchez-vous des alternatives open source à ? Ghostfolio est un outil de gestion de portefeuille puissant offrant aux particuliers une plateforme complète pour suivre, analyser et optimiser ses investissements. Que vous soyez un investisseur expérimenté ou que vous débutiez, Ghostfolio offre une interface utilisateur intuitive et une large gamme de fonctionnalités pour vous aider à prendre des décisions éclairées et à prendre le contrôle de votre avenir financier. + + Job Queue + File d’attente - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + libs/common/src/lib/routes/routes.ts + 46 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio est un logiciel open source (OSS), offrant une alternative économique, le rendant particulièrement adaptée aux personnes disposant d’un budget serré, telles que celles qui cherchent à atteindre le mouvement Financial Independence, Retire Early (FIRE). En s’appuyant sur les efforts collectifs d’une communauté de développeurs et de passionnés de finances personnelles, Ghostfolio améliore continuellement ses fonctionnalités, sa sécurité et son expérience utilisateur. + + Market data is delayed for + Les données du marché sont retardées de - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Regardons plus en détails ce que proposent Ghostfolio vs via la table de comparaison ci-dessous pour comprendre comment Ghostfolio se positionne par rapport à . Nous examinerons divers aspects tels que les fonctionnalités, la confidentialité des données, le prix, etc., afin de vous permettre de faire un choix éclairé en fonction de vos besoins personnels. + + Investment + Investissement - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - open-source-alternative-to - alternative-open-source-a - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Veuillez noter que les informations fournies dans le Ghostfolio vs via la table de comparaison se basent de nos recherches et analyses indépendantes. Ce site n’est pas affilié à ou tout autre produit mentionné dans la comparaison. Le paysage des outils de finances personnelles évoluant, il est essentiel de vérifier tout détail ou changement spécifique directement sur la page du produit concerné. Certaines données doivent être mises à jour ? Aidez-nous à maintenir les données exactes sur GitHub. + + Absolute Asset Performance + Performance des Actifs en valeur absolue - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Ready to take your investments to the next level? - Prêt à prendre vos investissements au niveau supérieur? + + Asset Performance + Performance des Actifs - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Get Started - Démarrer + + Absolute Currency Performance + Performance des devises en valeur absolue - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Switzerland - Suisse + + Currency Performance + Performance des devises - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 + + + Absolute Net Performance + Performance nette absolue - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - Global - Mondial + + Net Performance + Performance nette - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 + + + Week to date + Week to date - libs/ui/src/lib/i18n.ts - 16 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - (Last 24 hours) - (Derniers 24 heures) + + WTD + WTD - apps/client/src/app/pages/open/open-page.html - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - (Last 30 days) - (Derniers 30 jours) + + Month to date + Month to date - apps/client/src/app/pages/open/open-page.html - 48 + libs/ui/src/lib/assistant/assistant.component.ts + 348 + + + MTD + MTD - apps/client/src/app/pages/open/open-page.html - 59 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - (Last 90 days) - (Derniers 90 jours) + + Year to date + Year to date - apps/client/src/app/pages/open/open-page.html - 127 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Choose or drop a file here - Choisissez ou déposez un fichier ici + + View + Vue - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - You are using the Live Demo. - Vous utilisez la Démo en Live. - apps/client/src/app/app.component.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - One-time fee, annual account fees - Paiement unique, Paiement annuel + + Oops! A data provider is experiencing the hiccups. + Oops! Un fournisseur de données rencontre des difficultés. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Distribution of corporate earnings - Distribution des bénéfices de la société + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Si vous prenez votre retraite aujourd’hui, vous pourrez retirer par an ou par mois, sur la base de vos actifs totaux de et un taux de retrait de 4 %. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Fee - Frais + + Reset Filters + Réinitialiser les Filtres - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.html + 224 - - Interest - Intérêts + + year + année - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Revenue for lending out money - Revenue lié au prêt d’argent + + years + années - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Add Tag - Ajouter un Tag + + Apply Filters + Appliquer les Filtres - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + libs/ui/src/lib/assistant/assistant.html + 234 - - Do you really want to delete this tag? - Confirmez la suppression de ce tag ? + + Data Gathering + Collecter les données - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Update tag - Mettre à jour le tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - Add tag - Ajouter un tag + + General + Général - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Currency Cluster Risks - Risques de change + + Cloud + Cloud - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Account Cluster Risks - Risques liés aux regroupements de comptes - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + libs/common/src/lib/routes/routes.ts + 240 - - Transfer Cash Balance - Transfert de Cash Balance + + Self-Hosting + Self-Hosting - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + libs/common/src/lib/routes/routes.ts + 248 - - Benchmark - Benchmark + + self-hosting + self-hosting + kebab-case - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + libs/common/src/lib/routes/routes.ts + 243 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + libs/common/src/lib/routes/routes.ts + 246 - - Settings - Paramètres + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! Il semble que vous fassiez trop de requêtes. Veuillez ralentir un peu. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - From - De + + My Account + Mon Compte - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - To - A + + Active + Actif - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 - - Transfer - Transférer + + Closed + Clôturé - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Membership - Statut + + Activity + Activitées - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 + + + Dividend Yield + Rendement en Dividende - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - Access - Accès + + Execute Job + Execute la tâche - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 + + + Priority + Priorité - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - Find holding... - Chercher un actif... + + This action is not allowed. + Cette action n’est pas autorisée. - libs/ui/src/lib/assistant/assistant.component.ts - 143 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - No entries... - Pas d’entrées ... + + Liquidity + Liquiditées - libs/ui/src/lib/assistant/assistant.html - 62 + libs/ui/src/lib/i18n.ts + 48 + + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} autres {activities}} - libs/ui/src/lib/assistant/assistant.html - 85 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Asset Profile - Profil d’Actif + + Buy and sell + Achat et Vente - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + libs/ui/src/lib/i18n.ts + 8 - - Do you really want to delete this asset profile? - Confirmez la suppressoion de ce profil d’actif? + + Delete Activities + Supprimer les Activitées - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Search - Chercher + + Internationalization + Internationalisation - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + libs/common/src/lib/routes/routes.ts + 119 - - Add Manually - Ajouter manuellement + + Do you really want to close your Ghostfolio account? + Confirmer la suppresion de votre compte Ghostfolio ? - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. + + Danger Zone + Zone de danger - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Last All Time High - Dernier All Time High + + Close Account + Supprimer le compte - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - User - Utilisateurs + + By ETF Holding + Par détention ETF - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Ghostfolio vs comparison table - Ghostfolio vs tableau comparatif + + Approximation based on the top holdings of each ETF + Approximation basée sur les principaux titres de chaque ETF - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Open Source Wealth Management Software - Logiciel libre de Gestion de Patrimoine + + Join now or check out the example account + Rejoindre ou voir un compte démo - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/landing/landing-page.html + 434 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - application, actif, cryptomonnaies, dashboard, etf, finance, gestion, performance, portefeuille, logiciel, action, trading, patrimoine, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Oops, cash balance transfer has failed. - Oops, échec du transfert de la cash balance. + + Oops! There was an error setting up biometric authentication. + Oops! Une erreur s’est produite lors de la configuration de l’authentification biométrique. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Extreme Fear - Extreme Peur + + Show more + Voir plus - libs/ui/src/lib/i18n.ts - 100 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Extreme Greed - Extreme Cupidité + + Benchmarks + Benchmarks - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - Neutral - Neutre + + Delete Profiles + Supprimer des Profils - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Oops! Could not parse historical data. - Oops! Echec du parsing des données historiques. + + Do you really want to delete these profiles? + Confirmer la suppression de ces Profils? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Do you really want to delete this system message? - Confirmer la suppresion de ce message système? + + Oops! Could not delete profiles. + Oops! Echec de la suppression de Profils. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - 50-Day Trend - Tendance 50 jours + + Table + Table - libs/ui/src/lib/benchmark/benchmark.component.html + apps/client/src/app/components/home-holdings/home-holdings.html 16 - - 200-Day Trend - Tendance 200 jours - - libs/ui/src/lib/benchmark/benchmark.component.html - 45 - - - - Cash Balances - Cash Balances - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 - - - - Starting from - A partir de - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 - - - - year - années - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 - - - - Do you really want to delete this account balance? - Voulez-vous vraiment supprimer ce solde de compte ? - - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 - - - - If a translation is missing, kindly support us in extending it here. - Si une traduction est manquante, veuillez nous aider à compléter la traduction here. - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 - - - - The current market price is - Le prix actuel du marché est - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 - - - - Test - Test - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 - - - - Date Range - Intervalle de Date + + Chart + Tableau - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Permission - Autorisation - - apps/client/src/app/components/access-table/access-table.component.html - 18 - + + Would you like to refine your personal investment strategy? + Souhaitez-vous affiner votre stratégie d’investissement personnelle? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/pages/public/public-page.html + 211 - - Restricted view - Vue restreinte - - apps/client/src/app/components/access-table/access-table.component.html - 26 - + + Alternative + Alternative - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - Oops! Could not grant access. - Oops! Impossible d’accorder l’accès. + + App + App - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Private - Privée + + Budgeting + Budget - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - Job Queue - File d’attente - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 - + + Community + Communauté - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Market data is delayed for - Les données du marché sont retardées de + + Family Office + Family Office - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Investment - Investissement - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 - - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 - + + Investor + Investisseur apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 87 - - Absolute Asset Performance - Performance des Actifs en valeur absolue - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 - - - - Asset Performance - Performance des Actifs - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 - - - - Absolute Currency Performance - Performance des devises en valeur absolue - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 - - - - Currency Performance - Performance des devises - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 - - - - Absolute Net Performance - Performance nette absolue - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 - - - - Net Performance - Performance nette - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 - - - - Week to date - Week to date - - libs/ui/src/lib/assistant/assistant.component.ts - 222 - - - - WTD - WTD - - libs/ui/src/lib/assistant/assistant.component.ts - 222 - - - - Month to date - Month to date - - libs/ui/src/lib/assistant/assistant.component.ts - 226 - - - - MTD - MTD - - libs/ui/src/lib/assistant/assistant.component.ts - 226 - - - - Year to date - Year to date - - libs/ui/src/lib/assistant/assistant.component.ts - 230 - - - - View - Vue - - apps/client/src/app/components/access-table/access-table.component.html - 23 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 - - - - Oops! A data provider is experiencing the hiccups. - Oops! Un fournisseur de données rencontre des difficultés. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Si vous prenez votre retraite aujourd’hui, vous pourrez retirer par an ou par mois, sur la base de vos actifs totaux de et un taux de retrait de 4 %. + + Personal Finance + Gestion de Patrimoine - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - - Reset Filters - Réinitialiser les Filtres + + + Privacy + Confidentialité - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - year - année + + Software + Logiciels - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - years - années + + Tool + Outils - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Apply Filters - Appliquer les Filtres + + User Experience + Expérience Utilisateur - libs/ui/src/lib/assistant/assistant.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - Data Gathering - Collecter les données + + Wealth + Patrimoine - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 + + + Wealth Management + Gestion de Patrimoine - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - General - Général + + Australia + Australie - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 74 - - Cloud - Cloud + + Austria + Autriche - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + libs/ui/src/lib/i18n.ts + 75 + + + Belgium + Belgique - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgarie - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 78 + + + Canada + Canada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - self-hosting - self-hosting + + Czech Republic + République Tchèque - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/ui/src/lib/i18n.ts + 80 - - FAQ - FAQ + + Finland + Finlande - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 81 + + + France + France - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 82 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! Il semble que vous fassiez trop de requêtes. Veuillez ralentir un peu. + + Germany + Allemagne - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 83 - - My Account - Mon Compte + + India + Inde - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 84 - - Active - Actif + + Italy + Italie - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 85 - - Closed - Clôturé + + Netherlands + Pays-Bas - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + libs/ui/src/lib/i18n.ts + 87 - - Activity - Activitées + + New Zealand + Nouvelle-Zélande - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 88 - - Dividend Yield - Rendement en Dividende + + Poland + Pologne - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 89 - - Execute Job - Execute la tâche + + Romania + Roumanie - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 90 - - Priority - Priorité + + South Africa + Afrique du Sud - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 92 - - This action is not allowed. - Cette action n’est pas autorisée. + + Thailand + Thaïlande - apps/client/src/app/core/http-response.interceptor.ts - 64 + libs/ui/src/lib/i18n.ts + 94 - - Liquidity - Liquiditées + + United States + Etats-Unis libs/ui/src/lib/i18n.ts - 48 + 97 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} autres {activities}} + + Error + Erreur - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - Buy and sell - Achat et Vente + + Deactivate + Désactiver - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/components/rule/rule.component.html + 72 - - Delete Activities - Supprimer les Activitées + + Activate + Activer - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/components/rule/rule.component.html + 74 - - Internationalization - Internationalisation + + Inactive + Inactif - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Do you really want to close your Ghostfolio account? - Confirmer la suppresion de votre compte Ghostfolio ? + + Cancel + Annuler - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/ui/src/lib/i18n.ts + 9 - - Danger Zone - Zone de danger + + Close + Fermer - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + libs/ui/src/lib/i18n.ts + 11 - - Close Account - Supprimer le compte + + Yes + Oui - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + libs/ui/src/lib/i18n.ts + 32 - - By ETF Holding - Par détention ETF + + Copy link to clipboard + Copier le lien dans le presse-papiers - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Approximation based on the top holdings of each ETF - Approximation basée sur les principaux titres de chaque ETF + + Portfolio Snapshot + Résumé du portefeuille - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Join now or check out the example account - Rejoindre ou voir un compte démo + + Change with currency effect Change + Variation avec taux de change appliqué Variation - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Oops! There was an error setting up biometric authentication. - Oops! Une erreur s’est produite lors de la configuration de l’authentification biométrique. + + Performance with currency effect Performance + Performance avec taux de change appliqué Performance - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Show more - Voir plus + + Threshold Min + Seuil Min - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Benchmarks - Benchmarks + + Threshold Max + Seuil Max - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Delete Profiles - Supprimer des Profils + + Close + Fermer - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Do you really want to delete these profiles? - Confirmer la suppression de ces Profils? + + Customize + Personnaliser - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/rule/rule.component.html + 67 - - Oops! Could not delete profiles. - Oops! Echec de la suppression de Profils. + + No auto-renewal. + Pas de renouvellement automatique. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Table - Table + + Today + Aujourd’hui - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 24 - - Chart - Tableau + + This year + Cette année - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/pages/public/public-page.html + 42 - - Would you like to refine your personal investment strategy? - Souhaitez-vous affiner votre stratégie d’investissement personnelle? + + From the beginning + Depuis le début apps/client/src/app/pages/public/public-page.html - 211 + 60 - - Alternative - Alternative + + Oops! Invalid currency. + Oups! Devise non valide. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - App - App + + This page has been archived. + Cette page a été archivée. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Budgeting - Budget + + is Open Source Software + est un logiciel open source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Community - Communauté + + is not Open Source Software + n’est pas un logiciel open source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Family Office - Family Office + + is Open Source Software + est un logiciel open source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Investor - Investisseur + + is not Open Source Software + n’est pas un logiciel open source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Open Source - Open Source + + can be self-hosted + peut être auto-hébergé - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Personal Finance - Gestion de Patrimoine + + cannot be self-hosted + ne peut pas être auto-hébergé - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Privacy - Confidentialité + + can be self-hosted + peut être auto-hébergé - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Software - Logiciels + + cannot be self-hosted + ne peut pas être auto-hébergé - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + + can be used anonymously + peut être utilisé de manière anonyme + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Tool - Outils + + cannot be used anonymously + ne peut pas être utilisé de manière anonyme - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - User Experience - Expérience Utilisateur + + can be used anonymously + peut être utilisé de manière anonyme - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Wealth - Patrimoine + + cannot be used anonymously + ne peut pas être utilisé de manière anonyme - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Wealth Management - Gestion de Patrimoine + + offers a free plan + propose un plan gratuit - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Australia - Australie + + does not offer a free plan + ne propose pas de plan gratuit - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Austria - Autriche + + offers a free plan + propose un plan gratuit - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Belgium - Belgique + + does not offer a free plan + ne propose pas de plan gratuit - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Bulgaria - Bulgarie + + Oops! Could not find any assets. + Oups! Aucun actif n’a été trouvé. - libs/ui/src/lib/i18n.ts - 78 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Canada - Canada + + Data Providers + Fournisseurs de données - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Czech Republic - République Tchèque + + Set API key + Définir clé API - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - Finland - Finlande + + Get access to 80’000+ tickers from over 50 exchanges + Accédez à plus de 80 000 symboles financiers issus de plus de 50 marchés boursiers. libs/ui/src/lib/i18n.ts - 81 + 24 - - France - France + + Ukraine + Ukraine libs/ui/src/lib/i18n.ts - 82 + 95 - - Germany - Allemagne + + Join now + Rejoindre maintenant - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - India - Inde + + Glossary + Glossaire - libs/ui/src/lib/i18n.ts - 84 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - Italy - Italie - libs/ui/src/lib/i18n.ts - 85 + libs/common/src/lib/routes/routes.ts + 293 - - Netherlands - Pays-Bas + + Guides + Guides - libs/ui/src/lib/i18n.ts - 87 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - New Zealand - Nouvelle-Zélande - libs/ui/src/lib/i18n.ts - 88 + libs/common/src/lib/routes/routes.ts + 301 - - Poland - Pologne + + guides + guides + kebab-case - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 296 - - - Romania - Roumanie - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 299 - - South Africa - Afrique du Sud + + glossary + glossaire + kebab-case - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 288 - - - Thailand - Thaïlande - libs/ui/src/lib/i18n.ts - 94 + libs/common/src/lib/routes/routes.ts + 291 - - United States - Etats-Unis + + Threshold range + Plage de seuil - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Error - Erreur + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray utilise l’analyse statique pour détecter d’éventuels problèmes et risques dans votre portefeuille. Ajustez les règles ci-dessous et définissez des seuils personnalisés afin de les adapter à votre stratégie d’investissement. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Deactivate - Désactiver + + Economic Market Cluster Risks + Risques liés aux zones économiques du marché - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Activate - Activer + + of + sur - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Inactive - Inactif + + daily requests + requêtes journalières - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Cancel - Annuler + + Remove API key + Retirer la clé API - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Close - Fermer + + Do you really want to delete the API key? + Voulez-vous vraiment supprimer la clé API? + + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 + + + + Please enter your Ghostfolio API key: + Veuillez saisir votre clé API Ghostfolio : - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Yes - Oui + + API Requests Today + Requêtes API aujourd’hui - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Copy link to clipboard - Copier le lien dans le presse-papiers + + Could not generate an API key + Impossible de générer une clé API - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Portfolio Snapshot - Résumé du portefeuille + + Set this API key in your self-hosted environment: + Définissez cette clé API dans votre environnement auto-hébergé : - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Change with currency effect Change - Variation avec taux de change appliqué Variation + + Ghostfolio Premium Data Provider API Key + Clé API du fournisseur de données Ghostfolio Premium - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Performance with currency effect Performance - Performance avec taux de change appliqué Performance + + Do you really want to generate a new API key? + Voulez-vous vraiment générer une nouvelle clé API ? - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Min - Seuil Min + + Tag + Étiquette - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + libs/ui/src/lib/assistant/assistant.html + 194 - - Threshold Max - Seuil Max + + API Key + Clé API - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Close - Fermer + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Générer la clé API du fournisseur de données Ghostfolio Premium pour les environnements auto-hébergés... - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - Customize - Personnaliser + + out of + sur - apps/client/src/app/components/rule/rule.component.html - 67 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - No auto-renewal. - Pas de renouvellement automatique. + + rules align with your portfolio. + règles sont en accord avec votre portefeuille. - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - Today - Aujourd’hui + + Save + Sauvegarder - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - This year - Cette année + + Asset Class Cluster Risks + Risques liés aux regroupements de classes d’actifs - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - From the beginning - Depuis le début + + Me + Moi - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - Oops! Invalid currency. - Oups! Devise non valide. + + Received Access + Accès reçu - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - This page has been archived. - Cette page a été archivée. + + Please enter your Ghostfolio API key. + Veuillez saisir votre clé API Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is Open Source Software - est un logiciel open source + + AI prompt has been copied to the clipboard + Le prompt IA a été copié dans le presse-papiers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is not Open Source Software - n’est pas un logiciel open source + + Link has been copied to the clipboard + Le lien a été copié dans le presse-papiers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is Open Source Software - est un logiciel open source + + Regional Market Cluster Risks + Risques liés aux regroupements de marchés régionaux - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - is not Open Source Software - n’est pas un logiciel open source + + Lazy + Paresseux - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be self-hosted - peut être auto-hébergé + + Instant + Instantané - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be self-hosted - ne peut pas être auto-hébergé + + Default Market Price + Prix du marché par défaut - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - can be self-hosted - peut être auto-hébergé + + Mode + Mode - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - cannot be self-hosted - ne peut pas être auto-hébergé + + Selector + Selecteur - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - can be used anonymously - peut être utilisé de manière anonyme + + HTTP Request Headers + En-têtes de requête HTTP - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - cannot be used anonymously - ne peut pas être utilisé de manière anonyme + + end of day + fin de journée - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be used anonymously - peut être utilisé de manière anonyme + + real-time + temps réel - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be used anonymously - ne peut pas être utilisé de manière anonyme + + Open Duck.ai + Ouvrir Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - offers a free plan - propose un plan gratuit + + Create + Créer - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - does not offer a free plan - ne propose pas de plan gratuit + + Market Data + Données du marché - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - offers a free plan - propose un plan gratuit + + Change + Variation - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - does not offer a free plan - ne propose pas de plan gratuit + + Performance + Performance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Oops! Could not find any assets. - Oups! Aucun actif n’a été trouvé. - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Data Providers - Fournisseurs de données + + Copy portfolio data to clipboard for AI prompt + Copier les données du portefeuille dans le presse-papiers pour le prompt IA - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Set API key - Définir clé API + + Copy AI prompt to clipboard for analysis + Copier le prompt IA dans le presse-papiers pour analyse - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Get access to 80’000+ tickers from over 50 exchanges - Accédez à plus de 80 000 symboles financiers issus de plus de 50 marchés boursiers. + + Armenia + Arménie libs/ui/src/lib/i18n.ts - 24 + 73 - - Ukraine - Ukraine + + British Virgin Islands + Îles Vierges britanniques libs/ui/src/lib/i18n.ts - 95 + 77 - - Join now - Rejoindre maintenant + + Singapore + Singapour - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 91 - - Glossary - Glossaire - - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 - + + Terms and Conditions + Conditions générales - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Guides - Guides + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Veuillez garder votre jeton de sécurité en lieu sûr. Si vous le perdez, vous ne pourrez pas récupérer votre compte. - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + Je comprends que si je perds mon jeton de sécurité, je ne pourrai pas récupérer mon compte - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - guides - guides - snake-case + + Continue + Continuer - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Voici votre jeton de sécurité. Il n’est visible qu’une seule fois, veuillez le conserver en lieu sûr. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - glossary - glossaire - snake-case + + Security token + Jeton de sécurité - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Threshold range - Plage de seuil + + Do you really want to generate a new security token for this user? + Voulez-vous vraiment générer un nouveau jeton de sécurité pour cet utilisateur ? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray utilise l’analyse statique pour détecter d’éventuels problèmes et risques dans votre portefeuille. Ajustez les règles ci-dessous et définissez des seuils personnalisés afin de les adapter à votre stratégie d’investissement. + + Generate Security Token + Générer un jeton de sécurité - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Economic Market Cluster Risks - Risques liés aux zones économiques du marché + + United Kingdom + Royaume-Uni - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + libs/ui/src/lib/i18n.ts + 96 - - of - sur + + Terms of Service + Conditions d’utilisation - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/app.component.html + 112 - - daily requests - requêtes journalières + + terms-of-service + conditions-d-utilisation + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/common/src/lib/routes/routes.ts + 212 - - - Remove API key - Retirer la clé API - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + libs/common/src/lib/routes/routes.ts + 215 - - Do you really want to delete the API key? - Voulez-vous vraiment supprimer la clé API? + + Terms of Service + Conditions d’utilisation - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 217 - - Please enter your Ghostfolio API key: - Veuillez saisir votre clé API Ghostfolio : + + Terms of Service + Conditions d’utilisation - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - I have an API key - J’ai une clé API + + and I agree to the Terms of Service. + et j’accepte les conditions d’utilisation. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - API Requests Today - Requêtes API aujourd’hui - - apps/client/src/app/components/admin-users/admin-users.html - 178 + + () is already in use. + () est déjà utilisé. + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Could not generate an API key - Impossible de générer une clé API + + An error occurred while updating to (). + Une erreur s’est produite lors de la mise à jour vers (). - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Set this API key in your self-hosted environment: - Définissez cette clé API dans votre environnement auto-hébergé : + + Apply + Appliquer - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Ghostfolio Premium Data Provider API Key - Clé API du fournisseur de données Ghostfolio Premium + + with API access for + avec accès API pour - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Do you really want to generate a new API key? - Voulez-vous vraiment générer une nouvelle clé API ? + + Gather Recent Historical Market Data + Collecter les données récentes du marché historique - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Tag - Étiquette + + Gather All Historical Market Data + Collecter toutes les données du marché historique - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - API Key - Clé API + + Gather Historical Market Data + Collecter les données du marché historique - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Générer la clé API du fournisseur de données Ghostfolio Premium pour les environnements auto-hébergés... + + Data Gathering is off + La collecte de données est désactivée - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - out of - sur + + Performance Calculation + Calcul de performance - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - rules align with your portfolio. - règles sont en accord avec votre portefeuille. + + someone + quelqu’un - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Save - Sauvegarder + + Add asset to watchlist + Ajouter un actif à la liste de suivi - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - Asset Class Cluster Risks - Risques liés aux regroupements de classes d’actifs + + Watchlist + Liste de suivi - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Me - Moi - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/pages/features/features-page.html + 197 - - Received Access - Accès reçu + + Watchlist + Liste de suivi - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + libs/common/src/lib/routes/routes.ts + 110 - - Please enter your Ghostfolio API key. - Veuillez saisir votre clé API Ghostfolio. + + Do you really want to delete this item? + Voulez-vous vraiment supprimer cet élément? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - AI prompt has been copied to the clipboard - Le prompt IA a été copié dans le presse-papiers + + Log out + Se déconnecter - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/header/header.component.html + 329 - - Link has been copied to the clipboard - Le lien a été copié dans le presse-papiers + + Calculations are based on delayed market data and may not be displayed in real-time. + Les calculs sont basés sur des données de marché retardées et peuvent ne pas être affichés en temps réel. - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Early Access - Accès anticipé - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/markets/markets.html + 52 - - Regional Market Cluster Risks - Risques liés aux regroupements de marchés régionaux + + changelog + journal-des-modifications + kebab-case - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + libs/common/src/lib/routes/routes.ts + 180 - - - Lazy - Paresseux - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/common/src/lib/routes/routes.ts + 183 - - Instant - Instantané + + Demo user account has been synced. + Le compte utilisateur de démonstration a été synchronisé. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Default Market Price - Prix du marché par défaut + + Sync Demo User Account + Synchroniser le compte utilisateur de démonstration - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Mode - Mode + + Emergency Fund: Set up + Fonds d’urgence : Mise en place - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Selector - Selecteur + + No emergency fund has been set up + Aucun fonds d’urgence n’a été mis en place - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - HTTP Request Headers - En-têtes de requête HTTP + + An emergency fund has been set up + Un fonds d’urgence a été mis en place - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - end of day - fin de journée + + Fee Ratio + Ratio de frais - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - real-time - temps réel + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Les frais dépassent ${thresholdMax}% de votre investissement initial (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Open Duck.ai - Ouvrir Duck.ai + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Les frais ne dépassent pas ${thresholdMax}% de votre investissement initial (${feeRatio}%) - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Create - Créer + + Name + Nom - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Market Data - Données de Marché + + Find holding or page... + Rechercher une position ou une page... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Change - Variation + + Quick Links + Liens rapides - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 43 - - Performance - Performance + + Asset Profiles + Profils d’Actifs - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 99 + + + Live Demo + Démo Live - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/common/src/lib/routes/routes.ts + 231 - - Copy portfolio data to clipboard for AI prompt - Copier les données du portefeuille dans le presse-papiers pour le prompt IA + + Open Source Alternative to + Solutions open source alternatives à - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 326 - - Copy AI prompt to clipboard for analysis - Copier le prompt IA dans le presse-papiers pour analyse + + Single Account + Compte Unique - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Armenia - Arménie + + Your net worth is managed by a single account + Votre patrimoine est géré par un compte unique - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - British Virgin Islands - Îles Vierges britanniques + + Your net worth is managed by ${accountsLength} accounts + Votre patrimoine est géré par ${accountsLength} comptes - libs/ui/src/lib/i18n.ts - 77 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Singapore - Singapour + + Holdings + Positions - libs/ui/src/lib/i18n.ts - 91 + libs/ui/src/lib/assistant/assistant.html + 69 - - Terms and Conditions - Conditions générales + + personal-finance-tools + outils-finance-personnelle + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 312 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Veuillez garder votre jeton de sécurité en lieu sûr. Si vous le perdez, vous ne pourrez pas récupérer votre compte. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 315 - - - I understand that if I lose my security token, I cannot recover my account - Je comprends que si je perds mon jeton de sécurité, je ne pourrai pas récupérer mon compte - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 323 - - Continue - Continuer + + markets + marches + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 304 - - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Voici votre jeton de sécurité. Il n’est visible qu’une seule fois, veuillez le conserver en lieu sûr. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 307 - - Security token - Jeton de sécurité + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Alimentez votre Ghostfolio auto-hébergé avec un fournisseur de données puissant pour accéder à plus de 80 000 tickers issus de plus de 50 bourses dans le monde entier. - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Do you really want to generate a new security token for this user? - Voulez-vous vraiment générer un nouveau jeton de sécurité pour cet utilisateur ? + + Get Access + Obtenir l’accès - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Generate Security Token - Générer un jeton de sécurité + + Learn more + En savoir plus - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - United Kingdom - Royaume-Uni + + new + nouveau - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms of Service - Conditions d’utilisation + + Limited Offer! + Offre Limitée ! - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - terms-of-service - conditions-d-utilisation - snake-case + + Get extra + Obtenez supplémentaires - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Disponible - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Indisponible - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + new - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Terms of Service - Conditions d’utilisation + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - Conditions d’utilisation + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - and I agree to the Terms of Service. - et j’accepte les conditions d’utilisation. + + Equity + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - () is already in use. - () est déjà utilisé. + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - An error occurred while updating to (). - Une erreur s’est produite lors de la mise à jour vers (). + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Apply - Appliquer + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - with API access for - avec accès API pour + + Fixed Income + Fixed Income - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather Recent Historical Market Data - Collecter les données récentes du marché historique + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather All Historical Market Data - Collecter toutes les données du marché historique + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Historical Market Data - Collecter les données du marché historique + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off - La collecte de données est désactivée + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation - Calcul de performance + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone - quelqu’un + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist - Ajouter un actif à la liste de suivi + + Investment + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist - Liste de suivi + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - Liste de suivi + + start + start + kebab-case - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - Obtenir un accès anticipé + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - Voulez-vous vraiment supprimer cet élément? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - Log out + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 57a3b7162..cd0db27c1 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -103,7 +103,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -111,11 +111,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 224 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -139,7 +139,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -147,11 +147,11 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + 46 apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -163,16 +163,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + 139 libs/ui/src/lib/activities-table/activities-table.component.html 138 - - libs/ui/src/lib/benchmark/benchmark.component.html - 4 - libs/ui/src/lib/holdings-table/holdings-table.component.html 28 @@ -211,15 +207,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 205 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 208 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 211 libs/ui/src/lib/account-balances/account-balances.component.html @@ -259,11 +255,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -291,11 +287,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -307,7 +303,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 155 + 169 @@ -347,7 +343,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 308 @@ -367,7 +363,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 155 @@ -401,13 +397,17 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html 110 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + Asset Profiles Profilo dell’asset - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 @@ -459,7 +459,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + 161 libs/ui/src/lib/account-balances/account-balances.component.html @@ -483,7 +483,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 109 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -507,7 +507,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + 38 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -531,7 +531,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 338 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -555,7 +555,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + 45 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -579,7 +579,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + 345 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -599,7 +599,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + 212 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -631,7 +631,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -639,7 +639,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -647,7 +647,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -743,7 +743,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -759,11 +759,11 @@ Utente apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 @@ -803,11 +803,15 @@ Panoramica apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 @@ -815,11 +819,11 @@ Portafoglio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 @@ -827,7 +831,7 @@ Account apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -835,15 +839,15 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -855,11 +859,11 @@ Controllo amministrativo apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 @@ -871,11 +875,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -891,15 +895,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -915,11 +919,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -927,7 +931,7 @@ Io apps/client/src/app/components/header/header.component.html - 207 + 213 @@ -935,7 +939,7 @@ Il mio Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 @@ -943,7 +947,7 @@ Informazioni su Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -959,7 +963,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -975,12 +979,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1002,12 +1010,16 @@ Sign in Accedi - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -1015,7 +1027,11 @@ Ops! Token di sicurezza errato. apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1037,6 +1053,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1053,6 +1073,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -1070,8 +1098,8 @@ or oppure - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1095,7 +1123,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1127,7 +1155,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1163,7 +1191,7 @@ Investimento apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1255,7 +1283,7 @@ Dividendo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1267,7 +1295,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 @@ -1291,7 +1319,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + 277 apps/client/src/app/pages/public/public-page.html @@ -1311,7 +1339,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 289 @@ -1319,7 +1347,7 @@ Tag apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1335,7 +1363,7 @@ Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -1383,7 +1411,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -1395,7 +1423,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -1407,7 +1435,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -1419,7 +1447,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -1431,7 +1459,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -1439,11 +1467,11 @@ Bene apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1454,16 +1482,12 @@ About Informazioni su - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 @@ -1551,7 +1575,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -1563,7 +1587,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -1602,12 +1626,8 @@ Privacy Policy Informativa sulla privacy - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -1615,7 +1635,7 @@ Il mio Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1623,7 +1643,7 @@ Inserisci il tuo codice del buono: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1631,7 +1651,7 @@ Impossibile riscattare il codice del buono apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1639,7 +1659,7 @@ Il codice del buono è stato riscattato apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1647,7 +1667,7 @@ Ricarica apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1671,7 +1691,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -1691,7 +1711,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -1783,7 +1803,7 @@ Accesso concesso apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 @@ -1806,8 +1826,8 @@ Accounts Account - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -1859,7 +1879,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + 145 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1910,16 +1930,16 @@ Admin Control Controllo amministrativo - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -1933,21 +1953,21 @@ Frequently Asked Questions (FAQ) Domande più frequenti (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Features Funzionalità - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -1955,47 +1975,43 @@ Panoramica apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Markets Mercati - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -2006,8 +2022,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -2090,12 +2106,8 @@ Analysis Analisi - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -2158,20 +2170,12 @@ Holdings Partecipazioni - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 @@ -2189,10 +2193,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Update activity @@ -2207,7 +2207,7 @@ Aggiungi un’attività apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2247,11 +2247,11 @@ Quantità apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2263,7 +2263,7 @@ Prezzo unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2275,7 +2275,7 @@ Commissione apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2295,7 +2295,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + 275 @@ -2315,27 +2315,23 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + 235 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + 290 libs/ui/src/lib/assistant/assistant.html - 168 + 205 Activities Attività - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -2361,21 +2357,25 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Portfolio Portafoglio apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 @@ -2406,8 +2406,8 @@ Registration Iscrizione - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -2438,8 +2438,8 @@ Resources Risorse - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/common/src/lib/routes/routes.ts + 332 @@ -2463,7 +2463,7 @@ Torna alla pagina iniziale apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -2535,7 +2535,7 @@ Variazione rispetto al massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 96 + 110 @@ -2543,7 +2543,7 @@ dal massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 98 + 112 @@ -2575,7 +2575,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 418 + 432 @@ -2583,7 +2583,7 @@ Questa funzionalità non è attualmente disponibile. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2591,7 +2591,7 @@ Ops! Qualcosa è andato storto. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2603,11 +2603,11 @@ Riprova più tardi. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2651,11 +2651,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + 306 @@ -2663,7 +2663,7 @@ Prezzo unitario medio apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -2671,7 +2671,7 @@ Prezzo massimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -2707,7 +2707,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + 261 @@ -2723,7 +2723,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + 271 @@ -2731,7 +2731,7 @@ Prezzo minimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -2801,6 +2801,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2813,6 +2817,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2859,7 +2867,7 @@ Benchmark apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 @@ -3318,36 +3326,24 @@ Market Data Dati del mercato - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Users Utenti - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 Summary Summario - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 @@ -3359,7 +3355,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -3391,7 +3387,7 @@ Valido fino a apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + 74 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3487,11 +3483,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -3503,11 +3499,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -3519,11 +3515,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -3535,11 +3531,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -3559,7 +3555,7 @@ Aggiorna il piano apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3571,7 +3567,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -3579,7 +3575,7 @@ Per gli investitori esperti di tecnologia che preferiscono gestire Ghostfolio sulla propria infrastruttura. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -3587,15 +3583,15 @@ Transazioni illimitate apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -3603,15 +3599,15 @@ Account illimitati apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -3619,15 +3615,15 @@ Prestazioni del portafoglio apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -3635,7 +3631,7 @@ Self-hosted, aggiornamento manuale. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -3643,11 +3639,11 @@ Free apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -3655,7 +3651,7 @@ Per i nuovi investitori che hanno appena iniziato a fare trading. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -3663,11 +3659,11 @@ Offerta cloud Ghostfolio completamente gestita. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -3675,7 +3671,7 @@ Per gli investitori ambiziosi che hanno bisogno di un quadro completo dei propri asset finanziari. apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -3683,7 +3679,7 @@ Pagamento una tantum, senza rinnovo automatico. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -3699,7 +3695,7 @@ È gratuito. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 @@ -3707,7 +3703,7 @@ Commissioni apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3731,11 +3727,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -3751,15 +3747,15 @@ Importazione ed esportazione dei dati apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -3775,7 +3771,7 @@ Supporto della comunità apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -3783,7 +3779,7 @@ Supporto via email e chat apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -3827,7 +3823,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -3843,7 +3839,7 @@ Rinnova il piano apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -3851,7 +3847,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 @@ -3923,7 +3919,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3943,7 +3939,7 @@ Piattaforme apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 @@ -3978,32 +3974,24 @@ 47 - + Add Platform Aggiungi la piattaforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 Settings Impostazioni - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 @@ -4103,7 +4091,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 @@ -4170,24 +4158,16 @@ Changelog Changelog - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License Licenza - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 @@ -4322,8 +4302,8 @@ Personal Finance Tools Strumenti di finanza personale - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/common/src/lib/routes/routes.ts + 329 @@ -4671,7 +4651,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4691,7 +4671,7 @@ Configura gli account apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 @@ -4855,7 +4835,7 @@ Se preferisci eseguire Ghostfolio sulla tua infrastruttura, puoi trovare il codice sorgente e ulteriori istruzioni su GitHub. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 @@ -4883,7 +4863,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -5127,7 +5107,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -5146,2856 +5126,2922 @@ 386 - + faq domande-piu-frequenti - snake-case - - apps/client/src/app/app.component.ts - 82 - + kebab-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 245 + + + features + funzionalita + kebab-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 255 - - features - funzionalita - snake-case + + about + informazioni-su + kebab-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/components/header/header.component.ts - 88 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/core/paths.ts - 4 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 214 + + + privacy-policy + informativa-sulla-privacy + kebab-case - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 207 + + + license + licenza + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + mercati + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + prezzi + kebab-case - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 270 + + + register + iscrizione + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - informazioni-su - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + risorse + kebab-case - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 322 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Questa pagina panoramica presenta una raccolta curata di strumenti di finanza personale confrontati con l’alternativa open source Ghostfolio. Se apprezzi la trasparenza, la privacy dei dati e la collaborazione con la comunità, Ghostfolio ti offre un’ottima opportunità per prendere il controllo della tua gestione finanziaria. - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Esplora i link qui sotto per confrontare una serie di strumenti di finanza personale con Ghostfolio. - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/about/about-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Stai cercando un’alternativa open source a ? Ghostfolio è un potente strumento di gestione del portafoglio che fornisce alle persone una piattaforma completa per monitorare, analizzare e ottimizzare i propri investimenti. Che tu sia un investitore esperto o alle prime armi, Ghostfolio offre un’interfaccia utente intuitiva e un’ampia gamma di funzionalità per aiutarti a prendere decisioni informate e il controllo del tuo futuro finanziario. - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio è un software open source (OSS) che offre un’alternativa economicamente vantaggiosa a particolarmente adatta a persone con un budget limitato, come quelle che perseguono l’indipendenza finanziaria e il pensionamento anticipato (FIRE). Grazie agli sforzi collettivi di una comunità di sviluppatori e di appassionati di finanza personale, Ghostfolio migliora continuamente le sue capacità, la sua sicurezza e la sua esperienza utente. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternativa-open-source-a + kebab-case - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 324 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Sei pronto a portare il tuo investimento al livello successivo? - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Inizia - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Svizzera - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/ui/src/lib/i18n.ts + 93 - - privacy-policy - informativa-sulla-privacy - snake-case + + Global + Globale - apps/client/src/app/app.component.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - apps/client/src/app/core/paths.ts - 8 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Ultime 24 ore) - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/open/open-page.html + 37 - - license - licenza - snake-case + + (Last 30 days) + (Ultimi 30 giorni) - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Ultimi 90 giorni) - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/open/open-page.html + 127 - - markets - mercati - snake-case + + Choose or drop a file here + Seleziona o trascina qui un file - apps/client/src/app/app.component.ts + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 + + + You are using the Live Demo. + Stai usando la Live Demo. - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + Commissione una tantum, commissioni annuali per l’account - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + A distribuzione dei dividendi - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Fee + Commissione - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + libs/ui/src/lib/i18n.ts + 37 + + + Interest + Interesse - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 + + + Revenue for lending out money + Ricavi dal prestito di soldi - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Aggiungi un Tag - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 + + + Do you really want to delete this tag? + Sei sicuro di voler eliminare questo tag? - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 85 - - pricing - prezzi - snake-case + + Update tag + Aggiorna il tag - apps/client/src/app/app.component.ts - 85 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Aggiungi un tag - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Currency Cluster Risks + Rischio di Concentrazione Valutario - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 + + + Account Cluster Risks + Rischi di Concentrazione dei Conti - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 + + + Transfer Cash Balance + Trasferisci il saldo di cassa - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Version + Versione - apps/client/src/app/core/paths.ts + apps/client/src/app/components/admin-overview/admin-overview.html 7 + + + Settings + Impostazioni - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + Da - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + A - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Trasferisci - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Iscrizione - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 31 + + + Access + Accesso - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 26 + + + Asset Profile + Profilo dell’asset - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Vuoi veramente eliminare il profilo di questo asset? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Search + Cerca - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Aggiungi manualmente - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Ultimo massimo storico - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + User + Utente - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/components/admin-users/admin-users.html + 29 - - register - iscrizione - snake-case + + Ghostfolio vs comparison table + Ghostfolio vs tabella di comparazione - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + Open Source Wealth Management Software + Software Open Source per la gestione della tua ricchezza - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/pages/i18n/i18n-page.html + 97 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, crypto, dashboard, etf, finanza, gestione patrimoniale, rendimenti, portafoglio, software, stock, azioni, titoli, obbligazioni, trading, ricchezza, web3 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Ops, il trasferimento del saldo di cassa è fallito. - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 + + + Extreme Fear + Paura estrema - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + libs/ui/src/lib/i18n.ts + 100 + + + Extreme Greed + Avidità estrema - apps/client/src/app/pages/features/features-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 101 + + + Neutral + Neutrale - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 104 + + + Oops! Could not parse historical data. + Ops! Impossibile elaborare i dati storici. - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 - - resources - risorse - snake-case + + Do you really want to delete this system message? + Confermi di voler cancellare questo messaggio di sistema? - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + 50-Day Trend + Trend a 50 giorni - apps/client/src/app/components/header/header.component.ts - 86 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend + Trend a 200 giorni - apps/client/src/app/components/header/header.component.ts - 92 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Cash Balances + Saldi di cassa - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Starting from + Inizia da - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 + + + year + anno - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 + + + Do you really want to delete this account balance? + Vuoi veramente elimnare il saldo di questo conto? - apps/client/src/app/pages/features/features-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + If a translation is missing, kindly support us in extending it here. + Se manca una traduzione, puoi aiutarci modificando questo file: here. - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 + + + The current market price is + L’attuale prezzo di mercato è - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 + + + Test + Prova - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 + + + Date Range + Intervallo di date - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/ui/src/lib/assistant/assistant.html + 130 + + + Permission + Permessi - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Questa pagina panoramica presenta una raccolta curata di strumenti di finanza personale confrontati con l’alternativa open source Ghostfolio. Se apprezzi la trasparenza, la privacy dei dati e la collaborazione con la comunità, Ghostfolio ti offre un’ottima opportunità per prendere il controllo della tua gestione finanziaria. + + Restricted view + Vista limitata - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Esplora i link qui sotto per confrontare una serie di strumenti di finanza personale con Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Open Source Alternative to - L’alternativa open source a + + Oops! Could not grant access. + Ops! Impossibile abilitare l’accesso. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Open Source Alternative to - L’alternativa open source a + + Private + Privato - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - The Open Source Alternative to - L’alternativa open source a + + Job Queue + Coda Lavori - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + libs/common/src/lib/routes/routes.ts + 46 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Stai cercando un’alternativa open source a ? Ghostfolio è un potente strumento di gestione del portafoglio che fornisce alle persone una piattaforma completa per monitorare, analizzare e ottimizzare i propri investimenti. Che tu sia un investitore esperto o alle prime armi, Ghostfolio offre un’interfaccia utente intuitiva e un’ampia gamma di funzionalità per aiutarti a prendere decisioni informate e il controllo del tuo futuro finanziario. + + Market data is delayed for + I dati di mercato sono ritardati di - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio è un software open source (OSS) che offre un’alternativa economicamente vantaggiosa a particolarmente adatta a persone con un budget limitato, come quelle che perseguono l’indipendenza finanziaria e il pensionamento anticipato (FIRE). Grazie agli sforzi collettivi di una comunità di sviluppatori e di appassionati di finanza personale, Ghostfolio migliora continuamente le sue capacità, la sua sicurezza e la sua esperienza utente. + + Investment + Investimento - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - - - open-source-alternative-to - alternativa-open-source-a - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 + + + Absolute Asset Performance + Rendimento assoluto dell’Asset - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. + + Asset Performance + Rendimento dell’Asset - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Ready to take your investments to the next level? - Sei pronto a portare il tuo investimento al livello successivo? + + Absolute Currency Performance + Rendimento assoluto della Valuta - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Get Started - Inizia + + Currency Performance + Rendimento della Valuta - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Switzerland - Svizzera + + Absolute Net Performance + Rendimento assoluto della Valuta - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 + + + Net Performance + Rendimento Netto - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - Global - Globale + + Week to date + Da inizio settimana - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + libs/ui/src/lib/assistant/assistant.component.ts + 344 + + + WTD + Settimana corrente - libs/ui/src/lib/i18n.ts - 16 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - (Last 24 hours) - (Ultime 24 ore) + + Month to date + Da inizio mese - apps/client/src/app/pages/open/open-page.html - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - (Last 30 days) - (Ultimi 30 giorni) + + MTD + Mese corrente - apps/client/src/app/pages/open/open-page.html - 48 + libs/ui/src/lib/assistant/assistant.component.ts + 348 + + + Year to date + Da inizio anno - apps/client/src/app/pages/open/open-page.html - 59 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - (Last 90 days) - (Ultimi 90 giorni) + + View + Visualizza - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Choose or drop a file here - Seleziona o trascina qui un file - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - You are using the Live Demo. - Stai usando la Live Demo. + + Oops! A data provider is experiencing the hiccups. + Ops! Un data provider sta riscontrando dei problemi. - apps/client/src/app/app.component.html - 12 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - One-time fee, annual account fees - Commissione una tantum, commissioni annuali per l’account + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Se andassi in pensione oggi, saresti in grado di prelevare all’anno o al mese, calcolato sul valore totale dei tuoi asset di e un prelievo costante del 4%. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Distribution of corporate earnings - A distribuzione dei dividendi + + Reset Filters + Reset Filtri - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + libs/ui/src/lib/assistant/assistant.html + 224 - - Fee - Commissione + + year + anno - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Interest - Interesse + + years + anni - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Revenue for lending out money - Ricavi dal prestito di soldi + + Apply Filters + Applica i Filtri - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + libs/ui/src/lib/assistant/assistant.html + 234 - - Add Tag - Aggiungi un Tag + + Data Gathering + Raccolta Dati - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Do you really want to delete this tag? - Sei sicuro di voler eliminare questo tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - Update tag - Aggiorna il tag + + General + Generale - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Add tag - Aggiungi un tag + + Cloud + Cloud - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Currency Cluster Risks - Rischio di Concentrazione Valutario - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + libs/common/src/lib/routes/routes.ts + 240 - - Account Cluster Risks - Rischi di Concentrazione dei Conti + + Self-Hosting + Self-Hosting - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - Transfer Cash Balance - Trasferisci il saldo di cassa - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + libs/common/src/lib/routes/routes.ts + 248 + + + self-hosting + self-hosting + kebab-case - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + libs/common/src/lib/routes/routes.ts + 243 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + libs/common/src/lib/routes/routes.ts + 246 - - Version - Versione + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Ops! Sembra tu stia facendo troppe richieste. Rallenta un po’ per favore. - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - Settings - Impostazioni + + My Account + Il mio Account - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - From - Da + + Active + Attivo - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 - - To - A + + Closed + Chiuso - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Transfer - Trasferisci + + Activity + Attività - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - Membership - Iscrizione + + Dividend Yield + Rendimento da Dividendi - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 + + + Execute Job + Esegui il lavoro - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 - - Access - Accesso + + Priority + Priorità - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 + + + This action is not allowed. + Questa azione non è permessa. - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - Find holding... - Trova possedimenti... + + Liquidity + Liquidità - libs/ui/src/lib/assistant/assistant.component.ts - 143 + libs/ui/src/lib/i18n.ts + 48 - - No entries... - Nessun risultato... + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {attività} other {attività}} - libs/ui/src/lib/assistant/assistant.html - 62 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 + + + Buy and sell + Compra e vendi - libs/ui/src/lib/assistant/assistant.html - 85 + libs/ui/src/lib/i18n.ts + 8 - - Asset Profile - Profilo dell’asset + + Delete Activities + Elimina le attività - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Do you really want to delete this asset profile? - Vuoi veramente eliminare il profilo di questo asset? + + Internationalization + Internazionalizzazione - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + libs/common/src/lib/routes/routes.ts + 119 - - Search - Cerca + + Do you really want to close your Ghostfolio account? + Confermi di voler chiudere il tuo account Ghostfolio? - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Add Manually - Aggiungi manualmente + + Danger Zone + Zona di Pericolo - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. + + Close Account + Chiudi l’account - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - Last All Time High - Ultimo massimo storico + + By ETF Holding + Per ETF posseduti - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - User - Utente + + Approximation based on the top holdings of each ETF + Approssimato in base ai principali ETF posseduti - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Ghostfolio vs comparison table - Ghostfolio vs tabella di comparazione + + Join now or check out the example account + Registrati adesso o prova l’account demo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Open Source Wealth Management Software - Software Open Source per la gestione della tua ricchezza - - apps/client/src/app/pages/i18n/i18n-page.html - 14 - - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, crypto, dashboard, etf, finanza, gestione patrimoniale, rendimenti, portafoglio, software, stock, azioni, titoli, obbligazioni, trading, ricchezza, web3 - - apps/client/src/app/pages/i18n/i18n-page.html - 9 - - - - Oops, cash balance transfer has failed. - Ops, il trasferimento del saldo di cassa è fallito. + + Oops! There was an error setting up biometric authentication. + Ops! C’è stato un errore impostando l’autenticazione biometrica. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Extreme Fear - Paura estrema + + Show more + Visualizza di più - libs/ui/src/lib/i18n.ts - 100 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Extreme Greed - Avidità estrema + + Benchmarks + Benchmarks - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - Neutral - Neutrale + + Delete Profiles + Elimina i profili - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Oops! Could not parse historical data. - Ops! Impossibile elaborare i dati storici. + + Do you really want to delete these profiles? + Confermi di voler eliminare questi profili? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Do you really want to delete this system message? - Confermi di voler cancellare questo messaggio di sistema? + + Oops! Could not delete profiles. + Ops! Impossibile eliminare i profili. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - 50-Day Trend - Trend a 50 giorni + + Table + Tabella - libs/ui/src/lib/benchmark/benchmark.component.html + apps/client/src/app/components/home-holdings/home-holdings.html 16 - - 200-Day Trend - Trend a 200 giorni - - libs/ui/src/lib/benchmark/benchmark.component.html - 45 - - - - Cash Balances - Saldi di cassa - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 - - - - Starting from - Inizia da - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 - - - - year - anno - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 - - - - Do you really want to delete this account balance? - Vuoi veramente elimnare il saldo di questo conto? - - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 - - - - If a translation is missing, kindly support us in extending it here. - Se manca una traduzione, puoi aiutarci modificando questo file: here. - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 - - - - The current market price is - L’attuale prezzo di mercato è - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 - - - - Test - Prova - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 - - - - Date Range - Intervallo di date + + Chart + Grafico - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Permission - Permessi - - apps/client/src/app/components/access-table/access-table.component.html - 18 - + + Would you like to refine your personal investment strategy? + Vorresti perfezionare la tua strategia personale di investimento? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/pages/public/public-page.html + 211 - - Restricted view - Vista limitata - - apps/client/src/app/components/access-table/access-table.component.html - 26 - + + Alternative + Alternativa - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - Oops! Could not grant access. - Ops! Impossibile abilitare l’accesso. + + App + App - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Private - Privato + + Budgeting + Budgeting - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - Job Queue - Coda Lavori - - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 - + + Community + Comunità - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Market data is delayed for - I dati di mercato sono ritardati di + + Family Office + Ufficio familiare - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Investment - Investimento - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 - - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 - + + Investor + Investitore apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 87 - - Absolute Asset Performance - Rendimento assoluto dell’Asset - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 - - - - Asset Performance - Rendimento dell’Asset - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 - - - - Absolute Currency Performance - Rendimento assoluto della Valuta - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 - - - - Currency Performance - Rendimento della Valuta - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 - - - - Absolute Net Performance - Rendimento assoluto della Valuta - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 - - - - Net Performance - Rendimento Netto - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 - - - - Week to date - Da inizio settimana - - libs/ui/src/lib/assistant/assistant.component.ts - 222 - - - - WTD - Settimana corrente - - libs/ui/src/lib/assistant/assistant.component.ts - 222 - - - - Month to date - Da inizio mese - - libs/ui/src/lib/assistant/assistant.component.ts - 226 - - - - MTD - Mese corrente - - libs/ui/src/lib/assistant/assistant.component.ts - 226 - - - - Year to date - Da inizio anno - - libs/ui/src/lib/assistant/assistant.component.ts - 230 - - - - View - Visualizza - - apps/client/src/app/components/access-table/access-table.component.html - 23 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 - - - - Oops! A data provider is experiencing the hiccups. - Ops! Un data provider sta riscontrando dei problemi. + + Open Source + Open Source - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Se andassi in pensione oggi, saresti in grado di prelevare all’anno o al mese, calcolato sul valore totale dei tuoi asset di e un prelievo costante del 4%. + + Personal Finance + Finanza Personale - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Reset Filters - Reset Filtri + + Privacy + Privacy - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - year - anno + + Software + Software - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - years - anni + + Tool + Strumento - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Apply Filters - Applica i Filtri + + User Experience + Esperienza Utente - libs/ui/src/lib/assistant/assistant.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - Data Gathering - Raccolta Dati + + Wealth + Ricchezza - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 + + + Wealth Management + Gestione Patrimoniale - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - General - Generale + + Australia + Australia - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 74 - - Cloud - Cloud + + Austria + Austria - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + libs/ui/src/lib/i18n.ts + 75 + + + Belgium + Belgio - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 76 - - Self-Hosting - Self-Hosting + + Bulgaria + Bulgaria - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 78 + + + Canada + Canada - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - self-hosting - self-hosting + + Czech Republic + Repubblica Ceca - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/ui/src/lib/i18n.ts + 80 - - FAQ - FAQ + + Finland + Finlandia - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 81 + + + France + Francia - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 82 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Ops! Sembra tu stia facendo troppe richieste. Rallenta un po’ per favore. + + Germany + Germania - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 83 - - My Account - Il mio Account + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 84 - - Active - Attivo + + Italy + Italia - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 85 - - Closed - Chiuso + + Netherlands + Olanda - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + libs/ui/src/lib/i18n.ts + 87 - - Activity - Attività + + New Zealand + Nuova Zelanda - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 88 - - Dividend Yield - Rendimento da Dividendi + + Poland + Polonia - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 89 - - Execute Job - Esegui il lavoro + + Romania + Romania - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 90 - - Priority - Priorità + + South Africa + Sud Africa - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 92 - - This action is not allowed. - Questa azione non è permessa. + + Thailand + Tailandia - apps/client/src/app/core/http-response.interceptor.ts - 64 + libs/ui/src/lib/i18n.ts + 94 - - Liquidity - Liquidità + + United States + Stati Uniti libs/ui/src/lib/i18n.ts - 48 + 97 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {attività} other {attività}} + + Error + Errore - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - Buy and sell - Compra e vendi + + Deactivate + Disattiva - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/components/rule/rule.component.html + 72 - - Delete Activities - Elimina le attività + + Activate + Attiva - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/components/rule/rule.component.html + 74 - - Internationalization - Internazionalizzazione + + Inactive + Inattivo - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Do you really want to close your Ghostfolio account? - Confermi di voler chiudere il tuo account Ghostfolio? + + Cancel + Annulla - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/ui/src/lib/i18n.ts + 9 - - Danger Zone - Zona di Pericolo + + Close + Chiudi - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + libs/ui/src/lib/i18n.ts + 11 - - Close Account - Chiudi l’account + + Yes + Si - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + libs/ui/src/lib/i18n.ts + 32 - - By ETF Holding - Per ETF posseduti + + Copy link to clipboard + Copia link negli appunti - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Approximation based on the top holdings of each ETF - Approssimato in base ai principali ETF posseduti + + Portfolio Snapshot + Stato del Portfolio - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Join now or check out the example account - Registrati adesso o prova l’account demo + + Change with currency effect Change + Cambio con effetto valuta Cambia - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Oops! There was an error setting up biometric authentication. - Ops! C’è stato un errore impostando l’autenticazione biometrica. + + Performance with currency effect Performance + Prestazioni con effetto valuta Prestazioni - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Show more - Visualizza di più + + Threshold Min + Soglia Minima - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Benchmarks - Benchmarks + + Threshold Max + Soglia Massima - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Delete Profiles - Elimina i profili + + Close + Chiudi - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Do you really want to delete these profiles? - Confermi di voler eliminare questi profili? + + Customize + Personalizza - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/rule/rule.component.html + 67 - - Oops! Could not delete profiles. - Ops! Impossibile eliminare i profili. + + No auto-renewal. + No rinnovo automatico. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Table - Tabella + + Today + Oggi - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 24 - - Chart - Grafico + + This year + Anno corrente - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/pages/public/public-page.html + 42 - - Would you like to refine your personal investment strategy? - Vorresti perfezionare la tua strategia personale di investimento? + + From the beginning + Dall’inizio apps/client/src/app/pages/public/public-page.html - 211 + 60 - - Alternative - Alternativa + + Oops! Invalid currency. + Oops! Valuta sbagliata. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - App - App + + This page has been archived. + Questa pagina è stata archiviata. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Budgeting - Budgeting + + is Open Source Software + è un programma Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Community - Comunità + + is not Open Source Software + non è un programma Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Family Office - Ufficio familiare + + is Open Source Software + è un programma Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Investor - Investitore + + is not Open Source Software + non è un programma Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Open Source - Open Source + + can be self-hosted + può essere ospitato in proprio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Personal Finance - Finanza Personale + + cannot be self-hosted + non può essere ospitato in proprio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Privacy - Privacy + + can be self-hosted + può essere ospitato in proprio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Software - Software + + cannot be self-hosted + non può essere ospitato in proprio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Tool - Strumento - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + + can be used anonymously + può essere usato anonimamente + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - User Experience - Esperienza Utente + + cannot be used anonymously + non può essere usato anonimamente - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Wealth - Ricchezza + + can be used anonymously + può essere usato anonimamente - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Wealth Management - Gestione Patrimoniale + + cannot be used anonymously + non può essere usato anonimamente - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Australia - Australia + + offers a free plan + ha un piano gratuito - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Austria - Austria + + does not offer a free plan + non ha un piano gratuito - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Belgium - Belgio + + offers a free plan + ha un piano gratuito - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Bulgaria - Bulgaria + + does not offer a free plan + non ha un piano gratuito - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Canada - Canada + + Oops! Could not find any assets. + Oops! Non ho trovato alcun asset. - libs/ui/src/lib/i18n.ts - 79 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Czech Republic - Repubblica Ceca + + Data Providers + Fornitori di dati - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Finland - Finlandia + + Set API key + Imposta API Key - libs/ui/src/lib/i18n.ts - 81 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - France - Francia + + Get access to 80’000+ tickers from over 50 exchanges + Ottieni accesso a oltre 80’000+ titoli da oltre 50 borse libs/ui/src/lib/i18n.ts - 82 + 24 - - Germany - Germania + + Ukraine + Ucraina libs/ui/src/lib/i18n.ts - 83 + 95 - - India - India + + Join now + Iscriviti adesso - libs/ui/src/lib/i18n.ts - 84 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Italy - Italia + + Glossary + Glossario - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - Netherlands - Olanda - libs/ui/src/lib/i18n.ts - 87 + libs/common/src/lib/routes/routes.ts + 293 - - New Zealand - Nuova Zelanda + + Guides + Guide - libs/ui/src/lib/i18n.ts - 88 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Poland - Polonia - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 301 - - Romania - Romania + + guides + guide + kebab-case - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 296 - - - South Africa - Sud Africa - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 299 - - Thailand - Tailandia + + glossary + glossario + kebab-case - libs/ui/src/lib/i18n.ts - 94 + libs/common/src/lib/routes/routes.ts + 288 + + + libs/common/src/lib/routes/routes.ts + 291 - - United States - Stati Uniti + + Threshold range + Range soglia - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Error - Errore + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray utilizza l’analisi statica per scoprire potenziali problemi e rischi nel tuo portafoglio. Modifica le regole qui sotto e imposta soglie personalizzate per allinearti alla tua strategia di investimento personale. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Deactivate - Disattiva + + Economic Market Cluster Risks + Rischi del cluster di mercato economico - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Activate - Attiva + + of + di - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Inactive - Inattivo + + daily requests + richieste giornaliere - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Cancel - Annulla + + Remove API key + Rimuovi API key - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Close - Chiudi + + Do you really want to delete the API key? + Vuoi davvero eliminare l’API key? - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Yes - Si + + Please enter your Ghostfolio API key: + Inserisci la tua API key di Ghostfolio: - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Copy link to clipboard - Copia link negli appunti + + API Requests Today + Richieste API oggi - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Portfolio Snapshot - Stato del Portfolio + + Could not generate an API key + Non è stato possibile generare un API key - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Change with currency effect Change - Cambio con effetto valuta Cambia + + Set this API key in your self-hosted environment: + Imposta questa API key nel tuo ambiente self-hosted: - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Performance with currency effect Performance - Prestazioni con effetto valuta Prestazioni + + Ghostfolio Premium Data Provider API Key + API Key for Ghostfolio Premium Data Provider - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Threshold Min - Soglia Minima + + Do you really want to generate a new API key? + Vuoi davvero generare una nuova API key? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Max - Soglia Massima + + Tag + Tag - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/assistant/assistant.html + 194 - - Close - Chiudi + + API Key + API Key - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Customize - Personalizza + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Genera API key per Ghostfolio Premium Data Provider per ambienti self-hosted... - apps/client/src/app/components/rule/rule.component.html - 67 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - No auto-renewal. - No rinnovo automatico. + + out of + fuori - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - Today - Oggi + + rules align with your portfolio. + le regole si allineano con il tuo portafoglio. - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - This year - Anno corrente + + Save + Salva - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - From the beginning - Dall’inizio + + Asset Class Cluster Risks + Rischi del cluster di classi di asset - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - Oops! Invalid currency. - Oops! Valuta sbagliata. + + Me + Me - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - This page has been archived. - Questa pagina è stata archiviata. + + Received Access + Accesso ricevuto - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - is Open Source Software - è un programma Open Source + + Please enter your Ghostfolio API key. + Inserisci la tua API key di Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is not Open Source Software - non è un programma Open Source + + AI prompt has been copied to the clipboard + L’AI prompt è stato copiato negli appunti - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is Open Source Software - è un programma Open Source + + Link has been copied to the clipboard + Il link è stato copiato negli appunti - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is not Open Source Software - non è un programma Open Source + + Regional Market Cluster Risks + Rischi del cluster di mercato regionale - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - can be self-hosted - può essere ospitato in proprio + + Lazy + Pigro - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be self-hosted - non può essere ospitato in proprio + + Instant + Istantaneo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - can be self-hosted - può essere ospitato in proprio + + Default Market Price + Prezzo di mercato predefinito - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - cannot be self-hosted - non può essere ospitato in proprio + + Mode + Modalità - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - can be used anonymously - può essere usato anonimamente + + Selector + Selettore - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - cannot be used anonymously - non può essere usato anonimamente + + HTTP Request Headers + Intestazioni della richiesta HTTP - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - can be used anonymously - può essere usato anonimamente - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + + end of day + fine giornata + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be used anonymously - non può essere usato anonimamente + + real-time + in tempo reale - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - offers a free plan - ha un piano gratuito + + Open Duck.ai + Apri Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - does not offer a free plan - non ha un piano gratuito + + Create + Creare - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - offers a free plan - ha un piano gratuito + + Market Data + Dati di mercato - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - does not offer a free plan - non ha un piano gratuito + + Change + Cambia - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - Oops! Could not find any assets. - Oops! Non ho trovato alcun asset. + + Performance + Prestazione - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Data Providers - Fornitori di dati - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Set API key - Imposta API Key + + Copy portfolio data to clipboard for AI prompt + Copia i dati del portafoglio negli appunti per l’AI prompt - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Get access to 80’000+ tickers from over 50 exchanges - Ottieni accesso a oltre 80’000+ titoli da oltre 50 borse + + Copy AI prompt to clipboard for analysis + Copia l’AI prompt negli appunti per l’analisi - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Ukraine - Ucraina + + Armenia + Armenia libs/ui/src/lib/i18n.ts - 95 + 73 - - Join now - Iscriviti adesso + + British Virgin Islands + Isole Vergini Britanniche - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 77 - - Glossary - Glossario + + Singapore + Singapore - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + libs/ui/src/lib/i18n.ts + 91 + + + Terms and Conditions + Termini e condizioni - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Guides - Guide + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Ti preghiamo di conservare il tuo token di sicurezza in un luogo sicuro. Se lo perdi, non sarai in grado di recuperare il tuo account. - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + Capisco che se perdo il mio token di sicurezza, non posso recuperare il mio account - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - guides - guide - snake-case + + Continue + Continua - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Ecco il tuo token di sicurezza. È visibile solo una volta, per favore memorizzalo e conserva in un luogo sicuro. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - glossary - glossario - snake-case + + Security token + Token di sicurezza - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Threshold range - Range soglia + + Do you really want to generate a new security token for this user? + Vuoi davvero generare un nuovo token di sicurezza per questo utente? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray utilizza l’analisi statica per scoprire potenziali problemi e rischi nel tuo portafoglio. Modifica le regole qui sotto e imposta soglie personalizzate per allinearti alla tua strategia di investimento personale. + + Generate Security Token + Genera Token di Sicurezza - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Economic Market Cluster Risks - Rischi del cluster di mercato economico + + United Kingdom + United Kingdom - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + libs/ui/src/lib/i18n.ts + 96 - - of - di + + Terms of Service + Termini e condizioni - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/app.component.html + 112 - - daily requests - richieste giornaliere + + terms-of-service + termini-e-condizioni + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/common/src/lib/routes/routes.ts + 212 - - - Remove API key - Rimuovi API key - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + libs/common/src/lib/routes/routes.ts + 215 - - Do you really want to delete the API key? - Vuoi davvero eliminare l’API key? + + Terms of Service + Termini e condizioni - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 217 - - Please enter your Ghostfolio API key: - Inserisci la tua API key di Ghostfolio: + + Terms of Service + Termini e condizioni - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - I have an API key - Ho un API key + + and I agree to the Terms of Service. + e io accetto i Termini e condizioni. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - API Requests Today - Richieste API oggi + + () is already in use. + () e gia in uso. - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Could not generate an API key - Non è stato possibile generare un API key + + An error occurred while updating to (). + Si è verificato un errore durante l’aggiornamento di (). - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Set this API key in your self-hosted environment: - Imposta questa API key nel tuo ambiente self-hosted: + + Apply + Applica - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Ghostfolio Premium Data Provider API Key - API Key for Ghostfolio Premium Data Provider + + with API access for + con accesso API per - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Do you really want to generate a new API key? - Vuoi davvero generare una nuova API key? + + Gather Recent Historical Market Data + Raccogli dati storici di mercato recenti - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Tag - Tag + + Gather All Historical Market Data + Raccogli tutti i dati storici di mercato - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - API Key - API Key + + Gather Historical Market Data + Raccogli dati storici di mercato - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Genera API key per Ghostfolio Premium Data Provider per ambienti self-hosted... + + Data Gathering is off + La raccolta dei dati è disattivata - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - out of - fuori + + Performance Calculation + Calcolo delle prestazioni - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - rules align with your portfolio. - le regole si allineano con il tuo portafoglio. + + someone + qualcuno - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Save - Salva + + Add asset to watchlist + Aggiungi asset alla watchlist - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - Asset Class Cluster Risks - Rischi del cluster di classi di asset + + Watchlist + Watchlist - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Me - Me - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/pages/features/features-page.html + 197 - - Received Access - Accesso ricevuto + + Watchlist + Watchlist - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + libs/common/src/lib/routes/routes.ts + 110 - - Please enter your Ghostfolio API key. - Inserisci la tua API key di Ghostfolio. + + Do you really want to delete this item? + Vuoi davvero eliminare questo elemento? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - AI prompt has been copied to the clipboard - L’AI prompt è stato copiato negli appunti + + Log out + Esci - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/header/header.component.html + 329 - - Link has been copied to the clipboard - Il link è stato copiato negli appunti + + Calculations are based on delayed market data and may not be displayed in real-time. + I calcoli sono basati su dati di mercato ritardati e potrebbero non essere visualizzati in tempo reale. - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Early Access - Accesso anticipato - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/markets/markets.html + 52 - - Regional Market Cluster Risks - Rischi del cluster di mercato regionale + + changelog + registro-delle-modifiche + kebab-case - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + libs/common/src/lib/routes/routes.ts + 180 - - - Lazy - Pigro - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/common/src/lib/routes/routes.ts + 183 - - Instant - Istantaneo + + Demo user account has been synced. + L’account utente demo è stato sincronizzato. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Default Market Price - Prezzo di mercato predefinito + + Sync Demo User Account + Sincronizza l’account utente demo - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Mode - Modalità + + Emergency Fund: Set up + Fondo di emergenza: istituito - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Selector - Selettore + + No emergency fund has been set up + Non è stato istituito alcun fondo di emergenza - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - HTTP Request Headers - Intestazioni della richiesta HTTP + + An emergency fund has been set up + È stato istituito un fondo di emergenza - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - end of day - fine giornata + + Fee Ratio + Rapporto tariffario - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - real-time - in tempo reale + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Le commissioni superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Open Duck.ai - Apri Duck.ai + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Le commissioni non superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Create - Creare + + Name + Nome - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Market Data - Dati di mercato + + Find holding or page... + Trova azienda o pagina... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Change - Cambia + + Quick Links + Collegamenti rapidi - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 43 - - Performance - Prestazione + + Asset Profiles + Profili delle risorse - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 99 + + + Live Demo + Dimostrazione dal vivo - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/common/src/lib/routes/routes.ts + 231 - - Copy portfolio data to clipboard for AI prompt - Copia i dati del portafoglio negli appunti per l’AI prompt + + Open Source Alternative to + L’alternativa open source a - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 326 - - Copy AI prompt to clipboard for analysis - Copia l’AI prompt negli appunti per l’analisi + + Single Account + Conto unico - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Armenia - Armenia + + Your net worth is managed by a single account + Il tuo patrimonio netto è gestito da un unico account - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - British Virgin Islands - Isole Vergini Britanniche + + Your net worth is managed by ${accountsLength} accounts + Il tuo patrimonio netto è gestito da account ${accountsLength} - libs/ui/src/lib/i18n.ts - 77 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Singapore - Singapore + + Holdings + Partecipazioni - libs/ui/src/lib/i18n.ts - 91 + libs/ui/src/lib/assistant/assistant.html + 69 - - Terms and Conditions - Termini e condizioni + + personal-finance-tools + strumenti-di-finanza-personale + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 312 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Ti preghiamo di conservare il tuo token di sicurezza in un luogo sicuro. Se lo perdi, non sarai in grado di recuperare il tuo account. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 315 - - - I understand that if I lose my security token, I cannot recover my account - Capisco che se perdo il mio token di sicurezza, non posso recuperare il mio account - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 323 - - Continue - Continua + + markets + mercati + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 304 - - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Ecco il tuo token di sicurezza. È visibile solo una volta, per favore memorizzalo e conserva in un luogo sicuro. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 307 - - Security token - Token di sicurezza + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Do you really want to generate a new security token for this user? - Vuoi davvero generare un nuovo token di sicurezza per questo utente? + + Get Access + Ottieni l’accesso - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Generate Security Token - Genera Token di Sicurezza + + Learn more + Saperne di più - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - United Kingdom - United Kingdom + + new + nuovo - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms of Service - Termini e condizioni + + Limited Offer! + Offerta limitata! - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - terms-of-service - termini-e-condizioni - snake-case + + Get extra + Get extra - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Disponibile - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Non disponibile - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + nuovo - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Terms of Service - Termini e condizioni + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - Termini e condizioni + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - and I agree to the Terms of Service. - e io accetto i Termini e condizioni. + + Equity + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - () is already in use. - () e gia in uso. + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - An error occurred while updating to (). - Si è verificato un errore durante l’aggiornamento di (). + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Apply - Applica + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - with API access for - con accesso API per + + Fixed Income + Fixed Income - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather Recent Historical Market Data - Raccogli dati storici di mercato recenti + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather All Historical Market Data - Raccogli tutti i dati storici di mercato + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Historical Market Data - Raccogli dati storici di mercato + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off - La raccolta dei dati è disattivata + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation - Calcolo delle prestazioni + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone - qualcuno + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist - Aggiungi asset alla watchlist + + Investment + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist - Watchlist + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - Watchlist + + start + start + kebab-case - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - Ottieni accesso anticipato + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - Vuoi davvero eliminare questo elemento? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - Log out + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 1099d5235..32fb7f6c8 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -110,11 +110,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 224 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -138,7 +138,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -146,11 +146,11 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + 46 apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -162,16 +162,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + 139 libs/ui/src/lib/activities-table/activities-table.component.html 138 - - libs/ui/src/lib/benchmark/benchmark.component.html - 4 - libs/ui/src/lib/holdings-table/holdings-table.component.html 28 @@ -210,15 +206,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 205 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 208 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 211 libs/ui/src/lib/account-balances/account-balances.component.html @@ -258,11 +254,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -290,11 +286,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -306,7 +302,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 155 + 169 @@ -346,7 +342,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 308 @@ -366,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 155 @@ -400,13 +396,17 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html 110 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + Asset Profiles Activa Profiel - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 @@ -458,7 +458,7 @@ Datum apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + 161 libs/ui/src/lib/account-balances/account-balances.component.html @@ -482,7 +482,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 109 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -506,7 +506,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + 38 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -530,7 +530,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 338 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -554,7 +554,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + 45 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -578,7 +578,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + 345 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -598,7 +598,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + 212 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -630,7 +630,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -638,7 +638,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -646,7 +646,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -742,7 +742,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -758,11 +758,11 @@ Gebruiker apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 @@ -802,11 +802,15 @@ Overzicht apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 @@ -814,11 +818,11 @@ Portefeuille apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 @@ -826,7 +830,7 @@ Rekeningen apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -834,15 +838,15 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -854,11 +858,11 @@ Beheer apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 @@ -870,11 +874,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -890,15 +894,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -914,11 +918,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -926,7 +930,7 @@ Ik apps/client/src/app/components/header/header.component.html - 207 + 213 @@ -934,7 +938,7 @@ Mijn Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 @@ -942,7 +946,7 @@ Over Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -958,7 +962,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -974,12 +978,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1001,12 +1009,16 @@ Sign in Aanmelden - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -1014,7 +1026,11 @@ Oeps! Onjuiste beveiligingstoken. apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1036,6 +1052,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1052,6 +1072,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -1069,8 +1097,8 @@ or of - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1094,7 +1122,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1126,7 +1154,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1162,7 +1190,7 @@ Belegging apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1254,7 +1282,7 @@ Dividend apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1266,7 +1294,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 @@ -1290,7 +1318,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + 277 apps/client/src/app/pages/public/public-page.html @@ -1310,7 +1338,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 289 @@ -1318,7 +1346,7 @@ Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1334,7 +1362,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -1382,7 +1410,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -1394,7 +1422,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -1406,7 +1434,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -1418,7 +1446,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -1430,7 +1458,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -1438,11 +1466,11 @@ Oké apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1453,16 +1481,12 @@ About Over - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 @@ -1550,7 +1574,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -1562,7 +1586,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -1601,12 +1625,8 @@ Privacy Policy Privacybeleid - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -1614,7 +1634,7 @@ Mijn Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1622,7 +1642,7 @@ Voer je couponcode in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1630,7 +1650,7 @@ Kon je kortingscode niet inwisselen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1638,7 +1658,7 @@ Je couponcode is ingewisseld apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1646,7 +1666,7 @@ Herladen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1670,7 +1690,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -1690,7 +1710,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -1782,7 +1802,7 @@ Verleende toegang apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 @@ -1805,8 +1825,8 @@ Accounts Rekeningen - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -1858,7 +1878,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + 145 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1909,16 +1929,16 @@ Admin Control Beheer - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -1932,21 +1952,21 @@ Frequently Asked Questions (FAQ) Veelgestelde vragen - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Features Functionaliteiten - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -1954,47 +1974,43 @@ Overzicht apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Markets Markten - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -2005,8 +2021,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -2089,12 +2105,8 @@ Analysis Analyse - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -2157,20 +2169,12 @@ Holdings Posities - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 @@ -2188,10 +2192,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Update activity @@ -2206,7 +2206,7 @@ Activiteit toevoegen apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2246,11 +2246,11 @@ Hoeveelheid apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2262,7 +2262,7 @@ Prijs per eenheid apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2274,7 +2274,7 @@ Transactiekosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2294,7 +2294,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + 275 @@ -2314,27 +2314,23 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + 235 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + 290 libs/ui/src/lib/assistant/assistant.html - 168 + 205 Activities Activiteiten - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -2360,21 +2356,25 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Portfolio Portefeuille apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 @@ -2405,8 +2405,8 @@ Registration Registratie - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -2437,8 +2437,8 @@ Resources Bronnen - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/common/src/lib/routes/routes.ts + 332 @@ -2462,7 +2462,7 @@ Ga terug naar de startpagina apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -2534,7 +2534,7 @@ Verandering van Recordhoogte libs/ui/src/lib/benchmark/benchmark.component.html - 96 + 110 @@ -2542,7 +2542,7 @@ van ATH libs/ui/src/lib/benchmark/benchmark.component.html - 98 + 112 @@ -2574,7 +2574,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 418 + 432 @@ -2582,7 +2582,7 @@ Deze functie is momenteel niet beschikbaar. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2590,7 +2590,7 @@ Oeps! Er ging iets mis. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2602,11 +2602,11 @@ Probeer het later nog eens. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2650,11 +2650,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + 306 @@ -2662,7 +2662,7 @@ Gemiddelde prijs per eenheid apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -2670,7 +2670,7 @@ Maximale prijs apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -2706,7 +2706,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + 261 @@ -2722,7 +2722,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + 271 @@ -2730,7 +2730,7 @@ Minimale prijs apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -2800,6 +2800,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2812,6 +2816,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2858,7 +2866,7 @@ Benchmark apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 @@ -3317,36 +3325,24 @@ Market Data Marktgegevens - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Users Gebruikers - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 Summary Samenvatting - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 @@ -3358,7 +3354,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -3390,7 +3386,7 @@ Geldig tot apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + 74 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3486,11 +3482,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -3502,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -3518,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -3534,11 +3530,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -3558,7 +3554,7 @@ Abonnement uitbreiden apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3570,7 +3566,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -3578,7 +3574,7 @@ Voor technisch onderlegde beleggers die Ghostfolio liever op hun eigen systemen draaien. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -3586,15 +3582,15 @@ Onbeperkte transacties apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -3602,15 +3598,15 @@ Onbeperkte rekeningen apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -3618,15 +3614,15 @@ Portefeuilleprestaties apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -3634,7 +3630,7 @@ Zelf hosten, handmatig bijwerken. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -3642,11 +3638,11 @@ Gratis apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -3654,7 +3650,7 @@ Voor nieuwe beleggers die net beginnen met handelen. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -3662,11 +3658,11 @@ Volledig beheerd Ghostfolio cloud-aanbod. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -3674,7 +3670,7 @@ Voor ambitieuze beleggers die een volledig beeld willen hebben van hun financiële assets. apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -3682,7 +3678,7 @@ Eenmalige betaling, geen automatische verlenging. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -3698,7 +3694,7 @@ Het is gratis. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 @@ -3706,7 +3702,7 @@ Kosten apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3730,11 +3726,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -3750,15 +3746,15 @@ Data Import and Export apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -3774,7 +3770,7 @@ Steun van de Gemeenschap apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -3782,7 +3778,7 @@ Ondersteuning via e-mail en chat apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -3826,7 +3822,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -3842,7 +3838,7 @@ Abonnement Vernieuwen apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -3850,7 +3846,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 @@ -3922,7 +3918,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3938,7 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 @@ -3977,32 +3973,24 @@ 47 - + Add Platform Platform Toevoegen apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 Settings Instellingen - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 @@ -4102,7 +4090,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 @@ -4169,24 +4157,16 @@ Changelog Changelog - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License Licentie - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 @@ -4321,8 +4301,8 @@ Personal Finance Tools Tools voor persoonlijke financiën - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/common/src/lib/routes/routes.ts + 329 @@ -4670,7 +4650,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4690,7 +4670,7 @@ Account opzetten apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 @@ -4854,7 +4834,7 @@ Als je Ghostfolio liever op je eigen systeem uitvoert, vind je de broncode en verdere instructies op GitHub. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 @@ -4882,7 +4862,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -5126,7 +5106,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -5145,2856 +5125,2922 @@ 386 - + faq veelgestelde-vragen - snake-case - - apps/client/src/app/app.component.ts - 82 - + kebab-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 245 + + + features + functionaliteiten + kebab-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 255 - - features - functionaliteiten - snake-case + + about + over + kebab-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/components/header/header.component.ts - 88 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/core/paths.ts - 4 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 214 + + + privacy-policy + privacybeleid + kebab-case - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 207 + + + license + licentie + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + markten + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + prijzen + kebab-case - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 270 + + + register + registratie + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 - - - - about - over - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + bronnen + kebab-case - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 322 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Deze overzichtspagina bevat een verzameling tools voor persoonlijke financiën vergeleken met het open source alternatief Ghostfolio. Als je waarde hecht aan transparantie, gegevensprivacy en samenwerking binnen een gemeenschap, biedt Ghostfolio een uitstekende mogelijkheid om je financieel beheer in eigen hand te nemen. - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Bekijk de links hieronder om verschillende persoonlijke financiële tools met Ghostfolio te vergelijken. - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + Open Source alternatief voor - apps/client/src/app/pages/about/about-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Ben je op zoek naar een open source alternatief voor ? Ghostfolio is een krachtige tool voor portefeuillebeheer die particulieren een uitgebreid platform biedt om hun beleggingen bij te houden, te analyseren en te optimaliseren. Of je nu een ervaren belegger bent of net begint, Ghostfolio biedt een intuïtieve gebruikersinterface en uitgebreide functionaliteiten om je te helpen weloverwogen beslissingen te nemen en je financiële toekomst in eigen handen te nemen. - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio is open source software (OSS) en biedt een kosteneffectief alternatief voor waardoor het bijzonder geschikt is voor mensen met een krap budget, zoals degenen Financiële onafhankelijkheid nastreven, vroeg met pensioen gaan (FIRE). Door gebruik te maken van de collectieve inspanningen van een gemeenschap van ontwikkelaars en liefhebbers van persoonlijke financiën, verbetert Ghostfolio voortdurend de mogelijkheden, veiligheid en gebruikerservaring. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + open-source-alternatief-voor + kebab-case - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 324 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Houd er rekening mee dat de verstrekte informatie in deze Ghostfolio vs is gebaseerd op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons de gegevens nauwkeurig te houden op GitHub. - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Klaar om je investeringen naar een hoger niveau te brengen? - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Aan de slag - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Zwitserland - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/ui/src/lib/i18n.ts + 93 - - privacy-policy - privacybeleid - snake-case + + Global + Wereldwijd - apps/client/src/app/app.component.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - apps/client/src/app/core/paths.ts - 8 + libs/ui/src/lib/i18n.ts + 16 + + + (Last 24 hours) + (Laatste 24 uur) - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/open/open-page.html + 37 - - license - licentie - snake-case + + (Last 30 days) + (Laatste 30 dagen) - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Laatste 90 dagen) - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/open/open-page.html + 127 - - markets - markten - snake-case + + Choose or drop a file here + Kies of sleep bestand hier - apps/client/src/app/app.component.ts + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 + + + You are using the Live Demo. + U maakt gebruik van een Live Demo. - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + Eenmalige kosten, jaarlijkse account kosten - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribute van bedrijfsopbrengsten - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Fee + Kosten - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + libs/ui/src/lib/i18n.ts + 37 + + + Interest + Rente - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 + + + Revenue for lending out money + Opbrengsten voor het uitlenen van geld - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Label Toevoegen - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 + + + Do you really want to delete this tag? + Weet u zetker dat u dit label wilt verwijderen? - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 85 - - pricing - prijzen - snake-case + + Update tag + Label bijwerken - apps/client/src/app/app.component.ts - 85 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Voeg label toe - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Currency Cluster Risks + Valuta Cluster Risico’s - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 + + + Account Cluster Risks + Account Cluster Risco’s - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 + + + Transfer Cash Balance + Contant saldo overboeken - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Maatstaf - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Version + Versie - apps/client/src/app/core/paths.ts + apps/client/src/app/components/admin-overview/admin-overview.html 7 + + + Settings + Instellingen - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + Van - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + Naar - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Overdracht - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Lidmaatschap - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 31 + + + Access + Toegang - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 26 + + + Asset Profile + Bezittingen Profiel - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Weet u zeker dat u dit bezittingen profiel wilt verwijderen? - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Search + Zoeken - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Voeg Handmatig Toe - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies van verschillende platformen bij te houden. - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + Last All Time High + Laatste Recordhoogte - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + User + Gebruiker - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/components/admin-users/admin-users.html + 29 - - register - registratie - snake-case + + Ghostfolio vs comparison table + Ghostfolio vs vergelijkingstabel - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + Open Source Wealth Management Software + Open Source Vermogensbeheer Software - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/pages/i18n/i18n-page.html + 97 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, financiën, management, performance, portfolio, software, aandeel, handel, vermogen, web3 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Oeps, geldoverdracht is mislukt. - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 + + + Extreme Fear + Extreme Angst - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + libs/ui/src/lib/i18n.ts + 100 + + + Extreme Greed + Extreme Hebzucht - apps/client/src/app/pages/features/features-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 101 + + + Neutral + Neutraal - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 104 + + + Oops! Could not parse historical data. + Oeps! Ophalen van historische data is mislukt. - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 - - resources - bronnen - snake-case + + Do you really want to delete this system message? + Wilt u dit systeembericht echt verwijderen? - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + 50-Day Trend + 50-Daagse Trend - apps/client/src/app/components/header/header.component.ts - 86 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend + 200-Daagse Trend - apps/client/src/app/components/header/header.component.ts - 92 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Cash Balances + Contant Saldo - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Starting from + Begin vanaf - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 + + + year + jaar - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 + + + Do you really want to delete this account balance? + Wilt u dit rekeningsaldo echt verwijderen? - apps/client/src/app/pages/features/features-page.component.ts - 29 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + If a translation is missing, kindly support us in extending it here. + Als er een vertaling ontbreekt, kunt u ons helpen deze here uit te breiden. - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 + + + The current market price is + De huidige markt waarde is - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 + + + Test + Test - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 + + + Date Range + Datumbereik - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + libs/ui/src/lib/assistant/assistant.html + 130 + + + Permission + Toestemming - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Deze overzichtspagina bevat een verzameling tools voor persoonlijke financiën vergeleken met het open source alternatief Ghostfolio. Als je waarde hecht aan transparantie, gegevensprivacy en samenwerking binnen een gemeenschap, biedt Ghostfolio een uitstekende mogelijkheid om je financieel beheer in eigen hand te nemen. + + Restricted view + Beperkte blik - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Bekijk de links hieronder om verschillende persoonlijke financiële tools met Ghostfolio te vergelijken. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Open Source Alternative to - Open Source alternatief voor + + Oops! Could not grant access. + Oeps! Kan geen toegang verlenen. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Open Source Alternative to - Open Source alternatief voor + + Private + Prive - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - The Open Source Alternative to - Open Source alternatief voor + + Job Queue + Opdracht Wachtrij - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + libs/common/src/lib/routes/routes.ts + 46 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Ben je op zoek naar een open source alternatief voor ? Ghostfolio is een krachtige tool voor portefeuillebeheer die particulieren een uitgebreid platform biedt om hun beleggingen bij te houden, te analyseren en te optimaliseren. Of je nu een ervaren belegger bent of net begint, Ghostfolio biedt een intuïtieve gebruikersinterface en uitgebreide functionaliteiten om je te helpen weloverwogen beslissingen te nemen en je financiële toekomst in eigen handen te nemen. + + Market data is delayed for + Markt data is vertraagd voor - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is open source software (OSS) en biedt een kosteneffectief alternatief voor waardoor het bijzonder geschikt is voor mensen met een krap budget, zoals degenen Financiële onafhankelijkheid nastreven, vroeg met pensioen gaan (FIRE). Door gebruik te maken van de collectieve inspanningen van een gemeenschap van ontwikkelaars en liefhebbers van persoonlijke financiën, verbetert Ghostfolio voortdurend de mogelijkheden, veiligheid en gebruikerservaring. + + Investment + Investering - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - - - open-source-alternative-to - open-source-alternatief-voor - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 + + + Absolute Asset Performance + Absolute Activaprestaties - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Houd er rekening mee dat de verstrekte informatie in deze Ghostfolio vs is gebaseerd op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons de gegevens nauwkeurig te houden op GitHub. + + Asset Performance + Activaprestaties - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Ready to take your investments to the next level? - Klaar om je investeringen naar een hoger niveau te brengen? + + Absolute Currency Performance + Absolute Valutaprestaties - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Get Started - Aan de slag + + Currency Performance + Valutaprestaties - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Switzerland - Zwitserland + + Absolute Net Performance + Absolute Nettoprestatie - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 + + + Net Performance + Nettoprestatie - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - Global - Wereldwijd + + Week to date + Week tot nu toe - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + libs/ui/src/lib/assistant/assistant.component.ts + 344 + + + WTD + Week tot nu toe - libs/ui/src/lib/i18n.ts - 16 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - (Last 24 hours) - (Laatste 24 uur) + + Month to date + Maand tot nu toe - apps/client/src/app/pages/open/open-page.html - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - (Last 30 days) - (Laatste 30 dagen) + + MTD + MTD - apps/client/src/app/pages/open/open-page.html - 48 + libs/ui/src/lib/assistant/assistant.component.ts + 348 + + + Year to date + Jaar tot nu toe - apps/client/src/app/pages/open/open-page.html - 59 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - (Last 90 days) - (Laatste 90 dagen) + + View + Weergave - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Choose or drop a file here - Kies of sleep bestand hier - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - You are using the Live Demo. - U maakt gebruik van een Live Demo. + + Oops! A data provider is experiencing the hiccups. + Oeps! Een gegevensaanbieder ondervindt problemen. - apps/client/src/app/app.component.html - 12 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - One-time fee, annual account fees - Eenmalige kosten, jaarlijkse account kosten + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Als u vandaag met pensioen zou gaan, kunt u per jaar or per maand opnemen, gebaseerd op uw totale vermogen van en een opnamepercentage van 4%. - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Distribution of corporate earnings - Distribute van bedrijfsopbrengsten + + Reset Filters + Filters Herstellen - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + libs/ui/src/lib/assistant/assistant.html + 224 - - Fee - Kosten + + year + jaar - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Interest - Rente + + years + jaren - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Revenue for lending out money - Opbrengsten voor het uitlenen van geld + + Apply Filters + Filters Toepassen - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + libs/ui/src/lib/assistant/assistant.html + 234 - - Add Tag - Label Toevoegen - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 - - - - Do you really want to delete this tag? - Weet u zetker dat u dit label wilt verwijderen? + + Data Gathering + Data Verzamelen - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Update tag - Label bijwerken - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - Add tag - Voeg label toe + + General + Algemeen - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Currency Cluster Risks - Valuta Cluster Risico’s + + Cloud + Cloud - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Account Cluster Risks - Account Cluster Risco’s - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + libs/common/src/lib/routes/routes.ts + 240 - - Transfer Cash Balance - Transfer Cash Balance + + Self-Hosting + Zelf Hosten - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + libs/common/src/lib/routes/routes.ts + 248 - - Benchmark - Maatstaf + + self-hosting + zelf-hosten + kebab-case - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + libs/common/src/lib/routes/routes.ts + 243 - - - Version - Versie - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + libs/common/src/lib/routes/routes.ts + 246 - - Settings - Instellingen + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oeps! Het lijkt er op dat u te veel verzoeken indient. Doe het iets rustiger aan alstublieft. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - From - Van + + My Account + Mijn Account - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - To - Naar + + Active + Actief - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 - - Transfer - Overdracht + + Closed + Gesloten - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Membership - Lidmaatschap - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 - + + Activity + Activiteit - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - Access - Toegang + + Dividend Yield + Dividendrendement - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 + + + Execute Job + Opdracht Uitvoeren - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 - - Find holding... - Vind bezittingen... + + Priority + Prioriteit - libs/ui/src/lib/assistant/assistant.component.ts - 143 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - No entries... - Geen vermeldingen... + + This action is not allowed. + Deze actie is niet toegestaan. - libs/ui/src/lib/assistant/assistant.html - 62 + apps/client/src/app/core/http-response.interceptor.ts + 67 + + + Liquidity + Liquiditeit - libs/ui/src/lib/assistant/assistant.html - 85 + libs/ui/src/lib/i18n.ts + 48 - - Asset Profile - Bezittingen Profiel + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activiteit} other {activiteiten}} - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Do you really want to delete this asset profile? - Weet u zeker dat u dit bezittingen profiel wilt verwijderen? + + Buy and sell + Aan- en Verkoop - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + libs/ui/src/lib/i18n.ts + 8 - - Search - Zoeken + + Delete Activities + Verwijder Activiteiten - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Add Manually - Voeg Handmatig Toe + + Internationalization + Internationalizering - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + libs/common/src/lib/routes/routes.ts + 119 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies van verschillende platformen bij te houden. + + Do you really want to close your Ghostfolio account? + Wilt u uw Ghostfolio account echt sluiten? - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Last All Time High - Laatste Recordhoogte + + Danger Zone + Gevarenzone - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - User - Gebruiker + + Close Account + Account Sluiten - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - Ghostfolio vs comparison table - Ghostfolio vs vergelijkingstabel + + By ETF Holding + Per Aangehouden ETF - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Open Source Wealth Management Software - Open Source Vermogensbeheer Software + + Approximation based on the top holdings of each ETF + Benadering op basis van de grootste belegingen binnen iedere ETF - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, financiën, management, performance, portfolio, software, aandeel, handel, vermogen, web3 + + Join now or check out the example account + Word nu lid of bekijk het voorbeeldaccount - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Oops, cash balance transfer has failed. - Oeps, geldoverdracht is mislukt. + + Oops! There was an error setting up biometric authentication. + Oeps! Er is een fout opgetreden met het instellen van de biometrische authenticatie. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Extreme Fear - Extreme Angst + + Show more + Laat meer zien - libs/ui/src/lib/i18n.ts - 100 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Extreme Greed - Extreme Hebzucht + + Benchmarks + Benchmarks - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - Neutral - Neutraal + + Delete Profiles + Verwijder Profielen - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Oops! Could not parse historical data. - Oeps! Ophalen van historische data is mislukt. + + Do you really want to delete these profiles? + Wilt u deze profielen echt verwijderen? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Do you really want to delete this system message? - Wilt u dit systeembericht echt verwijderen? + + Oops! Could not delete profiles. + Oeps! Verwijderen van de profielen is mislukt. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - 50-Day Trend - 50-Daagse Trend + + Table + Tabel - libs/ui/src/lib/benchmark/benchmark.component.html + apps/client/src/app/components/home-holdings/home-holdings.html 16 - - 200-Day Trend - 200-Daagse Trend + + Chart + Grafiek - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Cash Balances - Contant Saldo + + Would you like to refine your personal investment strategy? + Wilt u uw persoonlijke belegginngsstrategie verfijnen? - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/pages/public/public-page.html + 211 - - Starting from - Begin vanaf + + Alternative + Alternatief - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 + + + App + App - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - year - jaar + + Budgeting + Budgetteren - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 + + + Community + Gemeenschap - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Do you really want to delete this account balance? - Wilt u dit rekeningsaldo echt verwijderen? + + Family Office + Familiekantoor - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - If a translation is missing, kindly support us in extending it here. - Als er een vertaling ontbreekt, kunt u ons helpen deze here uit te breiden. + + Investor + Investeerder - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - The current market price is - De huidige markt waarde is + + Open Source + Open Source - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - Test - Test + + Personal Finance + Persoonlijke Financiën - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Date Range - Datumbereik + + Privacy + Privacy - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Permission - Toestemming + + Software + Software - apps/client/src/app/components/access-table/access-table.component.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 + + + Tool + Hulpmiddel - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Restricted view - Beperkte blik + + User Experience + Gebruikers Ervaring - apps/client/src/app/components/access-table/access-table.component.html - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + Wealth + Vermogen - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - Oops! Could not grant access. - Oeps! Kan geen toegang verlenen. + + Wealth Management + Vermogensbeheer - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Private - Prive + + Australia + Australië - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + libs/ui/src/lib/i18n.ts + 74 - - Job Queue - Opdracht Wachtrij + + Austria + Oostenrijk - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + libs/ui/src/lib/i18n.ts + 75 + + + Belgium + België - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + libs/ui/src/lib/i18n.ts + 76 - - Market data is delayed for - Markt data is vertraagd voor - - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 - - - - Investment - Investering - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 - - - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 - - - - Absolute Asset Performance - Absolute Activaprestaties - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 - - - - Asset Performance - Activaprestaties - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 - - - - Absolute Currency Performance - Absolute Valutaprestaties - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 - - - - Currency Performance - Valutaprestaties - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 - - - - Absolute Net Performance - Absolute Nettoprestatie - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 - - - - Net Performance - Nettoprestatie - - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 - - - - Week to date - Week tot nu toe - - libs/ui/src/lib/assistant/assistant.component.ts - 222 - - - - WTD - WTD - - libs/ui/src/lib/assistant/assistant.component.ts - 222 - - - - Month to date - Maand tot nu toe - - libs/ui/src/lib/assistant/assistant.component.ts - 226 - - - - MTD - MTD - - libs/ui/src/lib/assistant/assistant.component.ts - 226 - - - - Year to date - Jaar tot nu toe - - libs/ui/src/lib/assistant/assistant.component.ts - 230 - - - - View - View - - apps/client/src/app/components/access-table/access-table.component.html - 23 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 - - - - Oops! A data provider is experiencing the hiccups. - Oeps! Een gegevensaanbieder ondervindt problemen. - - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 - - - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Als u vandaag met pensioen zou gaan, kunt u per jaar or per maand opnemen, gebaseerd op uw totale vermogen van en een opnamepercentage van 4%. - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 - - - - Reset Filters - Filters Herstellen - - libs/ui/src/lib/assistant/assistant.html - 187 - - - - year - jaar - - libs/ui/src/lib/assistant/assistant.component.ts - 234 - - - - years - jaren - - libs/ui/src/lib/assistant/assistant.component.ts - 256 - - - - Apply Filters - Filters Toepassen - - libs/ui/src/lib/assistant/assistant.html - 197 - - - - Data Gathering - Data Verzamelen - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 - - - apps/client/src/app/components/admin-overview/admin-overview.html - 60 - - - - General - Algemeen + + Bulgaria + Bulgarije - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 78 - - Cloud - Cloud - - apps/client/src/app/pages/faq/faq-page.component.ts - 42 - + + Canada + Canada - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Self-Hosting - Zelf Hosten - - apps/client/src/app/pages/faq/faq-page.component.ts - 48 - + + Czech Republic + Tsjechische Republiek - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 80 - - self-hosting - zelf hosten + + Finland + Finland - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/ui/src/lib/i18n.ts + 81 - - FAQ - FAQ - - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 - + + France + Frankrijk - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 82 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oeps! Het lijkt er op dat u te veel verzoeken indient. Doe het iets rustiger aan alstublieft. + + Germany + Duitsland - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 83 - - My Account - Mijn Account + + India + India - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 84 - - Active - Actief + + Italy + Italië - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 85 - - Closed - Gesloten + + Netherlands + Nederland - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + libs/ui/src/lib/i18n.ts + 87 - - Activity - Activiteit + + New Zealand + Nieuw-Zeeland - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 88 - - Dividend Yield - Dividendrendement + + Poland + Polen - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 89 - - Execute Job - Opdracht Uitvoeren + + Romania + Roemenië - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 90 - - Priority - Prioriteit + + South Africa + Zuid-Afrika - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 92 - - This action is not allowed. - Deze actie is niet toegestaan. + + Thailand + Thailand - apps/client/src/app/core/http-response.interceptor.ts - 64 + libs/ui/src/lib/i18n.ts + 94 - - Liquidity - Liquiditeit + + United States + Verenigde Station libs/ui/src/lib/i18n.ts - 48 + 97 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activiteit} other {activiteiten}} + + Error + Fout - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - Buy and sell - Aan- en Verkoop + + Deactivate + Deactiveren - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/components/rule/rule.component.html + 72 - - Delete Activities - Verwijder Activiteiten + + Activate + Activeren - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/components/rule/rule.component.html + 74 - - Internationalization - Internationalizering + + Inactive + Inactief - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Do you really want to close your Ghostfolio account? - Wilt u uw Ghostfolio account echt sluiten? + + Cancel + Annuleren - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/ui/src/lib/i18n.ts + 9 - - Danger Zone - Gevarenzone + + Close + Sluiten - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + libs/ui/src/lib/i18n.ts + 11 - - Close Account - Account Sluiten + + Yes + Ja - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + libs/ui/src/lib/i18n.ts + 32 - - By ETF Holding - Per Aangehouden ETF + + Copy link to clipboard + Kopieer link naar klembord - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Approximation based on the top holdings of each ETF - Benadering op basis van de grootste belegingen binnen iedere ETF + + Portfolio Snapshot + Portfolio Momentopname - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Join now or check out the example account - Word nu lid of bekijk het voorbeeldaccount + + Change with currency effect Change + Verandering met valuta effect Verandering - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Oops! There was an error setting up biometric authentication. - Oeps! Er is een fout opgetreden met het instellen van de biometrische authenticatie. + + Performance with currency effect Performance + Prestatie met valuta effect Prestatie - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Show more - Laat meer zien + + Threshold Min + Drempelwaarde Min - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Benchmarks - Benchmarks + + Threshold Max + Drempelwaarde Max - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Delete Profiles - Verwijder Profielen + + Close + Sluiten - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Do you really want to delete these profiles? - Wilt u deze profielen echt verwijderen? + + Customize + Aanpassen - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/rule/rule.component.html + 67 - - Oops! Could not delete profiles. - Oeps! Verwijderen van de profielen is mislukt. + + No auto-renewal. + Geen automatische verlenging. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Table - Tabel + + Today + Vandaag - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 24 - - Chart - Grafiek + + This year + Dit jaar - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/pages/public/public-page.html + 42 - - Would you like to refine your personal investment strategy? - Wilt u uw persoonlijke belegginngsstrategie verfijnen? + + From the beginning + Vanaf het begin apps/client/src/app/pages/public/public-page.html - 211 + 60 - - Alternative - Alternatief + + Oops! Invalid currency. + Oeps! Ongeldige valuta. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - App - App + + This page has been archived. + Deze pagina is gearchiveerd. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Budgeting - Budgetteren + + is Open Source Software + is Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Community - Gemeenschap + + is not Open Source Software + is geen Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Family Office - Familiekantoor + + is Open Source Software + is Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Investor - Investeerder + + is not Open Source Software + is geen Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Open Source - Open Source + + can be self-hosted + kan zelf gehost worden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Personal Finance - Persoonlijke Financiën + + cannot be self-hosted + kan niet zelf gehost worden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Privacy - Privacy + + can be self-hosted + kan zelf gehost worden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Software - Software + + cannot be self-hosted + kan niet zelf gehost worden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 + + + + can be used anonymously + kan anoniem gebruikt worden + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Tool - Hulpmiddel + + cannot be used anonymously + kan niet anoniem gebruik worden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - User Experience - Gebruikers Ervaring + + can be used anonymously + kan anoniem gebruikt worden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Wealth - Vermogen + + cannot be used anonymously + kan niet anoniem gebruikt worden - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Wealth Management - Vermogensbeheer + + offers a free plan + biedt een gratis abonnement aan - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Australia - Australië + + does not offer a free plan + biedt geen gratis abonnement aan - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Austria - Oostenrijk + + offers a free plan + biedt een gratis abonnement aan - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Belgium - België + + does not offer a free plan + biedt geen gratis abonnement aan - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Bulgaria - Bulgarije + + Oops! Could not find any assets. + Oeps! Kan geen activa vinden. - libs/ui/src/lib/i18n.ts - 78 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Canada - Canada + + Data Providers + Gegevensleveranciers - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Czech Republic - Tsjechische Republiek + + Set API key + API-sleutel instellen - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - Finland - Finland + + Get access to 80’000+ tickers from over 50 exchanges + Krijg toegang tot meer dan 80.000 tickers van meer dan 50 beurzen libs/ui/src/lib/i18n.ts - 81 + 24 - - France - Frankrijk + + Ukraine + Oekraïne libs/ui/src/lib/i18n.ts - 82 + 95 - - Germany - Duitsland + + Join now + Word nu lid - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - India - India + + Glossary + Woordenlijst - libs/ui/src/lib/i18n.ts - 84 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - Italy - Italië - libs/ui/src/lib/i18n.ts - 85 + libs/common/src/lib/routes/routes.ts + 293 - - Netherlands - Nederland + + Guides + Gidsen - libs/ui/src/lib/i18n.ts - 87 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - New Zealand - Nieuw-Zeeland - libs/ui/src/lib/i18n.ts - 88 + libs/common/src/lib/routes/routes.ts + 301 - - Poland - Polen + + guides + gidsen + kebab-case - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 296 - - - Romania - Roemenië - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 299 - - South Africa - Zuid-Afrika + + glossary + woordenlijst + kebab-case - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 288 - - - Thailand - Thailand - libs/ui/src/lib/i18n.ts - 94 + libs/common/src/lib/routes/routes.ts + 291 - - United States - Verenigde Station + + Threshold range + Drempebereik - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Error - Fout + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray gebruikt statische analyse om potentiële problemen en risico’s in uw portefeuille te ontdekken. Pas de onderstaande regels aan en stel aangepaste drempelwaarden in die aansluiten bij uw persoonlijke beleggingsstrategie. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Deactivate - Deactiveren + + Economic Market Cluster Risks + Risico’s van Economische Marktclusters - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Activate - Activeren + + of + van - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Inactive - Inactief + + daily requests + dagelijkse verzoeken - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Cancel - Annuleren + + Remove API key + Verwijder API-sleutel - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Close - Sluiten - - libs/ui/src/lib/i18n.ts - 11 + + Do you really want to delete the API key? + Wilt u de API-sleutel echt verwijderen? + + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Yes - Ja + + Please enter your Ghostfolio API key: + Voer uw Ghostfolio API-sleutel in: - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Copy link to clipboard - Kopieer link naar klembord + + API Requests Today + Aantal API-Verzoeken Vandaag - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Portfolio Snapshot - Portfolio Momentopname + + Could not generate an API key + Er kon geen API-sleutel worden gegenereerd - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Change with currency effect Change - Verandering met valuta effect Verandering + + Set this API key in your self-hosted environment: + Stel deze API-sleutel in uw zelf-gehoste omgeving in: - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Performance with currency effect Performance - Prestatie met valuta effect Prestatie + + Ghostfolio Premium Data Provider API Key + Ghostfolio Premium Gegevensleverancier API-sleutel - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Threshold Min - Drempelwaarde Min + + Do you really want to generate a new API key? + Wilt u echt een nieuwe API-sleutel genereren? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Max - Drempelwaarde Max + + Tag + Label - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/assistant/assistant.html + 194 - - Close - Sluiten + + API Key + API-sleutel - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Customize - Aanpassen + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Genereer een Ghostfolio Premium Gegevensleverancier API-sleutel voor zelfgehoste omgevingen... - apps/client/src/app/components/rule/rule.component.html - 67 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - No auto-renewal. - Geen automatische verlenging. + + out of + van - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - Today - Vandaag + + rules align with your portfolio. + regels die aansluiten bij uw portefeuille. - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - This year - Dit jaar + + Save + Opslaan - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - From the beginning - Vanaf het begin + + Asset Class Cluster Risks + Activa Klasse Cluster Risico’s - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - Oops! Invalid currency. - Oeps! Ongeldige valuta. + + Me + Ik - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - This page has been archived. - Deze pagina is gearchiveerd. + + Received Access + Toegang Verkregen - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - is Open Source Software - is Open Source Software + + Please enter your Ghostfolio API key. + Voer uw Ghostfolio API-sleutel in. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is not Open Source Software - is geen Open Source Software + + AI prompt has been copied to the clipboard + AI-prompt is naar het klembord gekopieerd - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is Open Source Software - is Open Source Software + + Link has been copied to the clipboard + Link is gekopieerd naar klemboord - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is not Open Source Software - is geen Open Source Software + + Regional Market Cluster Risks + Regionale Markt Clusterrisico’s - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - can be self-hosted - kan zelf gehost worden + + Lazy + Lui - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be self-hosted - kan niet zelf gehost worden + + Instant + Direct - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - can be self-hosted - kan zelf gehost worden + + Default Market Price + Standaard Marktprijs - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - cannot be self-hosted - kan niet zelf gehost worden + + Mode + Modus - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - can be used anonymously - kan anoniem gebruikt worden + + Selector + Kiezer - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - cannot be used anonymously - kan niet anoniem gebruik worden + + HTTP Request Headers + HTTP Verzoek Headers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - can be used anonymously - kan anoniem gebruikt worden - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + + end of day + eind van de dag + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be used anonymously - kan niet anoniem gebruikt worden + + real-time + real-time - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - offers a free plan - biedt een gratis abonnement aan + + Open Duck.ai + Open Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - does not offer a free plan - biedt geen gratis abonnement aan + + Create + Nieuw - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - offers a free plan - biedt een gratis abonnement aan + + Market Data + Markt Gegevens - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - does not offer a free plan - biedt geen gratis abonnement aan + + Change + Aanpassen - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - Oops! Could not find any assets. - Oeps! Kan geen activa vinden. + + Performance + Prestatie - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Data Providers - Gegevensleveranciers - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Set API key - API-sleutel instellen + + Copy portfolio data to clipboard for AI prompt + Kopieer portfolio gegevens naar klemboord voor AI-prompt - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Get access to 80’000+ tickers from over 50 exchanges - Krijg toegang tot meer dan 80.000 tickers van meer dan 50 beurzen + + Copy AI prompt to clipboard for analysis + Kopieer AI-prompt naar klemboord voor analyse - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Ukraine - Oekraïne + + Armenia + Armenië libs/ui/src/lib/i18n.ts - 95 + 73 - - Join now - Word nu lid + + British Virgin Islands + Britse Maagdeneilanden - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 77 - - Glossary - Woordenlijst + + Singapore + Singapore - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + libs/ui/src/lib/i18n.ts + 91 + + + Terms and Conditions + Algemene Voorwaarden - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Guides - Gidsen + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Bewaar uw beveiligingstoken goed. Als u deze verliest, kunt u uw account niet meer herstellen. - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + Ik begrijp dat als ik mijn beveiligingstoken verlies, ik mijn account niet kan herstellen - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - guides - gidsen - snake-case + + Continue + Doorgaan - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Hier is uw beveiligingstoken. Deze is slechts één keer zichtbaar, bewaar hem op een veilige plaats. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - glossary - woordenlijst - snake-case + + Security token + Beveiligingstoken - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Threshold range - Drempebereik + + Do you really want to generate a new security token for this user? + Wilt u echt een nieuw beveiligingstoken voor deze gebruiker aanmaken? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray gebruikt statische analyse om potentiële problemen en risico’s in uw portefeuille te ontdekken. Pas de onderstaande regels aan en stel aangepaste drempelwaarden in die aansluiten bij uw persoonlijke beleggingsstrategie. + + Generate Security Token + Beveiligingstoken Aanmaken - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Economic Market Cluster Risks - Risico’s van Economische Marktclusters + + United Kingdom + Verenigd Koninkrijk - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + libs/ui/src/lib/i18n.ts + 96 - - of - van + + Terms of Service + Servicevoorwaarden - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/app.component.html + 112 - - daily requests - dagelijkse verzoeken + + terms-of-service + servicevoorwaarden + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/common/src/lib/routes/routes.ts + 212 - - - Remove API key - Verwijder API-sleutel - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + libs/common/src/lib/routes/routes.ts + 215 - - Do you really want to delete the API key? - Wilt u de API-sleutel echt verwijderen? + + Terms of Service + Servicevoorwaarden - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 217 - - Please enter your Ghostfolio API key: - Voer uw Ghostfolio API-sleutel in: + + Terms of Service + Servicevoorwaarden - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - I have an API key - Ik heb een API-sleutel + + and I agree to the Terms of Service. + en ik ga akkoord met de Servicevoorwaarden. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - API Requests Today - Aantal API-Verzoeken Vandaag + + () is already in use. + () is al in gebruik. - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Could not generate an API key - Er kon geen API-sleutel worden gegenereerd + + An error occurred while updating to (). + Er is een fout opgetreden tijdens het updaten naar (). - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Set this API key in your self-hosted environment: - Stel deze API-sleutel in uw zelf-gehoste omgeving in: + + Apply + Toepassen - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Ghostfolio Premium Data Provider API Key - Ghostfolio Premium Gegevensleverancier API-sleutel + + with API access for + met API toegang tot - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Do you really want to generate a new API key? - Wilt u echt een nieuwe API-sleutel genereren? + + Gather Recent Historical Market Data + Verzamel Recente Marktgegevens - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Tag - Label + + Gather All Historical Market Data + Verzamel Alle Marktgegevens - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - API Key - API-sleutel + + Gather Historical Market Data + Verzamel Historische Marktgegevens - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Genereer een Ghostfolio Premium Gegevensleverancier API-sleutel voor zelfgehoste omgevingen... + + Data Gathering is off + Gegevensverzameling is uitgeschakeld - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - out of - van + + Performance Calculation + Prestatieberekening - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - rules align with your portfolio. - regels die aansluiten bij uw portefeuille. + + someone + iemand - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Save - Opslaan + + Add asset to watchlist + Voeg activa toe aan de volglijst - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - Asset Class Cluster Risks - Activa Klasse Cluster Risico’s + + Watchlist + Volglijst - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Me - Ik - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/pages/features/features-page.html + 197 - - Received Access - Toegang Verkregen + + Watchlist + Volglijst - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + libs/common/src/lib/routes/routes.ts + 110 - - Please enter your Ghostfolio API key. - Voer uw Ghostfolio API-sleutel in. + + Do you really want to delete this item? + Wilt u dit item echt verwijderen? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - AI prompt has been copied to the clipboard - AI-prompt is naar het klembord gekopieerd + + Log out + Uitloggen - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/header/header.component.html + 329 - - Link has been copied to the clipboard - Link is gekopieerd naar klemboord + + Calculations are based on delayed market data and may not be displayed in real-time. + Berekeningen zijn gebaseerd op vertraagde marktgegevens en worden mogelijk niet in realtime weergegeven. - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Early Access - Vroege Toegang - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/markets/markets.html + 52 - - Regional Market Cluster Risks - Regionale Markt Clusterrisico’s + + changelog + wijzigingslogboek + kebab-case - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + libs/common/src/lib/routes/routes.ts + 180 + + + libs/common/src/lib/routes/routes.ts + 183 - - Lazy - Lazy + + Demo user account has been synced. + Demo-gebruikersaccount is gesynchroniseerd. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Instant - Instant + + Sync Demo User Account + Synchroniseer demo-gebruikersaccount - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Default Market Price - Standaard Marktprijs + + Emergency Fund: Set up + Noodfonds: opgezet - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Mode - Modus + + No emergency fund has been set up + Er is geen noodfonds ingesteld - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - Selector - Selector + + An emergency fund has been set up + Er is een noodfonds opgericht - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - HTTP Request Headers - HTTP Verzoek Headers + + Fee Ratio + Vergoedingsverhouding - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - end of day - eind van de dag + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + De kosten overschrijden ${thresholdMax}% van uw initiële investering (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - real-time - real-time + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + De kosten bedragen niet meer dan ${thresholdMax}% van uw initiële investering (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Open Duck.ai - Open Duck.ai + + Name + Naam - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Create - Nieuw + + Find holding or page... + Zoek holding of pagina... - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Market Data - Markt Gegevens + + Quick Links + Snelle koppelingen - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.html + 43 - - Change - Aanpassen + + Asset Profiles + Activaprofielen - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 99 - - Performance - Prestatie + + Live Demo + Live-demo - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/common/src/lib/routes/routes.ts + 231 + + + Open Source Alternative to + Open Source alternatief voor - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/common/src/lib/routes/routes.ts + 326 - - Copy portfolio data to clipboard for AI prompt - Kopieer portfolio gegevens naar klemboord voor AI-prompt + + Single Account + Eén account - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Copy AI prompt to clipboard for analysis - Kopieer AI-prompt naar klemboord voor analyse + + Your net worth is managed by a single account + Uw nettowaarde wordt beheerd door één enkele account - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - Armenia - Armenië + + Your net worth is managed by ${accountsLength} accounts + Uw nettowaarde wordt beheerd door ${accountsLength}-accounts - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - British Virgin Islands - Britse Maagdeneilanden + + Holdings + Bezit - libs/ui/src/lib/i18n.ts - 77 + libs/ui/src/lib/assistant/assistant.html + 69 - - Singapore - Singapore + + personal-finance-tools + hulpmiddelen-voor-persoonlijke-financien + kebab-case - libs/ui/src/lib/i18n.ts - 91 + libs/common/src/lib/routes/routes.ts + 312 - - - Terms and Conditions - Algemene Voorwaarden - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 315 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Bewaar uw beveiligingstoken goed. Als u deze verliest, kunt u uw account niet meer herstellen. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 323 - - I understand that if I lose my security token, I cannot recover my account - Ik begrijp dat als ik mijn beveiligingstoken verlies, ik mijn account niet kan herstellen + + markets + markten + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 304 - - - Continue - Doorgaan - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 307 - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Hier is uw beveiligingstoken. Deze is slechts één keer zichtbaar, bewaar hem op een veilige plaats. + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Vul je self-hosted Ghostfolio met een krachtige dataleverancier om toegang te krijgen tot 80.000+ tickers van meer dan 50 beurzen wereldwijd. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Security token - Beveiligingstoken + + Get Access + Krijg toegang - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Do you really want to generate a new security token for this user? - Wilt u echt een nieuw beveiligingstoken voor deze gebruiker aanmaken? + + Learn more + Meer informatie - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - Generate Security Token - Beveiligingstoken Aanmaken + + new + nieuw - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - United Kingdom - Verenigd Koninkrijk + + Limited Offer! + Beperkt aanbod! - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - Terms of Service - Servicevoorwaarden + + Get extra + Krijg extra - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 313 - - terms-of-service - servicevoorwaarden - snake-case + + Available + Beschikbaar - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Niet beschikbaar - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + nieuw - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 + + + Investment + Investering - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 14 - - Terms of Service - Servicevoorwaarden + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Meer dan ${thresholdMax}% van uw huidige investering bedraagt ​​${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 15 + + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + Het grootste deel van uw huidige investering bedraagt ​​${maxAccountName} (${maxInvestmentRatio}%) en bedraagt ​​niet meer dan ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - Terms of Service - Servicevoorwaarden + + Equity + Eigen vermogen - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - and I agree to the Terms of Service. - en ik ga akkoord met de Servicevoorwaarden. + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + De aandelenbijdrage van uw huidige investering (${equityValueRatio}%) overschrijdt ${thresholdMax}% - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - () is already in use. - () is al in gebruik. + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + De inbreng in eigen vermogen van uw huidige investering (${equityValueRatio}%) ligt onder de ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - An error occurred while updating to (). - Er is een fout opgetreden tijdens het updaten naar (). + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + De aandelenbijdrage van uw huidige investering (${equityValueRatio}%) ligt binnen het bereik van ${thresholdMin}% en ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - Apply - Toepassen + + Fixed Income + Vastrentende waarden - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - with API access for - met API toegang tot + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + De bijdrage van vastrentende waarden in uw huidige investering (${fixedIncomeValueRatio}%) overschrijdt ${thresholdMax}% - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather Recent Historical Market Data - Verzamel Recente Marktgegevens + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + De bijdrage van vastrentende waarden in uw huidige investering (${fixedIncomeValueRatio}%) ligt onder ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather All Historical Market Data - Verzamel Alle Marktgegevens + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + De bijdrage van vastrentende waarden in uw huidige investering (${fixedIncomeValueRatio}%) ligt binnen het bereik van ${thresholdMin}% en ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Gather Historical Market Data - Verzamel Historische Marktgegevens + + Investment: Base Currency + Investering: basisvaluta - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Data Gathering is off - Gegevensverzameling is uitgeschakeld + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - Performance Calculation - Prestatieberekening + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - someone - iemand + + Investment + Investment - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Add asset to watchlist - Voeg activa toe aan de volglijst + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 72 - - Watchlist - Volglijst + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 76 + + + start + start + kebab-case - apps/client/src/app/pages/features/features-page.html - 197 + libs/common/src/lib/routes/routes.ts + 336 - - - Watchlist - Volglijst - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 337 + + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/pages/home/home-page.component.ts - 53 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Get Early Access - Krijg Vroegtijdige Toegang + + Generate + Generate - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Do you really want to delete this item? - Wilt u dit item echt verwijderen? + + Stocks + Stocks - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/markets/markets.component.ts + 54 - - Log out - Uitloggen + + Cryptocurrencies + Cryptocurrencies - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index c62b42f69..c1872d40a 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1,3017 +1,2749 @@ - + about o-ghostfolio - snake-case + kebab-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 214 + + + faq + faq + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 245 + + + features + funkcje + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/about/about-page.component.ts - 84 + libs/common/src/lib/routes/routes.ts + 255 + + + license + licencja + kebab-case - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + rynki + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + cennik + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 270 + + + privacy-policy + polityka-prywatnosci + kebab-case - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + libs/common/src/lib/routes/routes.ts + 207 + + + register + zarejestruj + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/routes/routes.ts + 280 - - faq - faq - snake-case + + resources + zasoby + kebab-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 322 - - features - funkcje - snake-case - - apps/client/src/app/app.component.ts - 83 - + + You are using the Live Demo. + Korzystasz z wersji demonstracyjnej. - apps/client/src/app/components/header/header.component.ts - 83 + apps/client/src/app/app.component.html + 12 + + + Create Account + Utwórz Konto - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/app.component.html + 13 - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/register/register-page.html + 27 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 101 + + + Personal Finance + Finanse Osobiste - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/app.component.html + 57 + + + Markets + Rynki - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/components/header/header.component.html + 408 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + apps/client/src/app/components/markets/markets.html + 2 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/markets/resources-markets.component.html + 2 + + + Resources + Zasoby - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/app.component.html + 64 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/components/header/header.component.html + 88 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/components/header/header.component.html + 301 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + apps/client/src/app/pages/resources/overview/resources-overview.component.html + 4 - - license - licencja - snake-case + + About + O programie - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/components/header/header.component.html + 123 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/components/header/header.component.html + 374 - - markets - rynki - snake-case - - apps/client/src/app/app.component.ts - 84 - + + Blog + Blog - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/app.component.html + 73 - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - - - pricing - cennik - snake-case - apps/client/src/app/app.component.ts - 85 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 183 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html + 189 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html + 167 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog + Dziennik Zmian - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/app.component.html + 77 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features + Funkcje - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/app.component.html + 79 - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/components/header/header.component.html + 361 - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/pages/features/features-page.html + 5 - - privacy-policy - polityka-prywatnosci - snake-case + + Frequently Asked Questions (FAQ) + Często Zadawane Pytania (FAQ) - apps/client/src/app/app.component.ts - 76 + apps/client/src/app/app.component.html + 83 - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/pages/about/overview/about-overview-page.html + 156 + + + License + Licencja - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/app.component.html + 89 - - - register - zarejestruj - snake-case - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/pages/about/license/license-page.html + 4 + + + Pricing + Cennik - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/app.component.html + 99 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/header/header.component.html + 105 - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/header/header.component.html + 313 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/components/header/header.component.html + 389 - apps/client/src/app/pages/features/features-page.component.ts - 28 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 287 + + + Privacy Policy + Polityka Prywatności - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + apps/client/src/app/app.component.html + 105 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 - - resources - zasoby - snake-case + + Community + Społeczność - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/app.component.html + 130 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 85 - apps/client/src/app/components/header/header.component.ts - 92 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 94 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 98 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 102 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 106 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 118 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/pages/features/features-page.html + 276 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + Ryzyko strat na rynku może być znaczne. Nie jest zalecane inwestowanie pieniędzy, które mogą być potrzebne w krótkim okresie. - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/app.component.html + 221 + + + Alias + Alias - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 - - You are using the Live Demo. - Korzystasz z wersji demonstracyjnej. + + Grantee + Beneficjent - apps/client/src/app/app.component.html - 12 + apps/client/src/app/components/access-table/access-table.component.html + 11 - - Create Account - Utwórz Konto + + Type + Typ - apps/client/src/app/app.component.html - 13 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - apps/client/src/app/pages/register/register-page.html - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 101 + libs/ui/src/lib/activities-table/activities-table.component.html + 161 - - Personal Finance - Finanse Osobiste + + Details + Szczegóły - apps/client/src/app/app.component.html - 57 + apps/client/src/app/components/access-table/access-table.component.html + 33 - - Markets - Rynki + + Revoke + Cofnij - apps/client/src/app/app.component.html - 61 + apps/client/src/app/components/access-table/access-table.component.html + 75 + + + Do you really want to revoke this granted access? + Czy na pewno chcesz cofnąć przyznany dostęp? - apps/client/src/app/components/header/header.component.html - 394 + apps/client/src/app/components/access-table/access-table.component.ts + 79 + + + Cash Balance + Saldo Gotówkowe - apps/client/src/app/components/home-market/home-market.html - 2 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 47 - apps/client/src/app/pages/resources/markets/resources-markets.component.html - 2 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - - - Resources - Zasoby - apps/client/src/app/app.component.html - 64 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity + Kapitał własny - apps/client/src/app/components/header/header.component.html - 82 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 58 + + + Activities + Aktywności - apps/client/src/app/components/header/header.component.html - 287 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 - apps/client/src/app/pages/resources/overview/resources-overview.component.html - 4 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 92 - - - About - O programie - apps/client/src/app/app.component.html - 70 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/components/header/header.component.html - 117 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 205 - apps/client/src/app/components/header/header.component.html - 360 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 45 - - - Blog - Blog - apps/client/src/app/app.component.html - 73 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 224 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 184 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 184 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Platform + Platforma - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 184 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 67 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 196 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Transfer Cash Balance + Transfer Salda Gotówkowego - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Name + Nazwa - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 89 - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 287 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 253 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 22 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 46 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 22 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 139 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + libs/ui/src/lib/activities-table/activities-table.component.html + 138 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html - 167 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 16 - apps/client/src/app/pages/blog/blog-page.html - 5 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 - - Changelog - Dziennik Zmian - - apps/client/src/app/app.component.html - 77 - + + Total + Suma - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 - - Features - Funkcje + + Currency + Waluta - apps/client/src/app/app.component.html - 79 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/components/header/header.component.html - 347 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 185 - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 294 - - - Frequently Asked Questions (FAQ) - Często Zadawane Pytania (FAQ) - apps/client/src/app/app.component.html - 83 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 46 - apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - - - License - Licencja - apps/client/src/app/app.component.html - 89 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 145 - apps/client/src/app/pages/about/license/license-page.html - 4 + libs/ui/src/lib/activities-table/activities-table.component.html + 276 - - Pricing - Cennik - - apps/client/src/app/app.component.html - 99 - + + Value + Wartość - apps/client/src/app/components/header/header.component.html - 99 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/components/header/header.component.html - 299 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/components/header/header.component.html - 375 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 287 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 205 - - - Privacy Policy - Polityka Prywatności - apps/client/src/app/app.component.html - 105 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 208 - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 211 - - - Community - Społeczność - apps/client/src/app/app.component.html - 130 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 85 + libs/ui/src/lib/activities-table/activities-table.component.html + 257 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + libs/ui/src/lib/activities-table/activities-table.component.html + 293 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 25 - apps/client/src/app/components/user-account-settings/user-account-settings.html + libs/ui/src/lib/top-holdings/top-holdings.component.html 102 + + + Edit + Edytuj - apps/client/src/app/components/user-account-settings/user-account-settings.html - 106 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 268 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 67 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + libs/ui/src/lib/activities-table/activities-table.component.html + 430 + + + Delete + Usuń - apps/client/src/app/pages/features/features-page.html - 276 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 289 - - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - Ryzyko strat na rynku może być znaczne. Nie jest zalecane inwestowanie pieniędzy, które mogą być potrzebne w krótkim okresie. - - apps/client/src/app/app.component.html - 221 - - - - Alias - Alias - apps/client/src/app/components/access-table/access-table.component.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 290 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - - - Grantee - Beneficjent - apps/client/src/app/components/access-table/access-table.component.html - 11 + apps/client/src/app/components/admin-overview/admin-overview.html + 129 - - - Type - Typ - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 85 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 78 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 15 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 libs/ui/src/lib/activities-table/activities-table.component.html - 161 + 457 - - - Details - Szczegóły - apps/client/src/app/components/access-table/access-table.component.html - 33 + libs/ui/src/lib/benchmark/benchmark.component.html + 169 - - Revoke - Cofnij + + Do you really want to delete this account? + Czy na pewno chcesz usunąć to konto? - apps/client/src/app/components/access-table/access-table.component.html - 75 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 107 - - Do you really want to revoke this granted access? - Czy na pewno chcesz cofnąć przyznany dostęp? + + Asset Profile + Profil Aktywów - apps/client/src/app/components/access-table/access-table.component.ts - 79 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 - - Cash Balance - Saldo Gotówkowe + + Historical Market Data + Historyczne Dane Rynkowe - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 47 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 136 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 85 + + + Symbol + Symbol - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 46 - - - Equity - Kapitał własny - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 75 - - - Activities - Aktywności - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 63 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 153 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 92 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 39 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 119 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 308 + + + Data Source + Źródło Danych - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 205 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 55 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 106 - apps/client/src/app/components/admin-users/admin-users.html - 135 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 163 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 155 + + + Attempts + Próby - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 83 + + + Created + Utworzono - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 92 - - Platform - Platforma + + Finished + Zakończono - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 67 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 101 + + + Status + Status - apps/client/src/app/components/accounts-table/accounts-table.component.html - 86 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 110 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 - - Transfer Cash Balance - Transfer Salda Gotówkowego + + Delete Jobs + Usuń Zadania - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 151 + + + View Data + Zobacz Dane - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 166 - - Name - Nazwa + + View Stacktrace + Wyświetl Stos Wywołań - apps/client/src/app/components/accounts-table/accounts-table.component.html - 43 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 173 + + + Delete Job + Usuń Zadanie - apps/client/src/app/components/admin-market-data/admin-market-data.html - 89 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 180 + + + Details for + Szczegóły dla - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 287 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 2 + + + Date + Data - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 161 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 15 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + libs/ui/src/lib/activities-table/activities-table.component.html + 170 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 6 + + + Market Price + Cena Rynkowa - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 15 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 133 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 109 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 - + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 26 + + + + Cancel + Anuluj - libs/ui/src/lib/activities-table/activities-table.component.html - 138 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 146 - libs/ui/src/lib/benchmark/benchmark.component.html - 4 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 544 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 56 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 16 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 38 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 88 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - - - Total - Suma - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 15 - - - Currency - Waluta - apps/client/src/app/components/accounts-table/accounts-table.component.html + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 + + + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 65 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 338 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 294 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 48 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html 46 + + + Save + Zapisz - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 551 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 63 - libs/ui/src/lib/activities-table/activities-table.component.html - 276 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 45 - - - Value - Wartość - apps/client/src/app/components/accounts-table/accounts-table.component.html - 171 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 206 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 22 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 53 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 135 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 345 - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 48 + + + Currencies + Waluty - libs/ui/src/lib/activities-table/activities-table.component.html - 257 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 86 + + + ETFs without Countries + ETF-y bez Krajów - libs/ui/src/lib/activities-table/activities-table.component.html - 293 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 91 + + + ETFs without Sectors + ETF-y bez Sektorów - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 96 + + + Do you really want to delete this asset profile? + Czy na pewno chcesz usunąć ten profil aktywów? - libs/ui/src/lib/top-holdings/top-holdings.component.html - 25 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Filter by... + Filtruj według... - libs/ui/src/lib/top-holdings/top-holdings.component.html - 102 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 330 - - Edit - Edytuj + + Asset Class + Klasa Aktywów - apps/client/src/app/components/accounts-table/accounts-table.component.html - 278 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 115 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 268 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 235 - libs/ui/src/lib/activities-table/activities-table.component.html - 430 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 290 - - - Delete - Usuń - apps/client/src/app/components/accounts-table/accounts-table.component.html - 289 + libs/ui/src/lib/assistant/assistant.html + 205 + + + Asset Sub Class + Podklasa Aktywów apps/client/src/app/components/admin-market-data/admin-market-data.html - 290 + 124 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 223 - apps/client/src/app/components/admin-overview/admin-overview.html - 129 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 317 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 244 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 + + + First Activity + Pierwsza Aktywność - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 148 - libs/ui/src/lib/activities-table/activities-table.component.html - 457 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 196 - libs/ui/src/lib/benchmark/benchmark.component.html - 155 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 212 - - - Do you really want to delete this account? - Czy na pewno chcesz usunąć to konto? - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 107 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 - - Asset Profile - Profil Aktywów + + Activities Count + Liczba Aktywności - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 157 - - Historical Market Data - Historyczne Dane Rynkowe + + Historical Data + Dane Historyczne - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 166 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 85 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 44 - - Symbol - Symbol - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 46 - + + Sectors Count + Liczba Sektorów apps/client/src/app/components/admin-market-data/admin-market-data.html - 75 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 153 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 39 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 175 - - Data Source - Źródło Danych - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 - + + Countries Count + Liczba Krajów apps/client/src/app/components/admin-market-data/admin-market-data.html - 106 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 163 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 184 - - Attempts - Próby + + Gather Profile Data + Zbierz Dane Profilu - apps/client/src/app/components/admin-jobs/admin-jobs.html - 83 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 235 - - - Created - Utworzono - apps/client/src/app/components/admin-jobs/admin-jobs.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 44 - - Finished - Zakończono + + Oops! Could not parse historical data. + Ups! Nie udało się sparsować danych historycznych. - apps/client/src/app/components/admin-jobs/admin-jobs.html - 101 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 - - Status - Status + + Refresh + Odśwież - apps/client/src/app/components/admin-jobs/admin-jobs.html - 110 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 17 - - Delete Jobs - Usuń Zadania + + Import + Importuj - apps/client/src/app/components/admin-jobs/admin-jobs.html - 151 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - - - View Data - Zobacz Dane - apps/client/src/app/components/admin-jobs/admin-jobs.html - 166 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 - - - View Stacktrace - Wyświetl Stos Wywołań - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 71 - - Delete Job - Usuń Zadanie + + Sector + Sektor - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 240 - - - Details for - Szczegóły dla - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 2 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 261 - - Date - Data + + Country + Kraj - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 251 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/components/admin-users/admin-users.html + 77 - libs/ui/src/lib/activities-table/activities-table.component.html - 170 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 271 + + + Sectors + Sektory - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 6 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 257 - - - Market Price - Cena Rynkowa - apps/client/src/app/components/admin-market-data/admin-market-data.html - 133 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 484 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 277 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 26 + apps/client/src/app/pages/public/public-page.html + 106 - - Cancel - Anuluj + + Countries + Kraje apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 146 + 267 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 544 + 495 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 56 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 289 + + + Benchmark + Benchmark - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Symbol Mapping + Mapowanie Symboli - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 + + + Scraper Configuration + Konfiguracja Scrapera - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 377 + + + Note + Notatka - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 520 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 65 + 78 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 48 + 275 + + + Add Asset Profile + Dodaj Profil Aktywa - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 - - Save - Zapisz + + Search + Szukaj - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 551 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Dodaj Ręcznie apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 63 + 19 + + + Name, symbol or ISIN + Nazwa, symbol lub ISIN - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 32 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 29 apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 22 + 10 - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 135 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + Do you really want to delete this coupon? + Czy naprawdę chcesz usunąć ten kupon? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 142 + + + Do you really want to delete this system message? + Czy naprawdę chcesz usunąć tę wiadomość systemową? - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + Do you really want to flush the cache? + Czy naprawdę chcesz wyczyścić pamięć podręczną? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 179 - - Currencies - Waluty + + Please set your system message: + Proszę ustawić swoją wiadomość systemową: - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 86 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 199 - - ETFs without Countries - ETF-y bez Krajów + + Version + Wersja - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - ETFs without Sectors - ETF-y bez Sektorów + + User Count + Liczba Użytkowników - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 - - Do you really want to delete this asset profile? - Czy na pewno chcesz usunąć ten profil aktywów? + + Activity Count + Liczba Aktywności - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 - - Filter by... - Filtruj według... + + per User + na Użytkownika - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 330 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 - - Asset Class - Klasa Aktywów + + Add Currency + Dodaj Walutę - apps/client/src/app/components/admin-market-data/admin-market-data.html - 115 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 22 + + + User Signup + Rejestracja Użytkownika - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 214 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Read-only Mode + Tryb Tylko do Odczytu - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 304 + apps/client/src/app/components/admin-overview/admin-overview.html + 48 + + + System Message + Wiadomość Systemowa - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + apps/client/src/app/components/admin-overview/admin-overview.html + 72 + + + Set Message + Ustaw Wiadomość - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + apps/client/src/app/components/admin-overview/admin-overview.html + 94 + + + Coupons + Kupony - libs/ui/src/lib/assistant/assistant.html - 168 + apps/client/src/app/components/admin-overview/admin-overview.html + 102 - - Asset Sub Class - Podklasa Aktywów + + Add + Dodaj - apps/client/src/app/components/admin-market-data/admin-market-data.html - 124 + apps/client/src/app/components/admin-overview/admin-overview.html + 162 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 223 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping + Konserwacja - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 317 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + Flush Cache + Wyczyszczenie pamięci podręcznej - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 186 + + + Add Platform + Dodaj Platformę - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 8 - - First Activity - Pierwsza Aktywność + + Url + Url - apps/client/src/app/components/admin-market-data/admin-market-data.html - 148 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 455 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 507 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 38 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - Activities Count - Liczba Aktywności + + Accounts + Konta - apps/client/src/app/components/admin-market-data/admin-market-data.html - 157 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 52 - - - Historical Data - Dane Historyczne - apps/client/src/app/components/admin-market-data/admin-market-data.html - 166 + apps/client/src/app/components/admin-users/admin-users.html + 114 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + apps/client/src/app/components/header/header.component.html + 58 - - - Sectors Count - Liczba Sektorów - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + apps/client/src/app/components/header/header.component.html + 268 - - - Countries Count - Liczba Krajów - apps/client/src/app/components/admin-market-data/admin-market-data.html - 184 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - - - Gather Profile Data - Zbierz Dane Profilu - apps/client/src/app/components/admin-market-data/admin-market-data.html - 235 + apps/client/src/app/pages/accounts/accounts-page.html + 4 + + + Do you really want to delete this platform? + Czy naprawdę chcesz usunąć tę platformę? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 44 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 87 - - Oops! Could not parse historical data. - Ups! Nie udało się sparsować danych historycznych. + + Update platform + Aktualizuj platformę - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 - - Refresh - Odśwież + + Add platform + Dodaj platformę - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 17 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 - - Import - Importuj + + Platforms + Platformy - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 153 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 195 + + + Tags + Tagi - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 201 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 4 - - - Sector - Sektor - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 240 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 16 + + + Add Tag + Dodaj Tag - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - Country - Kraj + + Do you really want to delete this tag? + Czy naprawdę chcesz usunąć ten tag? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 251 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 85 + + + Update tag + Aktualizuj tag - apps/client/src/app/components/admin-users/admin-users.html - 77 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Dodaj tag - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 - - Sectors - Sektory + + Do you really want to delete this user? + Czy na pewno chcesz usunąć tego użytkownika? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 257 + apps/client/src/app/components/admin-users/admin-users.component.ts + 142 + + + User + Użytkownik - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 484 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Registration + Rejestracja - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + apps/client/src/app/components/admin-users/admin-users.html + 97 + + + Engagement per Day + Zaangażowanie na Dzień - apps/client/src/app/pages/public/public-page.html - 106 + apps/client/src/app/components/admin-users/admin-users.html + 157 - - Countries - Kraje + + Last Request + Ostatnie Żądanie - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + apps/client/src/app/components/admin-users/admin-users.html + 202 + + + Impersonate User + Wciel się w Użytkownika - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 495 + apps/client/src/app/components/admin-users/admin-users.html + 239 + + + Delete User + Usuń Użytkownika - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + apps/client/src/app/components/admin-users/admin-users.html + 260 - - Benchmark - Benchmark + + Performance + Wyniki - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 + + + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 - - Symbol Mapping - Mapowanie Symboli + + Compare with... + Porównaj z... - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 352 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 - - Scraper Configuration - Konfiguracja Scrapera + + Manage Benchmarks + Zarządzanie Benchmarkami - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 377 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 - - Note - Notatka + + Portfolio + Portfel - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 520 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 120 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + libs/common/src/lib/routes/routes.ts + 151 - - Add Asset Profile - Dodaj Profil Aktywa + + Benchmark + Poziom Odniesienia (Benchmark) - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 132 - - Search - Szukaj + + Current Market Mood + Obecny Nastrój Rynkowy - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 - - Add Manually - Dodaj Ręcznie + + Overview + Przegląd - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/header/header.component.html + 30 - - - Name, symbol or ISIN - Nazwa, symbol lub ISIN - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + apps/client/src/app/components/header/header.component.html + 248 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 29 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 + + + Portfolio + Portfel - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 10 + apps/client/src/app/components/header/header.component.html + 44 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + apps/client/src/app/components/header/header.component.html + 258 - - Do you really want to delete this coupon? - Czy naprawdę chcesz usunąć ten kupon? + + Admin Control + Nadzór Administratora - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + apps/client/src/app/components/header/header.component.html + 74 - - - Do you really want to delete this system message? - Czy naprawdę chcesz usunąć tę wiadomość systemową? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/components/header/header.component.html + 289 - - Do you really want to flush the cache? - Czy naprawdę chcesz wyczyścić pamięć podręczną? + + Me + Ja - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + apps/client/src/app/components/header/header.component.html + 213 - - Please set your system message: - Proszę ustawić swoją wiadomość systemową: + + User + Użytkownik - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 31 - - - Version - Wersja - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/components/header/header.component.html + 231 - - User Count - Liczba Użytkowników + + My Ghostfolio + Moje Ghostfolio - apps/client/src/app/components/admin-overview/admin-overview.html - 13 + apps/client/src/app/components/header/header.component.html + 277 - - Activity Count - Liczba Aktywności + + About Ghostfolio + O Ghostfolio - apps/client/src/app/components/admin-overview/admin-overview.html - 19 + apps/client/src/app/components/header/header.component.html + 326 - - - per User - na Użytkownika - apps/client/src/app/components/admin-overview/admin-overview.html - 28 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 - - Add Currency - Dodaj Walutę + + Sign in + Zaloguj się - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 22 + apps/client/src/app/components/header/header.component.html + 422 - - - User Signup - Rejestracja Użytkownika - apps/client/src/app/components/admin-overview/admin-overview.html - 34 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 - - Read-only Mode - Tryb Tylko do Odczytu + + Get started + Rozpocznij - apps/client/src/app/components/admin-overview/admin-overview.html - 48 + apps/client/src/app/components/header/header.component.html + 432 - - System Message - Wiadomość Systemowa + + Sign in + Zaloguj się - apps/client/src/app/components/admin-overview/admin-overview.html - 72 + apps/client/src/app/components/header/header.component.ts + 237 - - - Set Message - Ustaw Wiadomość - apps/client/src/app/components/admin-overview/admin-overview.html - 94 + libs/common/src/lib/routes/routes.ts + 81 - - - Coupons - Kupony - apps/client/src/app/components/admin-overview/admin-overview.html - 102 + libs/common/src/lib/routes/routes.ts + 157 - - Add - Dodaj - - apps/client/src/app/components/admin-overview/admin-overview.html - 162 - + + Oops! Incorrect Security Token. + Ups! Nieprawidłowy token bezpieczeństwa. - libs/ui/src/lib/account-balances/account-balances.component.html - 93 + apps/client/src/app/components/header/header.component.ts + 252 - - - Housekeeping - Konserwacja - apps/client/src/app/components/admin-overview/admin-overview.html - 170 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 - - - Flush Cache - Wyczyszczenie pamięci podręcznej - apps/client/src/app/components/admin-overview/admin-overview.html - 174 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 - - Add Platform - Dodaj Platformę + + Manage Activities + Zarządzaj Aktywnościami - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + apps/client/src/app/components/home-holdings/home-holdings.html + 62 - - Url - Url - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 455 - + + Fear + Zagrożenie - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 507 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + apps/client/src/app/components/markets/markets.component.ts + 49 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 25 + libs/ui/src/lib/i18n.ts + 102 - - Accounts - Konta - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 - + + Greed + Zachłanność - apps/client/src/app/components/admin-users/admin-users.html - 114 + apps/client/src/app/components/home-market/home-market.component.ts + 29 - apps/client/src/app/components/header/header.component.html - 54 + apps/client/src/app/components/markets/markets.component.ts + 50 - apps/client/src/app/components/header/header.component.html - 259 + libs/ui/src/lib/i18n.ts + 103 + + + Last Days + Ostatnie Dni - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + apps/client/src/app/components/home-market/home-market.html + 7 - apps/client/src/app/pages/accounts/accounts-page.html - 4 + apps/client/src/app/components/markets/markets.html + 17 - - Do you really want to delete this platform? - Czy naprawdę chcesz usunąć tę platformę? + + Welcome to Ghostfolio + Witaj w Ghostfolio - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 87 + apps/client/src/app/components/home-overview/home-overview.html + 7 - - Update platform - Aktualizuj platformę + + Ready to take control of your personal finances? + Jesteś gotów przejąć kontrolę nad swoimi finansami osobistymi? - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + apps/client/src/app/components/home-overview/home-overview.html 8 - - Add platform - Dodaj platformę + + Setup your accounts + Skonfiguruj swoje konta - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 10 + apps/client/src/app/components/home-overview/home-overview.html + 15 - - Platforms - Platformy + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Uzyskaj kompleksowy przegląd finansowy, poprzez dodanie swoich rachunków bankowych i maklerskich. - apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + apps/client/src/app/components/home-overview/home-overview.html + 17 - - Tags - Tagi + + Capture your activities + Rejestruj swoje działania - apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + apps/client/src/app/components/home-overview/home-overview.html + 24 + + + Record your investment activities to keep your portfolio up to date. + Dokumentuj swoje działania inwestycyjne, aby zapewnić aktualność portfela. - libs/ui/src/lib/tags-selector/tags-selector.component.html - 4 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Monitoruj i analizuj swój portfel - libs/ui/src/lib/tags-selector/tags-selector.component.html - 16 + apps/client/src/app/components/home-overview/home-overview.html + 33 - - Add Tag - Dodaj Tag + + Track your progress in real-time with comprehensive analysis and insights. + Śledź swój postęp w czasie rzeczywistym dzięki kompleksowym analizom i obserwacjom. - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/components/home-overview/home-overview.html + 35 - - Do you really want to delete this tag? - Czy naprawdę chcesz usunąć ten tag? + + Setup accounts + Konfiguracja kont - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/home-overview/home-overview.html + 48 - - Update tag - Aktualizuj tag + + Add activity + Dodaj działalność - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + apps/client/src/app/components/home-overview/home-overview.html + 56 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 8 - - Add tag - Dodaj tag + + Summary + Podsumowanie - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/components/home-summary/home-summary.html + 2 - - Do you really want to delete this user? - Czy na pewno chcesz usunąć tego użytkownika? + + Total Amount + Całkowita Kwota - apps/client/src/app/components/admin-users/admin-users.component.ts - 142 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 - - User - Użytkownik + + Savings Rate + Stopa Oszczędności - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 200 - - Registration - Rejestracja + + Security Token + Token Bezpieczeństwa - apps/client/src/app/components/admin-users/admin-users.html - 97 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 - - - Engagement per Day - Zaangażowanie na Dzień - apps/client/src/app/components/admin-users/admin-users.html - 157 + apps/client/src/app/components/user-account-access/user-account-access.html + 3 - - - Last Request - Ostatnie Żądanie - apps/client/src/app/components/admin-users/admin-users.html - 202 + apps/client/src/app/components/user-account-access/user-account-access.html + 15 - - - Impersonate User - Wciel się w Użytkownika - apps/client/src/app/components/admin-users/admin-users.html - 239 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - - Delete User - Usuń Użytkownika - apps/client/src/app/components/admin-users/admin-users.html - 260 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 64 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 72 - - Performance - Wyniki + + or + lub - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 - - - Compare with... - Porównaj z... - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 18 + apps/client/src/app/pages/landing/landing-page.html + 47 - - - Manage Benchmarks - Zarządzanie Benchmarkami - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 35 + apps/client/src/app/pages/landing/landing-page.html + 450 - - - Portfolio - Portfel - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/register/register-page.html + 30 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + apps/client/src/app/pages/webauthn/webauthn-page.html + 30 - - Benchmark - Poziom Odniesienia (Benchmark) + + Sign in with Internet Identity + Zaloguj się przy użyciu Tożsamości Internetowej (Internet Identity) - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 - - Current Market Mood - Obecny Nastrój Rynkowy + + Sign in with Google + Zaloguj się przez Google - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 - - Overview - Przegląd + + Stay signed in + Pozostań zalogowany - apps/client/src/app/components/header/header.component.html - 28 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 + + + Time in Market + Czas na Rynku - apps/client/src/app/components/header/header.component.html - 241 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 - - Portfolio - Portfel + + Buy + Kupno - apps/client/src/app/components/header/header.component.html - 41 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 + + + Sell + Sprzedaż - apps/client/src/app/components/header/header.component.html - 251 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 - - Admin Control - Nadzór Administratora + + Investment + Inwestycja - apps/client/src/app/components/header/header.component.html - 68 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 165 - apps/client/src/app/components/header/header.component.html - 275 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 - - Me - Ja + + Absolute Gross Performance + Bezwzględne Osiągi Brutto - apps/client/src/app/components/header/header.component.html - 207 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 - - User - Użytkownik + + Fees + Opłaty - apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 202 - apps/client/src/app/components/header/header.component.html - 225 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 84 - - - My Ghostfolio - Moje Ghostfolio - apps/client/src/app/components/header/header.component.html - 266 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 213 - - About Ghostfolio - O Ghostfolio - - apps/client/src/app/components/header/header.component.html - 312 - + + Absolute Net Performance + Bezwzględne Osiągi Netto - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 102 - - Sign in - Zaloguj się + + Net Performance + Osiągi Netto - apps/client/src/app/components/header/header.component.html - 408 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 117 + + + Total Assets + Suma Aktywów - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 143 - - Get started - Rozpocznij + + Valuables + Kosztowności - apps/client/src/app/components/header/header.component.html - 418 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 156 - - Sign in - Zaloguj się + + Emergency Fund + Fundusz Rezerwowy - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 168 - apps/client/src/app/components/header/header.component.ts - 231 + apps/client/src/app/pages/features/features-page.html + 89 - - - Oops! Incorrect Security Token. - Ups! Nieprawidłowy token bezpieczeństwa. - apps/client/src/app/components/header/header.component.ts - 246 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 69 + + + Cash + Gotówka - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 159 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 202 - - Manage Activities - Zarządzaj Aktywnościami + + Assets + Aktywa - apps/client/src/app/components/home-holdings/home-holdings.html - 62 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 215 - - Fear - Zagrożenie + + Buying Power + Siła Nabywcza - apps/client/src/app/components/home-market/home-market.component.ts - 28 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 228 + + + Excluded from Analysis + Wykluczone z Analizy - libs/ui/src/lib/i18n.ts - 102 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 240 - - Greed - Zachłanność + + Liabilities + Pasywa (Zobowiązania Finansowe) - apps/client/src/app/components/home-market/home-market.component.ts - 29 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 255 - libs/ui/src/lib/i18n.ts - 103 + apps/client/src/app/pages/features/features-page.html + 102 - - Last Days - Ostatnie Dni + + Net Worth + Wartość Netto - apps/client/src/app/components/home-market/home-market.html - 7 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 273 - - Welcome to Ghostfolio - Witaj w Ghostfolio + + Annualized Performance + Osiągi w Ujęciu Rocznym - apps/client/src/app/components/home-overview/home-overview.html - 7 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 285 - - Ready to take control of your personal finances? - Jesteś gotów przejąć kontrolę nad swoimi finansami osobistymi? + + Interest + Odsetki - apps/client/src/app/components/home-overview/home-overview.html - 8 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 - - Setup your accounts - Skonfiguruj swoje konta + + Dividend + Dywidenda - apps/client/src/app/components/home-overview/home-overview.html - 15 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 180 - - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Uzyskaj kompleksowy przegląd finansowy, poprzez dodanie swoich rachunków bankowych i maklerskich. - apps/client/src/app/components/home-overview/home-overview.html - 17 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 319 + + + apps/client/src/app/pages/features/features-page.html + 63 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 202 - - Capture your activities - Rejestruj swoje działania + + Please set the amount of your emergency fund. + Wprowadź wysokość funduszu rezerwowego: - apps/client/src/app/components/home-overview/home-overview.html - 24 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 64 - - Record your investment activities to keep your portfolio up to date. - Dokumentuj swoje działania inwestycyjne, aby zapewnić aktualność portfela. + + Change + Zmień - apps/client/src/app/components/home-overview/home-overview.html - 26 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 - - Monitor and analyze your portfolio - Monitoruj i analizuj swój portfel + + Average Unit Price + Średnia Cena Jednostkowa - apps/client/src/app/components/home-overview/home-overview.html - 33 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 98 - - Track your progress in real-time with comprehensive analysis and insights. - Śledź swój postęp w czasie rzeczywistym dzięki kompleksowym analizom i obserwacjom. + + Minimum Price + Cena Minimalna - apps/client/src/app/components/home-overview/home-overview.html - 35 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 125 - - Setup accounts - Konfiguracja kont + + Maximum Price + Cena Maksymalna - apps/client/src/app/components/home-overview/home-overview.html - 44 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 141 - - Add activity - Dodaj działalność + + Quantity + Ilość - apps/client/src/app/components/home-overview/home-overview.html - 52 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 8 + 189 - - - Summary - Podsumowanie - apps/client/src/app/components/home-summary/home-summary.html - 2 + libs/ui/src/lib/activities-table/activities-table.component.html + 186 - - Total Amount - Całkowita Kwota + + Report Data Glitch + Zgłoś Błąd Danych - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 141 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 423 - - Savings Rate - Stopa Oszczędności + + Are you an ambitious investor who needs the full picture? + Jesteś ambitnym inwestorem, który potrzebuje pełnego obrazu swojej działalności? - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 200 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 14 - - Security Token - Token Bezpieczeństwa + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Przejdź na Ghostfolio Premium już dziś i uzyskaj dostęp do ekskluzywnych funkcji, które wzbogacą Twoje doświadczenie inwestycyjne: - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 11 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 17 - - apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + + + Portfolio Summary + Podsumowanie Portfela + + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 24 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 64 + apps/client/src/app/pages/pricing/pricing-page.html + 43 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 72 + apps/client/src/app/pages/pricing/pricing-page.html + 204 - - or - lub + + Portfolio Allocations + Podział portfela - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 28 - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 31 + apps/client/src/app/pages/features/features-page.html + 161 - apps/client/src/app/pages/landing/landing-page.html + apps/client/src/app/pages/pricing/pricing-page.html 47 - apps/client/src/app/pages/landing/landing-page.html - 450 + apps/client/src/app/pages/pricing/pricing-page.html + 208 + + + Performance Benchmarks + Wskaźniki wydajności - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 97 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 32 - apps/client/src/app/pages/register/register-page.html - 30 + apps/client/src/app/pages/pricing/pricing-page.html + 51 - apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + apps/client/src/app/pages/pricing/pricing-page.html + 212 - - Sign in with Internet Identity - Zaloguj się przy użyciu Tożsamości Internetowej (Internet Identity) + + FIRE Calculator + Kalkulator FIRE - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 42 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 36 - - - Sign in with Google - Zaloguj się przez Google - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 52 + apps/client/src/app/pages/pricing/pricing-page.html + 55 - - - Stay signed in - Pozostań zalogowany - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 61 + apps/client/src/app/pages/pricing/pricing-page.html + 216 - - Time in Market - Czas na Rynku + + Professional Data Provider + Profesjonalne źródło danych - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 3 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 40 - - - Buy - Kupno - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 31 + apps/client/src/app/pages/pricing/pricing-page.html + 236 - - Sell - Sprzedaż + + and more Features... + i więcej Funkcji ... - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 43 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 44 - - - Investment - Inwestycja - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + apps/client/src/app/pages/pricing/pricing-page.html + 71 - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 58 + apps/client/src/app/pages/pricing/pricing-page.html + 260 - - Absolute Gross Performance - Bezwzględne Osiągi Brutto + + Get the tools to effectively manage your finances and refine your personal investment strategy. + Uzyskaj narzędzia do skutecznego zarządzania swoimi finansami i udoskonal swoją osobistą strategię inwestycyjną. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 70 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 47 - - Fees - Opłaty + + Skip + Pomiń - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 84 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 98 + + + Upgrade Plan + Ulepsz Plan - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 213 + apps/client/src/app/components/header/header.component.html + 193 - - - Absolute Net Performance - Bezwzględne Osiągi Netto - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 102 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 70 - - - Net Performance - Osiągi Netto - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 117 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 20 - - - Total Assets - Suma Aktywów - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 143 + apps/client/src/app/pages/pricing/pricing-page.html + 298 - - Valuables - Kosztowności + + Today + Dziś - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 156 + apps/client/src/app/components/toggle/toggle.component.ts + 22 - - - Emergency Fund - Fundusz Rezerwowy - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 168 + libs/ui/src/lib/assistant/assistant.component.ts + 340 + + + YTD + Liczony od początku roku (year-to-date) - apps/client/src/app/pages/features/features-page.html - 89 + apps/client/src/app/components/toggle/toggle.component.ts + 23 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 69 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Cash - Gotówka + + 1Y + 1 rok - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 202 + apps/client/src/app/components/toggle/toggle.component.ts + 24 - - - Assets - Aktywa - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 215 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Buying Power - Siła Nabywcza + + 5Y + 5 lat - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 228 + apps/client/src/app/components/toggle/toggle.component.ts + 25 - - - Excluded from Analysis - Wykluczone z Analizy - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 240 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Liabilities - Pasywa (Zobowiązania Finansowe) + + Max + Maksimum - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 255 + apps/client/src/app/components/toggle/toggle.component.ts + 26 - apps/client/src/app/pages/features/features-page.html - 102 + libs/ui/src/lib/assistant/assistant.component.ts + 393 - - Net Worth - Wartość Netto + + Grant access + Przyznaj dostęp - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 273 - - - - Annualized Performance - Osiągi w Ujęciu Rocznym - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 285 - - - - Interest - Odsetki - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 - - - - Dividend - Dywidenda - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 - - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 319 - - - apps/client/src/app/pages/features/features-page.html - 63 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 - - - - Please set the amount of your emergency fund. - Wprowadź wysokość funduszu rezerwowego: - - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 64 - - - - Change - Zmień - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 119 - - - - Average Unit Price - Średnia Cena Jednostkowa - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 - - - - Minimum Price - Cena Minimalna - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 - - - - Maximum Price - Cena Maksymalna - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 - - - - Quantity - Ilość - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 186 - - - - Report Data Glitch - Zgłoś Błąd Danych - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 - - - - Are you an ambitious investor who needs the full picture? - Jesteś ambitnym inwestorem, który potrzebuje pełnego obrazu swojej działalności? - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 14 - - - - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Przejdź na Ghostfolio Premium już dziś i uzyskaj dostęp do ekskluzywnych funkcji, które wzbogacą Twoje doświadczenie inwestycyjne: - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 17 - - - - Portfolio Summary - Podsumowanie Portfela - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 24 - - - apps/client/src/app/pages/pricing/pricing-page.html - 57 - - - apps/client/src/app/pages/pricing/pricing-page.html - 218 - - - - Portfolio Allocations - Podział portfela - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 28 - - - apps/client/src/app/pages/features/features-page.html - 161 - - - apps/client/src/app/pages/pricing/pricing-page.html - 61 - - - apps/client/src/app/pages/pricing/pricing-page.html - 222 - - - - Performance Benchmarks - Wskaźniki wydajności - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 32 - - - apps/client/src/app/pages/pricing/pricing-page.html - 65 - - - apps/client/src/app/pages/pricing/pricing-page.html - 226 - - - - FIRE Calculator - Kalkulator FIRE - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 36 - - - apps/client/src/app/pages/pricing/pricing-page.html - 69 - - - apps/client/src/app/pages/pricing/pricing-page.html - 230 - - - - Professional Data Provider - Profesjonalne źródło danych - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 40 - - - apps/client/src/app/pages/pricing/pricing-page.html - 250 - - - - and more Features... - i więcej Funkcji ... - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 44 - - - apps/client/src/app/pages/pricing/pricing-page.html - 85 - - - apps/client/src/app/pages/pricing/pricing-page.html - 274 - - - - Get the tools to effectively manage your finances and refine your personal investment strategy. - Uzyskaj narzędzia do skutecznego zarządzania swoimi finansami i udoskonal swoją osobistą strategię inwestycyjną. - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 47 - - - - Skip - Pomiń - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 59 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 98 - - - - Upgrade Plan - Ulepsz Plan - - apps/client/src/app/components/header/header.component.html - 187 - - - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 70 - - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 - - - apps/client/src/app/pages/pricing/pricing-page.html - 312 - - - - Today - Dziś - - apps/client/src/app/components/toggle/toggle.component.ts - 22 - - - libs/ui/src/lib/assistant/assistant.component.ts - 220 - - - - YTD - Liczony od początku roku (year-to-date) - - apps/client/src/app/components/toggle/toggle.component.ts - 23 - - - libs/ui/src/lib/assistant/assistant.component.ts - 230 - - - - 1Y - 1 rok - - apps/client/src/app/components/toggle/toggle.component.ts - 24 - - - libs/ui/src/lib/assistant/assistant.component.ts - 234 - - - - 5Y - 5 lat - - apps/client/src/app/components/toggle/toggle.component.ts - 25 - - - libs/ui/src/lib/assistant/assistant.component.ts - 256 - - - - Max - Maksimum - - apps/client/src/app/components/toggle/toggle.component.ts - 26 - - - libs/ui/src/lib/assistant/assistant.component.ts - 259 - - - - Grant access - Przyznaj dostęp - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 @@ -3027,15 +2759,15 @@ Przyznano dostęp apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 Please enter your coupon code. - Wpisz kod kuponu: + Wpisz kod kuponu: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -3043,7 +2775,7 @@ Nie udało się zrealizować kodu kuponu apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -3051,7 +2783,7 @@ Kupon został zrealizowany apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -3059,7 +2791,7 @@ Odśwież apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -3071,7 +2803,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -3275,7 +3007,7 @@ Ta funkcja jest obecnie niedostępna. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -3283,11 +3015,11 @@ Spróbuj ponownie później. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3299,7 +3031,7 @@ Ups! Coś poszło nie tak. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3311,11 +3043,11 @@ Okej apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3326,52 +3058,36 @@ About O Ghostfolio - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 Changelog Changelog - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License Licencja - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 Privacy Policy Polityka Prywatności - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -3402,8 +3118,8 @@ Accounts Konta - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -3466,52 +3182,36 @@ Admin Control Panel Administratora - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Market Data Dane Rynkowe - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Settings Ustawienia - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 Users Użytkownicy - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 @@ -3519,31 +3219,27 @@ Przegląd apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -3565,14 +3261,14 @@ Frequently Asked Questions (FAQ) Często zadawane pytania (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Frequently Asked Questions (FAQ) @@ -3594,8 +3290,8 @@ Features Funkcje - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -3726,56 +3422,44 @@ Holdings Inwestycje - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 Summary Podsumowanie - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 Markets Rynki - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -3799,7 +3483,7 @@ Oprogramowanie Open Source do Zarządzania Majątkiem apps/client/src/app/pages/i18n/i18n-page.html - 14 + 97 @@ -3812,7 +3496,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio to zapewniający prywatność, open source'owy panel do zarządzania finansami osobistymi. Przeanalizuj szczegółowo swoją alokację aktywów, określ swoją wartość netto i podejmuj przemyślane decyzje inwestycyjne oparte na danych. + Ghostfolio to zapewniający prywatność, open source’owy panel do zarządzania finansami osobistymi. Przeanalizuj szczegółowo swoją alokację aktywów, określ swoją wartość netto i podejmuj przemyślane decyzje inwestycyjne oparte na danych. apps/client/src/app/pages/landing/landing-page.html 9 @@ -3827,7 +3511,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -3839,7 +3523,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -4198,12 +3882,8 @@ Activities Aktywności - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -4287,7 +3967,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -4303,7 +3983,7 @@ Cena Jednostkowa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4315,7 +3995,7 @@ Opłata apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4387,7 +4067,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -4450,8 +4130,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -4587,7 +4267,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4622,12 +4302,8 @@ Analysis Analiza - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -4785,10 +4461,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Pricing @@ -4797,6 +4469,10 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Pricing Plans @@ -4819,7 +4495,7 @@ Jeżeli wolisz uruchomić Ghostfolio na własnej infrastrukturze, możesz znaleźć kod źródłowy i dalsze instrukcje na naszym GitHubie. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 @@ -4827,7 +4503,7 @@ Dla inwestorów obeznanych technicznie, którzy wolą uruchomić Ghostfolio na własnej infrastrukturze. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -4835,15 +4511,15 @@ Nieograniczona Liczba Transakcji apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -4851,15 +4527,15 @@ Nieograniczona Liczba Rachunków apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -4867,15 +4543,15 @@ Wyniki portfela apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -4883,15 +4559,15 @@ Importowanie i Eksportowanie Danych apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -4899,7 +4575,7 @@ Wsparcie Społeczności apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -4907,7 +4583,7 @@ Samodzielny hosting, aktualizacja ręczna. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -4915,11 +4591,11 @@ Bezpłatnie apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -4927,7 +4603,7 @@ Dla początkujących inwestorów, którzy dopiero zaczynają swoją przygodę z tradingiem. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -4935,11 +4611,11 @@ W pełni zarządzana oferta Ghostfolio w chmurze. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -4947,7 +4623,7 @@ Dla ambitnych inwestorów, którzy potrzebują pełnego obrazu swoich aktywów finansowych. apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -4955,7 +4631,7 @@ Wsparcie przez E-mail i Czat apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -4963,7 +4639,7 @@ Odnów Plan apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4971,7 +4647,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 @@ -4979,7 +4655,7 @@ Płatność jednorazowa, bez automatycznego odnawiania. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -4995,12 +4671,12 @@ Jest bezpłatny. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 Hello, has shared a Portfolio with you! - Witaj, udostępnił Ci Portfel + Witaj, udostępnił Ci Portfel apps/client/src/app/pages/public/public-page.html 4 @@ -5034,8 +4710,8 @@ Registration Rejestracja - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -5066,28 +4742,21 @@ Personal Finance Tools Narzędzia finansów osobistych - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/common/src/lib/routes/routes.ts + 329 - + open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 - + alternatywa-open-source-dla + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 320 - - - Open Source Alternative to - Alternatywa Open Source dla - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + libs/common/src/lib/routes/routes.ts + 324 @@ -5142,2859 +4811,3236 @@ Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. Ghostfolio to oprogramowanie o otwartym kodzie źródłowym (OSS), stanowiące opłacalną alternatywę dla , czyniąc go szczególnie odpowiednim dla osób o ograniczonym budżecie, takich jak osoby dążące do finansowej niezależności i wcześniejszej emerytury (Financial Independence, Retire Early - FIRE). Wykorzystując wspólne wysiłki społeczności programistów i entuzjastów finansów osobistych, Ghostfolio stale zwiększa swoje możliwości, bezpieczeństwo i komfort użytkowania. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Zagłębmy się w szczegółową tabelę porównawczą Ghostfolio vs poniżej, aby dokładnie zrozumieć, jak Ghostfolio pozycjonuje się w stosunku do . Przeanalizujemy różne aspekty, takie jak funkcje, prywatność danych, opłaty i inne, umożliwiając Tobie dokonanie przemyślanego wyboru pod kątem osobistych wymagań. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + + Ghostfolio vs comparison table + Ghostfolio vs - tabela porównawcza + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + + Founded + Rok założenia + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + + Origin + Pochodzenie + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + + Region + Region + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 87 + + + + Available in + Dostępny w następujących językach + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 108 + + + + ✅ Yes + ✅ Tak + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 196 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 235 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 257 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 274 + + + + ❌ No + ❌ Nie + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 203 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 225 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 242 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 264 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 281 + + + + Self-Hosting + Własny Hosting + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 170 + + + + Use anonymously + Korzystaj anonimowo + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + + Free Plan + Plan Darmowy + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + + Notes + Notatki + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 302 + + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Należy pamiętać, że informacje zawarte w tabeli porównawczej Ghostfolio vs są oparte na naszych niezależnych badaniach i analizach. Ta strona internetowa nie jest powiązana z ani żadnym innym produktem wymienionym w porównaniu. Ponieważ krajobraz narzędzi do finansów osobistych ewoluuje, ważne jest, aby weryfikować wszelkie szczegóły lub zmiany bezpośrednio na stronie danego produktu. Informacje wymagają aktualizacji? Pomóż nam utrzymywać dokładne dane na GitHub. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + + Ready to take your investments to the next level? + Jesteś gotów wznieść swoje inwestycje na wyższy poziom? + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Bezproblemowo śledź, analizuj i wizualizuj swój majątek dzięki Ghostfolio. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 328 + + + + Get Started + Rozpocznij + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + + Personal Finance Tools + Narzędzia do Finansów Osobistych + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 351 + + + + Switzerland + Szwajcaria + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 + + + libs/ui/src/lib/i18n.ts + 93 + + + + Global + Globalny + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 + + + libs/ui/src/lib/i18n.ts + 16 + + + + Resources + Zasoby + + libs/common/src/lib/routes/routes.ts + 332 + + + + Guides + Poradniki + + apps/client/src/app/pages/resources/guides/resources-guides.component.html + 4 + + + + Glossary + Słowniczek + + apps/client/src/app/pages/resources/glossary/resources-glossary.component.html + 4 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Zagłębmy się w szczegółową tabelę porównawczą Ghostfolio vs poniżej, aby dokładnie zrozumieć, jak Ghostfolio pozycjonuje się w stosunku do . Przeanalizujemy różne aspekty, takie jak funkcje, prywatność danych, opłaty i inne, umożliwiając Tobie dokonanie przemyślanego wyboru pod kątem osobistych wymagań. + + Membership + Członkostwo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + libs/common/src/lib/routes/routes.ts + 31 - - Ghostfolio vs comparison table - Ghostfolio vs - tabela porównawcza + + Access + Dostęp - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + libs/common/src/lib/routes/routes.ts + 26 - - Founded - Rok założenia + + My Ghostfolio + Moje Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 77 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 34 - - Origin - Pochodzenie + + Oops, authentication has failed. + Ups, uwierzytelnienie nie powiodło się. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 82 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 - - Region - Region + + Try again + Spróbuj ponownie - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 87 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 - - Available in - Dostępny w następujących językach + + Go back to Home Page + Wróć do Strony Głównej - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 108 + apps/client/src/app/pages/webauthn/webauthn-page.html + 33 - - ✅ Yes - ✅ Tak + + Import Activities + Importuj Działalności - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 140 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 157 + libs/ui/src/lib/activities-table/activities-table.component.html + 371 + + + Import Dividends + Importuj Dywidendy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 179 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 196 + libs/ui/src/lib/activities-table/activities-table.component.html + 383 + + + Export Activities + Eksportuj Działalności - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 218 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 235 + libs/ui/src/lib/activities-table/activities-table.component.html + 396 + + + Export Drafts as ICS + Eksportuj Wersje Robocze jako ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 257 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 274 + libs/ui/src/lib/activities-table/activities-table.component.html + 409 - - ❌ No - ❌ Nie + + Draft + Przygotuj Wstępną Wersję - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 147 + libs/ui/src/lib/activities-table/activities-table.component.html + 145 + + + Clone + Sklonuj - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 164 + libs/ui/src/lib/activities-table/activities-table.component.html + 436 + + + Export Draft as ICS + Eksportuj Wersję Roboczą jako ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 186 + libs/ui/src/lib/activities-table/activities-table.component.html + 446 + + + Do you really want to delete this activity? + Czy na pewno chcesz usunąć tę działalność? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 203 + libs/ui/src/lib/activities-table/activities-table.component.ts + 229 + + + Asset Profiles + Profile aktywów - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 225 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 + + + Last All Time High + Ostatni Najwyższy Punkt w Historii - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 242 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + Change from All Time High + Zmiana od Najwyższego Punktu w Historii - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 264 + libs/ui/src/lib/benchmark/benchmark.component.html + 110 + + + from ATH + od ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 281 + libs/ui/src/lib/benchmark/benchmark.component.html + 112 - - Self-Hosting - Własny Hosting + + Market data provided by + Dane rynkowe dostarczone przez - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 170 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 - - Use anonymously - Korzystaj anonimowo + + Savings Rate per Month + Miesięczna stopa oszczędności - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 209 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 - - Free Plan - Plan Darmowy + + Annual Interest Rate + Roczna Stopa Procentowa - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 248 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 - - Notes - Notatki + + Retirement Date + Data przejścia na emeryturę - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 302 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Należy pamiętać, że informacje zawarte w tabeli porównawczej Ghostfolio vs są oparte na naszych niezależnych badaniach i analizach. Ta strona internetowa nie jest powiązana z ani żadnym innym produktem wymienionym w porównaniu. Ponieważ krajobraz narzędzi do finansów osobistych ewoluuje, ważne jest, aby weryfikować wszelkie szczegóły lub zmiany bezpośrednio na stronie danego produktu. Informacje wymagają aktualizacji? Pomóż nam utrzymywać dokładne dane na GitHub. + + Projected Total Amount + Przewidywana Łączna Kwota - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 - - Ready to take your investments to the next level? - Jesteś gotów wznieść swoje inwestycje na wyższy poziom? + + Interest + Udział - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 370 - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Bezproblemowo śledź, analizuj i wizualizuj swój majątek dzięki Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 328 + libs/ui/src/lib/i18n.ts + 38 + + + + Savings + Oszczędności + + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 380 - - Get Started - Rozpocznij + + Allocation + Podział - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - - - Personal Finance Tools - Narzędzia do Finansów Osobistych - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 351 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 40 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 116 - - Switzerland - Szwajcaria + + Show all + Pokaż wszystko - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 + + + Account + Konto libs/ui/src/lib/i18n.ts - 93 + 4 - - Global - Globalny + + Asia-Pacific + Azja-Pacyfik - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class + Rodzaj Aktywów libs/ui/src/lib/i18n.ts - 16 + 6 - - Resources - Zasoby + + Asset Sub Class + Podklasa Aktywów - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/ui/src/lib/i18n.ts + 7 - - Guides - Poradniki + + Core + Główny - apps/client/src/app/pages/resources/guides/resources-guides.component.html - 4 + libs/ui/src/lib/i18n.ts + 10 - - Glossary - Słowniczek + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Przełącz się z łatwością na Ghostfolio Premium lub Ghostfolio Open Source - apps/client/src/app/pages/resources/glossary/resources-glossary.component.html - 4 + libs/ui/src/lib/i18n.ts + 12 - - Membership - Członkostwo + + Switch to Ghostfolio Premium easily + Przełącz się z łatwością na Ghostfolio Premium - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + libs/ui/src/lib/i18n.ts + 13 + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Przełącz się z łatwością na Ghostfolio Open Source lub Ghostfolio Basic - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 14 - - Access - Dostęp + + Emergency Fund + Fundusz Rezerwowy - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + libs/ui/src/lib/i18n.ts + 15 + + + Grant + Dotacja - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 17 - - My Ghostfolio - Moje Ghostfolio + + Higher Risk + Wyższe Ryzyko - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/i18n.ts + 18 - - Oops, authentication has failed. - Ups, uwierzytelnienie nie powiodło się. + + This activity already exists. + Ta działalność już istnieje. - apps/client/src/app/pages/webauthn/webauthn-page.html + libs/ui/src/lib/i18n.ts 19 - - Try again - Spróbuj ponownie + + Japan + Japonia - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/i18n.ts + 86 - - Go back to Home Page - Wróć do Strony Głównej + + Lower Risk + Niższe Ryzyko - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 20 - - Import Activities - Importuj Działalności + + Month + Miesiąc - libs/ui/src/lib/activities-table/activities-table.component.html - 9 + libs/ui/src/lib/i18n.ts + 21 + + + Months + Miesiące - libs/ui/src/lib/activities-table/activities-table.component.html - 371 + libs/ui/src/lib/i18n.ts + 22 - - Import Dividends - Importuj Dywidendy + + Other + Inne - libs/ui/src/lib/activities-table/activities-table.component.html - 29 + libs/ui/src/lib/i18n.ts + 23 - libs/ui/src/lib/activities-table/activities-table.component.html - 383 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 400 - - Export Activities - Eksportuj Działalności - - libs/ui/src/lib/activities-table/activities-table.component.html - 41 - + + Preset + Wstępnie ustawione - libs/ui/src/lib/activities-table/activities-table.component.html - 396 + libs/ui/src/lib/i18n.ts + 25 - - Export Drafts as ICS - Eksportuj Wersje Robocze jako ICS + + Retirement Provision + Świadczenia Emerytalne - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + libs/ui/src/lib/i18n.ts + 26 + + + Satellite + Satelita - libs/ui/src/lib/activities-table/activities-table.component.html - 409 + libs/ui/src/lib/i18n.ts + 27 - - Draft - Przygotuj Wstępną Wersję + + Symbol + Symbol - libs/ui/src/lib/activities-table/activities-table.component.html - 145 + libs/ui/src/lib/i18n.ts + 28 - - Clone - Sklonuj + + Tag + Tag - libs/ui/src/lib/activities-table/activities-table.component.html - 436 + libs/ui/src/lib/i18n.ts + 29 - - Export Draft as ICS - Eksportuj Wersję Roboczą jako ICS + + Year + Rok - libs/ui/src/lib/activities-table/activities-table.component.html - 446 + libs/ui/src/lib/i18n.ts + 30 - - Do you really want to delete this activity? - Czy na pewno chcesz usunąć tę działalność? + + Years + Lata - libs/ui/src/lib/activities-table/activities-table.component.ts - 229 + libs/ui/src/lib/i18n.ts + 31 - - Find holding... - Znajdź portfel akcji... + + Buy + Zakup - libs/ui/src/lib/assistant/assistant.component.ts - 143 + libs/ui/src/lib/i18n.ts + 35 - - No entries... - Brak wpisów... + + Fee + Opłata - libs/ui/src/lib/assistant/assistant.html - 62 + libs/ui/src/lib/i18n.ts + 37 + + + Valuable + Kosztowności - libs/ui/src/lib/assistant/assistant.html - 85 + libs/ui/src/lib/i18n.ts + 39 - - Asset Profiles - Profile aktywów + + Liability + Zobowiązanie - libs/ui/src/lib/assistant/assistant.html - 67 + libs/ui/src/lib/i18n.ts + 40 - - Last All Time High - Ostatni Najwyższy Punkt w Historii + + Sell + Sprzedaj - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + libs/ui/src/lib/i18n.ts + 41 - - Change from All Time High - Zmiana od Najwyższego Punktu w Historii + + Cash + Gotówka - libs/ui/src/lib/benchmark/benchmark.component.html - 96 + libs/ui/src/lib/i18n.ts + 44 - - from ATH - od ATH + + Commodity + Towar - libs/ui/src/lib/benchmark/benchmark.component.html - 98 + libs/ui/src/lib/i18n.ts + 45 - - Market data provided by - Dane rynkowe dostarczone przez + + Equity + Kapitał - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 46 - - Savings Rate per Month - Miesięczna stopa oszczędności + + Fixed Income + Stały Dochód - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 47 - - Annual Interest Rate - Roczna Stopa Procentowa + + Real Estate + Nieruchomość - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 49 - - Retirement Date - Data przejścia na emeryturę + + Bond + Obligacja - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 52 - - Projected Total Amount - Przewidywana Łączna Kwota + + Cryptocurrency + Kryptowaluta - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + libs/ui/src/lib/i18n.ts + 53 - - Interest - Udział + + ETF + ETF - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 370 + libs/ui/src/lib/i18n.ts + 54 + + + Mutual Fund + Fundusz Wzajemny libs/ui/src/lib/i18n.ts - 38 + 55 - - Savings - Oszczędności + + Precious Metal + Metal Szlachetny - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 380 + libs/ui/src/lib/i18n.ts + 56 - - Allocation - Podział + + Private Equity + Prywatny Kapitał - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/i18n.ts + 57 + + + Stock + Akcje - libs/ui/src/lib/top-holdings/top-holdings.component.html - 40 + libs/ui/src/lib/i18n.ts + 58 + + + Africa + Afryka - libs/ui/src/lib/top-holdings/top-holdings.component.html - 116 + libs/ui/src/lib/i18n.ts + 65 - - Show all - Pokaż wszystko + + Asia + Azja - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/i18n.ts + 66 - - Account - Konto + + Europe + Europa libs/ui/src/lib/i18n.ts - 4 + 67 - - Asia-Pacific - Azja-Pacyfik + + North America + Ameryka Północna libs/ui/src/lib/i18n.ts - 5 + 68 - - Asset Class - Rodzaj Aktywów + + Oceania + Oceania libs/ui/src/lib/i18n.ts - 6 + 69 - - Asset Sub Class - Podklasa Aktywów + + South America + Ameryka Południowa libs/ui/src/lib/i18n.ts - 7 + 70 - - Core - Główny + + Extreme Fear + Skrajny Strach libs/ui/src/lib/i18n.ts - 10 + 100 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Przełącz się z łatwością na Ghostfolio Premium lub Ghostfolio Open Source + + Extreme Greed + Skrajna Zachłanność libs/ui/src/lib/i18n.ts - 12 + 101 - - Switch to Ghostfolio Premium easily - Przełącz się z łatwością na Ghostfolio Premium + + Neutral + Neutralny libs/ui/src/lib/i18n.ts - 13 + 104 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Przełącz się z łatwością na Ghostfolio Open Source lub Ghostfolio Basic + + Membership + Członkostwo - libs/ui/src/lib/i18n.ts - 14 + libs/ui/src/lib/membership-card/membership-card.component.html + 37 - - Emergency Fund - Fundusz Rezerwowy + + Valid until + Ważność do - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 74 + + + libs/ui/src/lib/membership-card/membership-card.component.html + 42 - - Grant - Grant + + Time to add your first activity. + Czas dodać Twoją pierwszą działalność. - libs/ui/src/lib/i18n.ts - 17 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Higher Risk - Wyższe Ryzyko + + No data available + Brak danych - libs/ui/src/lib/i18n.ts - 18 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 402 - - - This activity already exists. - Ta działalność już istnieje. - libs/ui/src/lib/i18n.ts - 19 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 415 - - Japan - Japonia + + 50-Day Trend + 50-Dniowy Trend - libs/ui/src/lib/i18n.ts - 86 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 - - Lower Risk - Niższe Ryzyko + + 200-Day Trend + 200-Dniowy Trend - libs/ui/src/lib/i18n.ts - 20 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 - - Month - Miesiąc + + Cash Balances + Salda Gotówkowe - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 - - Months - Miesiące + + Starting from + Począwszy od - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 - - Other - Inne + + year + rok - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 - - Preset - Preset + + Do you really want to delete this account balance? + Czy na pewno chcesz usunąć saldo tego konta? - libs/ui/src/lib/i18n.ts - 25 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 - - Retirement Provision - Świadczenia Emerytalne + + If a translation is missing, kindly support us in extending it here. + Jeżeli brakuje jakiegoś tłumaczenia, uprzejmie prosimy o wsparcie w jego uzupełnieniu tutaj. - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 - - Satellite - Satelita + + The current market price is + Obecna cena rynkowa wynosi - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 - - Symbol - Symbol + + Test + Test - libs/ui/src/lib/i18n.ts - 28 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 - - Tag - Tag + + Date Range + Zakres Dat - libs/ui/src/lib/i18n.ts - 29 + libs/ui/src/lib/assistant/assistant.html + 130 - - Year - Rok + + Permission + Pozwolenie - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - Years - Lata - libs/ui/src/lib/i18n.ts - 31 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - Buy - Zakup + + Restricted view + Ograniczony widok - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Fee - Opłata - libs/ui/src/lib/i18n.ts - 37 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Valuable - Kosztowności + + Oops! Could not grant access. + Ups! Nie udało się przyznać dostępu. - libs/ui/src/lib/i18n.ts - 39 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Liability - Zobowiązanie + + Private + Prywatny - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Sell - Sprzedaj + + Job Queue + Kolejka Zadań - libs/ui/src/lib/i18n.ts - 41 + libs/common/src/lib/routes/routes.ts + 46 - - Cash - Gotówka + + Market data is delayed for + Dane rynkowe są opóźnione o - libs/ui/src/lib/i18n.ts - 44 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Commodity - Towar + + Investment + Inwestycje - libs/ui/src/lib/i18n.ts - 45 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Equity - Kapitał - libs/ui/src/lib/i18n.ts - 46 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - - - Fixed Income - Stały Dochód - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Real Estate - Nieruchomość + + Absolute Asset Performance + Łączny wynik aktywów - libs/ui/src/lib/i18n.ts - 49 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Bond - Obligacja + + Asset Performance + Wyniki aktywów - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Cryptocurrency - Kryptowaluta + + Absolute Currency Performance + Łączny wynik walut - libs/ui/src/lib/i18n.ts - 53 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - ETF - ETF + + Currency Performance + Wynik walut - libs/ui/src/lib/i18n.ts - 54 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Mutual Fund - Fundusz Wzajemny + + Absolute Net Performance + Łączna wartość netto - libs/ui/src/lib/i18n.ts - 55 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - Precious Metal - Metal Szlachetny + + Net Performance + Wynik netto - libs/ui/src/lib/i18n.ts - 56 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - Private Equity - Prywatny Kapitał + + Week to date + Dotychczasowy tydzień - libs/ui/src/lib/i18n.ts - 57 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Stock - Akcje + + WTD + WTD - libs/ui/src/lib/i18n.ts - 58 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Africa - Afryka + + Month to date + Od początku miesiąca - libs/ui/src/lib/i18n.ts - 65 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Asia - Azja + + MTD + MTD - libs/ui/src/lib/i18n.ts - 66 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Europe - Europa + + Year to date + Od początku roku - libs/ui/src/lib/i18n.ts - 67 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - North America - Ameryka Północna + + View + Widok - libs/ui/src/lib/i18n.ts - 68 + apps/client/src/app/components/access-table/access-table.component.html + 23 + + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Oceania - Oceania + + Oops! A data provider is experiencing the hiccups. + Ups! Dostawca danych zmaga się teraz z drobnymi przeszkodami. - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - South America - Ameryka Południowa + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Jeśli przejdziesz na emeryturę dzisiaj, będziesz mógł wypłacić rocznie lub miesięcznie, w oparciu o Twój łączny majątek w wysokości i stopę wypłaty w wysokości 4%. - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Extreme Fear - Skrajny Strach + + Reset Filters + Resetuj Filtry - libs/ui/src/lib/i18n.ts - 100 + libs/ui/src/lib/assistant/assistant.html + 224 - - Extreme Greed - Skrajna Zachłanność + + year + rok - libs/ui/src/lib/i18n.ts - 101 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Neutral - Neutralny + + years + lata - libs/ui/src/lib/i18n.ts - 104 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Membership - Członkostwo + + Apply Filters + Zastosuj Filtry - libs/ui/src/lib/membership-card/membership-card.component.html - 37 + libs/ui/src/lib/assistant/assistant.html + 234 - - Valid until - Ważność do + + Data Gathering + Gromadzenie Danych - apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - libs/ui/src/lib/membership-card/membership-card.component.html - 42 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - Time to add your first activity. - Czas dodać Twoją pierwszą działalność. + + General + Informacje Ogólne - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - No data available - Brak danych + + Cloud + Rozwiązanie w Chmurze - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + libs/common/src/lib/routes/routes.ts + 240 - - 50-Day Trend - 50-Dniowy Trend + + Self-Hosting + Własny Hosting - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - 200-Day Trend - 200-Dniowy Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + libs/common/src/lib/routes/routes.ts + 248 - - Cash Balances - Salda Gotówkowe + + self-hosting + wlasny-hosting + kebab-case - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + libs/common/src/lib/routes/routes.ts + 243 + + + libs/common/src/lib/routes/routes.ts + 246 - - Starting from - Począwszy od + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Ups! Wygląda na to, że wykonujesz zbyt wiele zapytań. Proszę, zwolnij trochę. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 + apps/client/src/app/core/http-response.interceptor.ts + 106 + + + My Account + Moje Konto - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - year - rok + + Active + Antywne - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 + + + Closed + Zamknięte - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Do you really want to delete this account balance? - Czy na pewno chcesz usunąć saldo tego konta? + + Activity + Aktywność - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - If a translation is missing, kindly support us in extending it here. - Jeżeli brakuje jakiegoś tłumaczenia, uprzejmie prosimy o wsparcie w jego uzupełnieniu tutaj. + + Dividend Yield + Dochód z Dywidendy - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - The current market price is - Obecna cena rynkowa wynosi + + Execute Job + Wykonaj Zadanie - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 - - Test - Test + + Priority + Priorytet - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - Date Range - Zakres Dat + + This action is not allowed. + To działanie jest niedozwolone. - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - Permission - Pozwolenie + + Liquidity + Płynność środków finansowych - apps/client/src/app/components/access-table/access-table.component.html - 18 + libs/ui/src/lib/i18n.ts + 48 + + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {działalność} other {działalność}} - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Restricted view - Ograniczony widok + + Buy and sell + Kupno i Sprzedaż - apps/client/src/app/components/access-table/access-table.component.html - 26 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Usuń aktywności - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Oops! Could not grant access. - Ups! Nie udało się przyznać dostępu. + + Internationalization + Internacjonalizacja - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + libs/common/src/lib/routes/routes.ts + 119 - - Private - Prywatny + + Do you really want to close your Ghostfolio account? + Czy na pewno chcesz zamknąć swoje konto Ghostfolio? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Job Queue - Kolejka Zadań + + Danger Zone + Strefa Zagrożenia - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 + + + Close Account + Zamknij Konto - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - Market data is delayed for - Dane rynkowe są opóźnione o + + By ETF Holding + Wg. Holdingu ETF - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Investment - Inwestycje + + Approximation based on the top holdings of each ETF + Przybliżenie oparte na najwyższych aktywach każdego funduszu ETF - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 + + + Join now or check out the example account + Dołącz teraz lub sprawdź przykładowe konto - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 + apps/client/src/app/pages/landing/landing-page.html + 434 + + + Oops! There was an error setting up biometric authentication. + Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Absolute Asset Performance - Łączny wynik aktywów + + Show more + Pokaż więcej - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Asset Performance - Wyniki aktywów + + Benchmarks + Punkty Odniesienia - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - Absolute Currency Performance - Łączny wynik walut + + Delete Profiles + Usuń Profile - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Currency Performance - Wynik walut + + Do you really want to delete these profiles? + Czy na pewno chcesz usunąć te profile? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Absolute Net Performance - Łączna wartość netto + + Oops! Could not delete profiles. + Ups! Nie udało się usunąć profili. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - Net Performance - Wynik netto + + Table + Tabela - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 - - Week to date - Dotychczasowy tydzień + + Chart + Wykres - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - WTD - WTD + + Would you like to refine your personal investment strategy? + Chcesz udoskonalić swoją osobistą strategię inwestycyjną? - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/pages/public/public-page.html + 211 - - Month to date - Od początku miesiąca + + Alternative + Alternatywa - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - MTD - MTD + + App + Aplikacja - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Year to date - Od początku roku + + Budgeting + Budżetowanie - libs/ui/src/lib/assistant/assistant.component.ts - 230 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - View - Widok + + Community + Społeczność - apps/client/src/app/components/access-table/access-table.component.html - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 + + + Family Office + Biuro Rodzinne - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Oops! A data provider is experiencing the hiccups. - Ups! Dostawca danych zmaga się teraz z drobnymi przeszkodami. + + Investor + Inwestor - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Jeśli przejdziesz na emeryturę dzisiaj, będziesz mógł wypłacić rocznie lub miesięcznie, w oparciu o Twój łączny majątek w wysokości i stopę wypłaty w wysokości 4%. + + Open Source + Otwarty Kod Źródłowy - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - Reset Filters - Resetuj Filtry + + Personal Finance + Finanse Osobiste - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - year - rok + + Privacy + Prywatność - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - years - lata + + Software + Oprogramowanie - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Apply Filters - Zastosuj Filtry + + Tool + Narzędzie - libs/ui/src/lib/assistant/assistant.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Data Gathering - Gromadzenie Danych + + User Experience + Doświadczenie Użytkownika - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + Wealth + Majątek - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - General - Informacje Ogólne + + Wealth Management + Zarządzanie Majątkiem - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Cloud - Rozwiązanie w Chmurze + + Australia + Australia - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + libs/ui/src/lib/i18n.ts + 74 + + + Austria + Austria - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 75 - - Self-Hosting - Własny Hosting + + Belgium + Belgia - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 76 + + + Bulgaria + Bułgaria - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 - - self-hosting - self-hosting + + Canada + Kanada - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/ui/src/lib/i18n.ts + 79 - - FAQ - FAQ + + Czech Republic + Czechy - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 80 + + + Finland + Finlandia - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 81 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Ups! Wygląda na to, że wykonujesz zbyt wiele zapytań. Proszę, zwolnij trochę. + + France + Francja - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 82 - - My Account - Moje Konto + + Germany + Niemcy - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 83 - - Active - Antywne + + India + Indie - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 84 - - Closed - Zamknięte + + Italy + Włochy - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + libs/ui/src/lib/i18n.ts + 85 - - Activity - Aktywność + + Netherlands + Holandia - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 87 - - Dividend Yield - Dochód z Dywidendy + + New Zealand + Nowa Zelandia - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 88 - - Execute Job - Wykonaj Zadanie + + Poland + Polska - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 89 - - Priority - Priorytet + + Romania + Rumunia - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 90 - - This action is not allowed. - To działanie jest niedozwolone. + + South Africa + Południowa Afryka + + libs/ui/src/lib/i18n.ts + 92 + + + + Thailand + Tajlandia - apps/client/src/app/core/http-response.interceptor.ts - 64 + libs/ui/src/lib/i18n.ts + 94 - - Liquidity - Płynność środków finansowych + + United States + Stany Zjednoczone libs/ui/src/lib/i18n.ts - 48 + 97 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Error + Błąd - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - Buy and sell - Kupno i Sprzedaż + + Deactivate + Dezaktywuj - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/components/rule/rule.component.html + 72 - - Delete Activities - Usuń aktywności + + Activate + Aktywuj - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/components/rule/rule.component.html + 74 - - Internationalization - Internacjonalizacja + + Inactive + Nieaktywny - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Do you really want to close your Ghostfolio account? - Czy na pewno chcesz zamknąć swoje konto Ghostfolio? + + Cancel + Anuluj - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/ui/src/lib/i18n.ts + 9 - - Danger Zone - Strefa Zagrożenia + + Close + Zamknij - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + libs/ui/src/lib/i18n.ts + 11 - - Close Account - Zamknij Konto + + Yes + Tak - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + libs/ui/src/lib/i18n.ts + 32 - - By ETF Holding - Wg. Holdingu ETF + + Copy link to clipboard + Kopiuj link do schowka - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Approximation based on the top holdings of each ETF - Przybliżenie oparte na najwyższych aktywach każdego funduszu ETF + + Portfolio Snapshot + Przegląd portfela - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Join now or check out the example account - Dołącz teraz lub sprawdź przykładowe konto + + Change with currency effect Change + Zmiana z efektem walutowym Zmiana - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Oops! There was an error setting up biometric authentication. - Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego. + + Performance with currency effect Performance + Wydajność z efektem walutowym Wydajność - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Show more - Pokaż więcej + + Threshold Min + Próg minimalny - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Benchmarks - Punkty Odniesienia + + Threshold Max + Próg maksymalny - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Delete Profiles - Usuń Profile + + Close + Zamknij - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Do you really want to delete these profiles? - Czy na pewno chcesz usunąć te profile? + + Customize + Dostosuj - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/rule/rule.component.html + 67 - - Oops! Could not delete profiles. - Ups! Nie udało się usunąć profili. + + No auto-renewal. + Bez automatycznego odnawiania. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Table - Tabela + + Today + Dzisiaj - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 24 - - Chart - Wykres + + This year + W tym roku - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/pages/public/public-page.html + 42 - - Would you like to refine your personal investment strategy? - Chcesz udoskonalić swoją osobistą strategię inwestycyjną? + + From the beginning + Od samego początku apps/client/src/app/pages/public/public-page.html - 211 + 60 - - Alternative - Alternatywa + + Oops! Invalid currency. + Ups! Błędna waluta. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - App - Aplikacja + + This page has been archived. + Ta strona została zarchiwizowana. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Budgeting - Budżetowanie + + is Open Source Software + jest Oprogramowaniem Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Community - Społeczność + + is not Open Source Software + nie jest Oprogramowaniem Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Family Office - Biuro Rodzinne + + is Open Source Software + jest Oprogramowaniem Open Source - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 + + + + is not Open Source Software + nie jest Oprogramowaniem Open Source + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Investor - Inwestor + + can be self-hosted + może być hostowany samodzielnie - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Open Source - Otwarty Kod Źródłowy + + cannot be self-hosted + nie może być hostowany samodzielnie - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Personal Finance - Finanse Osobiste + + can be self-hosted + może być hostowany samodzielnie - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Privacy - Prywatność + + cannot be self-hosted + nie może być hostowany samodzielnie - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Software - Oprogramowanie + + can be used anonymously + może być używany anonimowo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Tool - Narzędzie + + cannot be used anonymously + nie może być używany anonimowo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - User Experience - Doświadczenie Użytkownika + + can be used anonymously + może być używany anonimowo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Wealth - Majątek + + cannot be used anonymously + nie może być używany anonimowo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Wealth Management - Zarządzanie Majątkiem + + offers a free plan + oferuje darmowy plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Australia - Australia + + does not offer a free plan + nie oferuje darmowego planu - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Austria - Austria + + offers a free plan + oferuje darmowy plan - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Belgium - Belgia + + does not offer a free plan + nie oferuje darmowego planu - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Bulgaria - Bułgaria + + Oops! Could not find any assets. + Ups! Nie znaleziono żadnych aktywów. - libs/ui/src/lib/i18n.ts - 78 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Canada - Kanada + + Data Providers + Dostawcy danych - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Czech Republic - Czechy + + Set API key + Skonfiguruj klucz API - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - Finland - Finlandia + + Get access to 80’000+ tickers from over 50 exchanges + Uzyskaj dostęp do ponad 80 000 pasków notowań giełdowych z ponad 50 giełd libs/ui/src/lib/i18n.ts - 81 + 24 - - France - Francja + + Ukraine + Ukraina libs/ui/src/lib/i18n.ts - 82 + 95 - - Germany - Niemcy + + Join now + Dołącz teraz - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - India - Indie + + Glossary + Słowniczek - libs/ui/src/lib/i18n.ts - 84 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - Italy - Włochy - libs/ui/src/lib/i18n.ts - 85 + libs/common/src/lib/routes/routes.ts + 293 - - Netherlands - Holandia + + Guides + Poradniki - libs/ui/src/lib/i18n.ts - 87 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - New Zealand - Nowa Zelandia - libs/ui/src/lib/i18n.ts - 88 + libs/common/src/lib/routes/routes.ts + 301 - - Poland - Polska + + guides + poradniki + kebab-case - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 296 - - - Romania - Rumunia - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 299 - - South Africa - Południowa Afryka + + glossary + slowniczek + kebab-case - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 288 - - - Thailand - Tajlandia - libs/ui/src/lib/i18n.ts - 94 + libs/common/src/lib/routes/routes.ts + 291 - - United States - Stany Zjednoczone + + Threshold range + Zakres progów - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Error - Błąd + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray wykorzystuje analizę statyczną do wykrywania potencjalnych problemów i zagrożeń w portfelu. Dostosuj poniższe zasady i ustaw niestandardowe progi, aby dostosować je do osobistej strategii inwestycyjnej. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Deactivate - Dezaktywuj + + Economic Market Cluster Risks + Ryzyko związane z klastrem rynków gospodarczych - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Activate - Aktywuj + + of + z - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Inactive - Nieaktywny + + daily requests + codzienne żądania - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Cancel - Anuluj + + Remove API key + Usuń klucz API - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Close - Zamknij + + Do you really want to delete the API key? + Czy na pewno chcesz usunąć klucz API?? - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Yes - Tak + + Please enter your Ghostfolio API key: + Wprowadź swój klucz API konta Ghostfolio: - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Copy link to clipboard - Kopiuj link do schowka + + API Requests Today + Dzisiejsze Zapytania API - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Portfolio Snapshot - Przegląd portfela + + Could not generate an API key + Nie udało się wygenerować klucza API - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Change with currency effect Change - Change with currency effect Change + + Set this API key in your self-hosted environment: + Ustaw ten klucz API w samodzielnie hostowanym środowisku: - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Performance with currency effect Performance - Performance with currency effect Performance + + Ghostfolio Premium Data Provider API Key + Klucz API dostawcy danych Premium Ghostfolio - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Threshold Min - Próg minimalny + + Do you really want to generate a new API key? + Czy na pewno chcesz wygenerować nowy klucz API? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Max - Próg maksymalny + + Tag + Tag - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/assistant/assistant.html + 194 - - Close - Zamknij + + API Key + Klucz API - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Customize - Dostosuj + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Generowanie klucza API Ghostfolio Premium Data Provider dla środowisk hostowanych samodzielnie... - apps/client/src/app/components/rule/rule.component.html - 67 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - No auto-renewal. - Bez automatycznego odnawiania. + + out of + poza - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - Today - Dzisiaj + + rules align with your portfolio. + zasady zgodne z Twoim portfelem. - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - This year - W tym roku + + Save + Zapisz - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - From the beginning - Od samego początku + + Asset Class Cluster Risks + Ryzyko klastra klasy aktywów - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - Oops! Invalid currency. - Ups! Błędna waluta. + + Me + Ja - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - This page has been archived. - Ta strona została zarchiwizowana. + + Received Access + Otrzymany dostęp - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - is Open Source Software - jest Oprogramowaniem Open Source + + Please enter your Ghostfolio API key. + Wprowadź swój klucz API Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is not Open Source Software - nie jest Oprogramowaniem Open Source + + AI prompt has been copied to the clipboard + Prompt AI został skopiowany do schowka - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is Open Source Software - jest Oprogramowaniem Open Source + + Link has been copied to the clipboard + Link został skopiowany do schowka - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is not Open Source Software - nie jest Oprogramowaniem Open Source + + Regional Market Cluster Risks + Ryzyka klastrów regionalnych rynków - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - can be self-hosted - może być hostowany samodzielnie + + Lazy + Leniwy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be self-hosted - nie może być hostowany samodzielnie + + Instant + Natychmiastowy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 + + + + Default Market Price + Domyślna cena rynkowa + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - can be self-hosted - może być hostowany samodzielnie + + Mode + Tryb - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - cannot be self-hosted - nie może być hostowany samodzielnie + + Selector + Selektor - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - can be used anonymously - może być używany anonimowo + + HTTP Request Headers + Nagłówki żądań HTTP - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - cannot be used anonymously - nie może być używany anonimowo + + end of day + koniec dnia - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be used anonymously - może być używany anonimowo + + real-time + w czasie rzeczywistym - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be used anonymously - nie może być używany anonimowo + + Open Duck.ai + Otwórz Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - offers a free plan - oferuje darmowy plan + + Create + Stwórz - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - does not offer a free plan - nie oferuje darmowego planu + + Market Data + Dane rynkowe - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - offers a free plan - oferuje darmowy plan + + Change + Zmiana - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - does not offer a free plan - nie oferuje darmowego planu + + Performance + Wydajność - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 + + + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Oops! Could not find any assets. - Ups! Nie znaleziono żadnych aktywów. + + Copy portfolio data to clipboard for AI prompt + Skopiuj dane portfela do schowka dla prompta AI - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Data Providers - Dostawcy danych + + Copy AI prompt to clipboard for analysis + Skopiuj prompt AI do schowka w celu analizy - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Set API key - Skonfiguruj klucz API + + Armenia + Armenia - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + libs/ui/src/lib/i18n.ts + 73 - - Get access to 80’000+ tickers from over 50 exchanges - Uzyskaj dostęp do ponad 100 000 pasków notowań giełdowych z ponad 50 giełd + + British Virgin Islands + Brytyjskie Wyspy Dziewicze libs/ui/src/lib/i18n.ts - 24 + 77 - - Ukraine - Ukraina + + Singapore + Singapur libs/ui/src/lib/i18n.ts - 95 + 91 - - Join now - Dołącz teraz + + Terms and Conditions + Zasady i Warunki użytkownia - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Glossary - Słowniczek + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Przechowuj swój Token Bezpieczeństwa w bezpiecznym miejscu. Jeśli go zgubisz, nie będziesz mógł odzyskać swojego konta. - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + Rozumiem, że jeśli utracę token zabezpieczający, nie będę mógł odzyskać konta - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - Guides - Poradniki + + Continue + Kontynuuj - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + To twój Token Bezpieczeństwa. JEST ON WIDOCZNY TYLKO RAZ! Przechowuj go w bezpiecznym miejscu. - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - guides - poradniki - snake-case + + Security token + Token bezpieczeństwa - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - glossary - slowniczek - snake-case + + Do you really want to generate a new security token for this user? + Czy napewno chcesz wygenerować nowy token bezpieczeństwa dla tego użytkownika? - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 + + + Generate Security Token + Generowanie Tokena Zabezpieczającego - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Threshold range - Zakres progów + + United Kingdom + Wielka Brytania - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + libs/ui/src/lib/i18n.ts + 96 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray wykorzystuje analizę statyczną do wykrywania potencjalnych problemów i zagrożeń w portfelu. Dostosuj poniższe zasady i ustaw niestandardowe progi, aby dostosować je do osobistej strategii inwestycyjnej. + + Terms of Service + Warunki świadczenia usług - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/app.component.html + 112 - - Economic Market Cluster Risks - Ryzyko związane z klastrem rynków gospodarczych + + terms-of-service + warunki-swiadczenia-uslug + kebab-case - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + libs/common/src/lib/routes/routes.ts + 212 - - - of - z - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + libs/common/src/lib/routes/routes.ts + 215 - - daily requests - codzienne żądania + + Terms of Service + Warunki świadczenia usług - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/common/src/lib/routes/routes.ts + 217 - - Remove API key - Usuń klucz API + + Terms of Service + Warunki świadczenia usług - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - Do you really want to delete the API key? - Czy na pewno chcesz usunąć klucz API?? + + and I agree to the Terms of Service. + i zgadzam się na Warunki świadczenia usług. - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - Please enter your Ghostfolio API key: - Wprowadź swój klucz API konta Ghostfolio: + + () is already in use. + () jest już w użyciu. - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - I have an API key - Posiadam klucz API + + An error occurred while updating to (). + Wystąpił błąd podczas aktualizacji do (). - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - API Requests Today - Dzisiejsze Zapytania API + + Apply + Zatwierdź - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Could not generate an API key - Nie udało się wygenerować klucza API + + with API access for + z dostępem API dla - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Set this API key in your self-hosted environment: - Ustaw ten klucz API w samodzielnie hostowanym środowisku: + + Gather Recent Historical Market Data + Zbierz najnowsze historyczne dane rynkowe - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Ghostfolio Premium Data Provider API Key - Klucz API dostawcy danych Premium Ghostfolio + + Gather All Historical Market Data + Zbierz wszystkie historyczne dane rynkowe - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - Do you really want to generate a new API key? - Czy na pewno chcesz wygenerować nowy klucz API? + + Gather Historical Market Data + Zbierz historyczne dane rynkowe - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Tag - Tag + + Data Gathering is off + Zbieranie danych jest wyłączone - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - API Key - Klucz API + + Performance Calculation + Obliczanie wydajności - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Generowanie klucza API Ghostfolio Premium Data Provider dla środowisk hostowanych samodzielnie... + + someone + ktoś - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - out of - poza + + Add asset to watchlist + Dodaj zasób do listy obserwowanych - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - rules align with your portfolio. - zasady zgodne z Twoim portfelem. + + Watchlist + Lista obserwowanych - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Save - Zapisz - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/pages/features/features-page.html + 197 - - Asset Class Cluster Risks - Ryzyko klastra klasy aktywów + + Watchlist + Lista obserwowanych - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + libs/common/src/lib/routes/routes.ts + 110 - - Me - Ja + + Do you really want to delete this item? + Czy na pewno chcesz usunąć ten element? - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - Received Access - Otrzymany dostęp + + Log out + Wyloguj się - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + apps/client/src/app/components/header/header.component.html + 329 - - Please enter your Ghostfolio API key. - Wprowadź swój klucz API Ghostfolio. + + Calculations are based on delayed market data and may not be displayed in real-time. + Obliczenia opierają się na opóźnionych danych rynkowych i mogą nie być wyświetlane w czasie rzeczywistym. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + apps/client/src/app/components/home-market/home-market.html + 43 - - - AI prompt has been copied to the clipboard - Prompt AI został skopiowany do schowka - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/markets/markets.html + 52 - - Link has been copied to the clipboard - Link został skopiowany do schowka + + changelog + dziennik-zmian + kebab-case - apps/client/src/app/components/access-table/access-table.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 180 - - - Early Access - Wczesny dostęp - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + libs/common/src/lib/routes/routes.ts + 183 - - Regional Market Cluster Risks - Regional Market Cluster Risks + + Demo user account has been synced. + Konto użytkownika demonstracyjnego zostało zsynchronizowane. - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Lazy - Lazy + + Sync Demo User Account + Synchronizuj konto użytkownika demonstracyjnego - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Instant - Instant + + Emergency Fund: Set up + Fundusz awaryjny: Utworzenie - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Default Market Price - Default Market Price + + No emergency fund has been set up + Nie utworzono funduszu awaryjnego - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - Mode - Mode + + An emergency fund has been set up + Utworzono fundusz awaryjny - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - Selector - Selector + + Fee Ratio + Stosunek opłat - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - HTTP Request Headers - HTTP Request Headers + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Opłaty przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - end of day - end of day + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Opłaty nie przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - real-time - real-time + + Name + Nazwa - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Open Duck.ai - Otwórz Duck.ai + + Find holding or page... + Znajdź gospodarstwo lub stronę... - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Create - Stwórz + + Quick Links + Szybkie linki - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/assistant/assistant.html + 43 - - Market Data - Market Data + + Asset Profiles + Profile zasobów - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.html + 99 - - Change - Zmiana + + Live Demo + Live Demo - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/common/src/lib/routes/routes.ts + 231 - - Performance - Wydajność + + Open Source Alternative to + Alternatywa Open Source dla - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/common/src/lib/routes/routes.ts + 326 + + + Single Account + Single Account - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Copy portfolio data to clipboard for AI prompt - Skopiuj dane portfela do schowka dla prompta AI + + Your net worth is managed by a single account + Your net worth is managed by a single account - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - Copy AI prompt to clipboard for analysis - Skopiuj prompt AI do schowka w celu analizy + + Your net worth is managed by ${accountsLength} accounts + Your net worth is managed by ${accountsLength} accounts - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Armenia - Armenia + + Holdings + Holdings - libs/ui/src/lib/i18n.ts - 73 + libs/ui/src/lib/assistant/assistant.html + 69 - - British Virgin Islands - Brytyjskie Wyspy Dziewicze + + personal-finance-tools + personal-finance-tools + kebab-case - libs/ui/src/lib/i18n.ts - 77 + libs/common/src/lib/routes/routes.ts + 312 - - - Singapore - Singapur - libs/ui/src/lib/i18n.ts - 91 + libs/common/src/lib/routes/routes.ts + 315 - - - Terms and Conditions - Zasady i Warunki użytkownia - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 323 - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Przechowuj swój Token Bezpieczeństwa w bezpiecznym miejscu. Jeśli go zgubisz, nie będziesz mógł odzyskać swojego konta. + + markets + markets + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 304 - - - I understand that if I lose my security token, I cannot recover my account - Rozumiem, że jeśli utracę token zabezpieczający, nie będę mógł odzyskać konta - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 307 - - Continue - Kontynuuj + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Here is your security token. It is only visible once, please store and keep it in a safe place. - To twój Token Bezpieczeństwa. JEST ON WIDOCZNY TYLKO RAZ! Przechowuj go w bezpiecznym miejscu. + + Get Access + Get Access - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Security token - Token bezpieczeństwa + + Learn more + Learn more - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - Do you really want to generate a new security token for this user? - Czy napewno chcesz wygenerować nowy token bezpieczeństwa dla tego użytkownika? + + new + new - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Generate Security Token - Generowanie Tokena Zabezpieczającego + + Limited Offer! + Limited Offer! - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - United Kingdom - Wielka Brytania + + Get extra + Get extra - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/pages/pricing/pricing-page.html + 313 - - Terms of Service - Warunki świadczenia usług + + Available + Available - apps/client/src/app/app.component.html - 112 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 - - terms-of-service - warunki-świadczenia-usług - snake-case + + Unavailable + Unavailable - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + new - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 + + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - Warunki świadczenia usług + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 19 + + + Equity + Equity - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - Terms of Service - Warunki świadczenia usług + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - and I agree to the Terms of Service. - i zgadzam się na Warunki świadczenia usług. + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - () is already in use. - () jest już w użyciu. + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - An error occurred while updating to (). - Wystąpił błąd podczas aktualizacji do (). + + Fixed Income + Fixed Income - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Apply - Zatwierdź + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - with API access for - with API access for + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Recent Historical Market Data - Gather Recent Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Gather All Historical Market Data - Gather All Historical Market Data + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Gather Historical Market Data - Gather Historical Market Data + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - Data Gathering is off - Data Gathering is off + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Performance Calculation - Performance Calculation + + Investment + Investment - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - someone - someone + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 72 - - Add asset to watchlist - Add asset to watchlist + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - Watchlist + + start + start + kebab-case - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/features/features-page.html - 197 + libs/common/src/lib/routes/routes.ts + 337 - - Watchlist - Watchlist + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 - - - apps/client/src/app/pages/home/home-page.component.ts - 53 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Get Early Access - Get Early Access + + Generate + Generate - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Do you really want to delete this item? - Do you really want to delete this item? + + Stocks + Stocks - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/markets/markets.component.ts + 54 - - Log out - Log out + + Cryptocurrencies + Cryptocurrencies - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 535aa5acf..26b4108be 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + 45 apps/client/src/app/components/admin-users/admin-users.html @@ -118,11 +118,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + 224 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + 335 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -146,7 +146,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + 22 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -154,11 +154,11 @@ apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + 46 apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + 22 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -170,16 +170,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + 139 libs/ui/src/lib/activities-table/activities-table.component.html 138 - - libs/ui/src/lib/benchmark/benchmark.component.html - 4 - libs/ui/src/lib/holdings-table/holdings-table.component.html 28 @@ -226,7 +222,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + 145 libs/ui/src/lib/activities-table/activities-table.component.html @@ -266,15 +262,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 205 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 208 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 211 libs/ui/src/lib/account-balances/account-balances.component.html @@ -314,11 +310,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + 74 apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + 67 libs/ui/src/lib/activities-table/activities-table.component.html @@ -346,11 +342,11 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + 85 apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + 78 libs/ui/src/lib/account-balances/account-balances.component.html @@ -362,7 +358,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 155 + 169 @@ -394,7 +390,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 308 @@ -414,7 +410,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 155 @@ -448,6 +444,10 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html 110 + + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + Delete Jobs @@ -461,8 +461,8 @@ Asset Profiles Perfil de Ativos - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 @@ -514,7 +514,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + 161 libs/ui/src/lib/account-balances/account-balances.component.html @@ -538,7 +538,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 109 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -562,7 +562,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + 38 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -586,7 +586,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 338 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -610,7 +610,7 @@ apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + 45 apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html @@ -634,7 +634,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + 345 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -666,15 +666,15 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + 235 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + 290 libs/ui/src/lib/assistant/assistant.html - 168 + 205 @@ -694,11 +694,11 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + 306 @@ -714,7 +714,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + 212 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -774,7 +774,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + 142 @@ -782,7 +782,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + 179 @@ -790,7 +790,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + 199 @@ -874,7 +874,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 @@ -890,11 +890,11 @@ Utilizador apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 @@ -910,7 +910,7 @@ Contas apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -918,15 +918,15 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -974,15 +974,15 @@ Portefólio apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 @@ -990,7 +990,7 @@ Referência apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 @@ -1006,11 +1006,15 @@ Visão geral apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 @@ -1018,11 +1022,11 @@ Portefólio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 @@ -1030,11 +1034,11 @@ Controlo Administrativo apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 @@ -1046,11 +1050,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -1066,15 +1070,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -1090,11 +1094,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -1102,7 +1106,7 @@ Eu apps/client/src/app/components/header/header.component.html - 207 + 213 @@ -1110,7 +1114,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 @@ -1118,7 +1122,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1134,7 +1138,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -1150,12 +1154,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -1166,7 +1174,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1178,19 +1186,23 @@ Começar apps/client/src/app/components/header/header.component.html - 418 + 432 Sign in Iniciar sessão - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -1198,7 +1210,11 @@ Oops! Token de Segurança Incorreto. apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -1220,6 +1236,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -1232,6 +1252,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -1244,6 +1268,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Summary @@ -1284,6 +1312,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -1301,8 +1337,8 @@ or ou - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1326,7 +1362,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -1382,7 +1418,7 @@ Investimento apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1482,7 +1518,7 @@ Dividendo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -1494,12 +1530,12 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 Please set the amount of your emergency fund. - Por favor, insira o valor do seu fundo de emergência: + Por favor, insira o valor do seu fundo de emergência: apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 64 @@ -1518,7 +1554,7 @@ Preço Médio por Unidade apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -1526,7 +1562,7 @@ Preço Mínimo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -1534,7 +1570,7 @@ Preço Máximo apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -1542,11 +1578,11 @@ Quantidade apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1562,7 +1598,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + 261 @@ -1578,7 +1614,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + 271 @@ -1594,7 +1630,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + 277 apps/client/src/app/pages/public/public-page.html @@ -1614,7 +1650,7 @@ apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + 289 @@ -1622,7 +1658,7 @@ Marcadores apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1638,7 +1674,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -1674,7 +1710,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -1686,7 +1722,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -1698,7 +1734,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -1710,7 +1746,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -1722,7 +1758,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -1730,7 +1766,7 @@ Esta funcionalidade está atualmente indisponível. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -1738,11 +1774,11 @@ Por favor tente novamente mais tarde. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1754,7 +1790,7 @@ Oops! Ocorreu um erro. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1766,11 +1802,11 @@ OK apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -1781,16 +1817,12 @@ About Sobre - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 @@ -1821,12 +1853,8 @@ Privacy Policy Política de Privacidade - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -1846,7 +1874,7 @@ O meu Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + 34 @@ -1859,10 +1887,10 @@ Please enter your coupon code. - Por favor, insira o seu código de cupão: + Por favor, insira o seu código de cupão: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -1870,7 +1898,7 @@ Não foi possível resgatar o código de cupão apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -1878,7 +1906,7 @@ Código de cupão foi resgatado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -1886,7 +1914,7 @@ Atualizar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -1910,7 +1938,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -1930,7 +1958,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -1977,12 +2005,8 @@ Users Utilizadores - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 @@ -2082,7 +2106,7 @@ Acesso Concedido apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 @@ -2105,8 +2129,8 @@ Accounts Contas - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -2145,16 +2169,16 @@ Admin Control Controlo Administrativo - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -2230,7 +2254,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -2242,7 +2266,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -2264,21 +2288,21 @@ Frequently Asked Questions (FAQ) FAQ - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 - + + libs/common/src/lib/routes/routes.ts + 251 + + Features Funcionalidades - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -2286,59 +2310,51 @@ Visão geral apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Markets Mercados - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 Activities Atividades - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -2354,7 +2370,7 @@ Adicionar atividade apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2394,7 +2410,7 @@ Preço por Unidade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2406,7 +2422,7 @@ Comissão apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2426,7 +2442,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + 275 @@ -2473,8 +2489,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -2601,12 +2617,8 @@ Analysis Análise - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -2685,20 +2697,12 @@ Holdings Posições - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 @@ -2716,10 +2720,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Pricing @@ -2728,10 +2728,14 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Hello, has shared a Portfolio with you! - Olá, partilhou um Portefólio consigo! + Olá, partilhou um Portefólio consigo! apps/client/src/app/pages/public/public-page.html 4 @@ -2777,8 +2781,8 @@ Registration Registo - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -2829,8 +2833,8 @@ Resources Recursos - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/common/src/lib/routes/routes.ts + 332 @@ -2854,7 +2858,7 @@ Voltar à Página Inicial apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + 33 @@ -2926,7 +2930,7 @@ Diferença desde o Máximo Histórico libs/ui/src/lib/benchmark/benchmark.component.html - 96 + 110 @@ -2934,7 +2938,7 @@ a partir do ATH (All Time High) libs/ui/src/lib/benchmark/benchmark.component.html - 98 + 112 @@ -3277,24 +3281,16 @@ Market Data Dados de Mercado - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Summary Sumário - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 @@ -3358,7 +3354,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -3390,7 +3386,7 @@ Válido até apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + 74 libs/ui/src/lib/membership-card/membership-card.component.html @@ -3486,11 +3482,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -3502,11 +3498,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -3518,11 +3514,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -3534,11 +3530,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -3558,7 +3554,7 @@ Atualizar Plano apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -3570,7 +3566,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -3578,7 +3574,7 @@ Para investidores experientes que preferem correr o Ghostfolio na sua própria infraestrutura. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -3586,15 +3582,15 @@ Transações Ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -3602,15 +3598,15 @@ Contas Ilimitadas apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -3618,15 +3614,15 @@ Desempenho do Portefólio apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -3634,7 +3630,7 @@ Hospedado localmente, atualização manual. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -3642,11 +3638,11 @@ Grátis apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -3654,7 +3650,7 @@ Para novos investidores que estão a começar a investir agora. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -3662,11 +3658,11 @@ Ghostfolio hospedado na nuvem, totalmente gerido. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -3674,7 +3670,7 @@ Para investidores ambiciosos que precisam de ter uma visão completa de seus ativos financeiros. apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -3682,7 +3678,7 @@ Pagamento único, sem renovação automática. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -3698,7 +3694,7 @@ É gratuito. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 @@ -3706,7 +3702,7 @@ Taxas apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -3730,11 +3726,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -3750,15 +3746,15 @@ Importação e Exportação de Dados apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -3774,7 +3770,7 @@ Suporte da Comunidade apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -3782,7 +3778,7 @@ Suporte por Email e Chat apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -3826,7 +3822,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -3842,7 +3838,7 @@ Renovar Plano apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -3850,7 +3846,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 @@ -3922,7 +3918,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -3942,7 +3938,7 @@ Plataformas apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 @@ -3977,32 +3973,24 @@ 47 - + Add Platform Adicionar Plataforma apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 Settings Definições - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 @@ -4102,7 +4090,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 @@ -4169,24 +4157,16 @@ Changelog Registo de alterações - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License Licença - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 @@ -4199,7 +4179,7 @@ ETFs - ETFs + ETFs apps/client/src/app/pages/features/features-page.html 25 @@ -4295,7 +4275,7 @@ Liability - Liability + Responsabilidade libs/ui/src/lib/i18n.ts 40 @@ -4303,7 +4283,7 @@ Scraper Configuration - Scraper Configuration + Configuração do raspador apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 377 @@ -4321,8 +4301,8 @@ Personal Finance Tools Ferramentas de finanças pessoais - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + libs/common/src/lib/routes/routes.ts + 329 @@ -4503,7 +4483,7 @@ Stocks, ETFs, bonds, cryptocurrencies, commodities - Stocks, ETFs, bonds, cryptocurrencies, commodities + Ações, ETFs, títulos, criptomoedas, commodities apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 25 @@ -4539,7 +4519,7 @@ Valuable - Valuable + De valor libs/ui/src/lib/i18n.ts 39 @@ -4547,7 +4527,7 @@ ETFs without Countries - ETFs without Countries + ETFs sem países apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 91 @@ -4555,7 +4535,7 @@ ETFs without Sectors - ETFs without Sectors + ETFs sem setores apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 96 @@ -4627,7 +4607,7 @@ Capture your activities - Capture your activities + Capture suas atividades apps/client/src/app/components/home-overview/home-overview.html 24 @@ -4670,7 +4650,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4690,7 +4670,7 @@ Configurar contas apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 @@ -4703,7 +4683,7 @@ At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + Na Ghostfolio, a transparência está no centro dos nossos valores. Publicamos o código fonte como open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. apps/client/src/app/pages/open/open-page.html 6 @@ -4759,7 +4739,7 @@ Pulls on Docker Hub - Pulls on Docker Hub + Não puxa Docker Hub apps/client/src/app/pages/landing/landing-page.html 106 @@ -4795,7 +4775,7 @@ Our - Our + Nosso apps/client/src/app/pages/about/oss-friends/oss-friends-page.html 6 @@ -4803,7 +4783,7 @@ Visit - Visit + Visita apps/client/src/app/pages/about/oss-friends/oss-friends-page.html 28 @@ -4835,7 +4815,7 @@ Check out the numerous features of Ghostfolio to manage your wealth - Check out the numerous features of Ghostfolio to manage your wealth + Confira os inúmeros recursos do Ghostfolio para gerenciar seu patrimônio apps/client/src/app/pages/features/features-page.html 6 @@ -4843,7 +4823,7 @@ Discover the latest Ghostfolio updates and insights on personal finance - Discover the latest Ghostfolio updates and insights on personal finance + Descubra as últimas atualizações e insights do Ghostfolio sobre finanças pessoais apps/client/src/app/pages/blog/blog-page.html 7 @@ -4851,15 +4831,15 @@ If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Se você preferir executar o Ghostfolio em sua própria infraestrutura, encontre o código-fonte e mais instruções em GitHub. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 Manage your wealth like a boss - Manage your wealth like a boss + Gerencie seu patrimônio como um chefe apps/client/src/app/pages/landing/landing-page.html 5 @@ -4867,7 +4847,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio é um painel de código aberto que prioriza a privacidade para suas finanças pessoais. Divida sua alocação de ativos, conheça seu patrimônio líquido e tome decisões de investimento sólidas e baseadas em dados. apps/client/src/app/pages/landing/landing-page.html 9 @@ -4882,12 +4862,12 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 Monthly Active Users - Monthly Active Users + Usuários ativos mensais apps/client/src/app/pages/landing/landing-page.html 70 @@ -4895,7 +4875,7 @@ As seen in - As seen in + Como visto em apps/client/src/app/pages/landing/landing-page.html 115 @@ -4903,7 +4883,7 @@ Protect your assets. Refine your personal investment strategy. - Protect your assets. Refine your personal investment strategy. + Proteja o seu assets. Refine your personal investment strategy. apps/client/src/app/pages/landing/landing-page.html 225 @@ -4911,7 +4891,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + O Ghostfolio permite que pessoas ocupadas acompanhem ações, ETFs ou criptomoedas sem serem rastreadas. apps/client/src/app/pages/landing/landing-page.html 229 @@ -4919,7 +4899,7 @@ 360° View - 360° View + 360° visualizar apps/client/src/app/pages/landing/landing-page.html 240 @@ -4927,7 +4907,7 @@ Web3 Ready - Web3 Ready + Web3 Preparar apps/client/src/app/pages/landing/landing-page.html 251 @@ -4935,7 +4915,7 @@ Use Ghostfolio anonymously and own your financial data. - Use Ghostfolio anonymously and own your financial data. + Use o Ghostfolio anonimamente e possua seus dados financeiros. apps/client/src/app/pages/landing/landing-page.html 253 @@ -4943,7 +4923,7 @@ Open Source - Open Source + Código aberto apps/client/src/app/pages/landing/landing-page.html 261 @@ -4951,7 +4931,7 @@ Benefit from continuous improvements through a strong community. - Benefit from continuous improvements through a strong community. + Beneficie-se de melhorias contínuas através de uma comunidade forte. apps/client/src/app/pages/landing/landing-page.html 263 @@ -4959,7 +4939,7 @@ Why Ghostfolio? - Why Ghostfolio? + Por que Ghostfolio? apps/client/src/app/pages/landing/landing-page.html 272 @@ -4967,7 +4947,7 @@ Ghostfolio is for you if you are... - Ghostfolio is for you if you are... + Ghostfolio é para você se você for... apps/client/src/app/pages/landing/landing-page.html 273 @@ -4975,7 +4955,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms - trading stocks, ETFs or cryptocurrencies on multiple platforms + negociar ações, ETFs ou criptomoedas em múltiplas plataformas apps/client/src/app/pages/landing/landing-page.html 280 @@ -4983,7 +4963,7 @@ pursuing a buy & hold strategy - pursuing a buy & hold strategy + buscando uma compra & estratégia de retenção apps/client/src/app/pages/landing/landing-page.html 286 @@ -4991,7 +4971,7 @@ interested in getting insights of your portfolio composition - interested in getting insights of your portfolio composition + interessado em obter insights sobre a composição do seu portfólio apps/client/src/app/pages/landing/landing-page.html 291 @@ -4999,7 +4979,7 @@ valuing privacy and data ownership - valuing privacy and data ownership + valorizando a privacidade e a propriedade dos dados apps/client/src/app/pages/landing/landing-page.html 296 @@ -5007,7 +4987,7 @@ into minimalism - into minimalism + no minimalismo apps/client/src/app/pages/landing/landing-page.html 299 @@ -5015,7 +4995,7 @@ caring about diversifying your financial resources - caring about diversifying your financial resources + preocupando-se em diversificar seus recursos financeiros apps/client/src/app/pages/landing/landing-page.html 303 @@ -5023,7 +5003,7 @@ interested in financial independence - interested in financial independence + interessado em independência financeira apps/client/src/app/pages/landing/landing-page.html 307 @@ -5031,7 +5011,7 @@ saying no to spreadsheets in - saying no to spreadsheets in + dizendo não às planilhas em apps/client/src/app/pages/landing/landing-page.html 311 @@ -5039,7 +5019,7 @@ still reading this list - still reading this list + ainda lendo esta lista apps/client/src/app/pages/landing/landing-page.html 314 @@ -5047,7 +5027,7 @@ Learn more about Ghostfolio - Learn more about Ghostfolio + Saiba mais sobre o Ghostfolio apps/client/src/app/pages/landing/landing-page.html 319 @@ -5055,7 +5035,7 @@ What our users are saying - What our users are saying + Qual é o nosso users are saying apps/client/src/app/pages/landing/landing-page.html 327 @@ -5063,7 +5043,7 @@ Members from around the globe are using Ghostfolio Premium - Members from around the globe are using Ghostfolio Premium + Membros de todo o mundo estão usando Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html 366 @@ -5071,7 +5051,7 @@ How does Ghostfolio work? - How does Ghostfolio work? + Como é que Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html 383 @@ -5079,7 +5059,7 @@ Sign up anonymously* - Sign up anonymously* + Inscreva-se anonimamente* apps/client/src/app/pages/landing/landing-page.html 392 @@ -5087,7 +5067,7 @@ * no e-mail address nor credit card required - * no e-mail address nor credit card required + * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html 394 @@ -5095,7 +5075,7 @@ Add any of your historical transactions - Add any of your historical transactions + Adicione qualquer uma de suas transações históricas apps/client/src/app/pages/landing/landing-page.html 405 @@ -5103,7 +5083,7 @@ Get valuable insights of your portfolio composition - Get valuable insights of your portfolio composition + Obtenha insights valiosos sobre a composição do seu portfólio apps/client/src/app/pages/landing/landing-page.html 417 @@ -5111,7 +5091,7 @@ Are you ready? - Are you ready? + São you preparar? apps/client/src/app/pages/landing/landing-page.html 431 @@ -5119,19 +5099,19 @@ Live Demo - Live Demo + Demonstração ao vivo apps/client/src/app/pages/landing/landing-page.html 49 apps/client/src/app/pages/landing/landing-page.html - 451 + 452 Get the full picture of your personal finances across multiple platforms. - Get the full picture of your personal finances across multiple platforms. + Tenha uma visão completa das suas finanças pessoais em diversas plataformas. apps/client/src/app/pages/landing/landing-page.html 242 @@ -5139,2862 +5119,2928 @@ Get started in only 3 steps - Get started in only 3 steps + Comece em apenas 3 passos apps/client/src/app/pages/landing/landing-page.html 386 - + faq perguntas-mais-frequentes - snake-case - - apps/client/src/app/app.component.ts - 82 - + kebab-case - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 245 + + + features + funcionalidades + kebab-case - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 255 - - features - funcionalidades - snake-case + + about + sobre + kebab-case - apps/client/src/app/app.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/components/header/header.component.ts - 83 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/components/header/header.component.ts - 88 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/core/paths.ts - 4 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 214 + + + privacy-policy + politica-de-privacidade + kebab-case - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 207 + + + license + licenca + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + mercados + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + precos + kebab-case - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + libs/common/src/lib/routes/routes.ts + 270 - - about - sobre - snake-case - - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 - + + register + registo + kebab-case - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + recursos + kebab-case - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 322 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Esta página de visão geral apresenta uma coleção selecionada de ferramentas de finanças pessoais em comparação com a alternativa de código abertoGhostfolio. Se você valoriza transparência, privacidade de dados e colaboração comunitária, o Ghostfolio oferece uma excelente oportunidade para assumir o controle de sua gestão financeira. - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Explore os links abaixo para comparar uma variedade de ferramentas de finanças pessoais com o Ghostfolio. - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + Open Source Alternative to + Alternativa de software livre ao - apps/client/src/app/pages/about/about-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + The Open Source Alternative to + A alternativa de software livre ao - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Você está procurando uma alternativa de código aberto para ? Ghostfolio é uma poderosa ferramenta de gestão de portfólio que oferece aos investidores uma plataforma abrangente para monitorar, analisar e otimizar seus investimentos. Seja você um investidor experiente ou iniciante, o Ghostfolio oferece uma interface de usuário intuitiva e um ampla gama de funcionalidades para ajudá-lo a tomar decisões informadas e assumir o controle do seu futuro financeiro. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio é um software de código aberto (OSS), que oferece uma alternativa econômica para tornando-o particularmente adequado para indivíduos com orçamento apertado, como aqueles buscando Independência Financeira, Aposentadoria Antecipada (FIRE). Ao aproveitar os esforços coletivos de uma comunidade de desenvolvedores e entusiastas de finanças pessoais, o Ghostfolio aprimora continuamente seus recursos, segurança e experiência do usuário. - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Vamos nos aprofundar nos detalhes do Ghostfolio vs tabela de comparação abaixo para obter uma compreensão completa de como o Ghostfolio se posiciona em relação a . Exploraremos vários aspectos, como recursos, privacidade de dados, preços e muito mais, permitindo que você faça uma escolha bem informada para suas necessidades pessoais. - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + open-source-alternative-to + alternativa-de-software-livre-ao + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 324 + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Observe que as informações fornecidas no Ghostfolio vs. A tabela de comparação é baseada em nossa pesquisa e análise independentes. Este site não é afiliado a ou qualquer outro produto mencionado na comparação. À medida que o cenário das ferramentas de finanças pessoais evolui, é essencial verificar quaisquer detalhes ou alterações específicas diretamente na página do produto correspondente. Os dados precisam de uma atualização? Ajude-nos a manter dados precisos sobre GitHub. - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + Ready to take your investments to the next level? + Pronto para levar o seu investimentos para o próximo nível? - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + Get Started + Começar - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Switzerland + Suíça apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + 57 - - - privacy-policy - politica-de-privacidade - snake-case - apps/client/src/app/app.component.ts - 76 + libs/ui/src/lib/i18n.ts + 93 + + + Global + Global - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/ui/src/lib/i18n.ts + 16 - - license - licenca - snake-case + + (Last 24 hours) + (Últimas 24 horas) - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Últimos 30 dias) - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/open/open-page.html + 59 - - markets - mercados - snake-case + + (Last 90 days) + (Últimos 90 dias) - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/pages/open/open-page.html + 127 + + + Choose or drop a file here + Selecione ou solte um arquivo aqui - apps/client/src/app/components/header/header.component.ts + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 84 + + + You are using the Live Demo. + Você está usando a demonstração ao vivo. - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/app.component.html + 12 + + + One-time fee, annual account fees + Taxa única, taxas de conta anuais - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + Distribution of corporate earnings + Distribuição de lucros corporativos - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + Fee + Taxa - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + libs/ui/src/lib/i18n.ts + 37 + + + Interest + Interesse - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 + + + Revenue for lending out money + Receita por empréstimo de dinheiro - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + Add Tag + Adicionar etiqueta - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - pricing - precos - snake-case + + Do you really want to delete this tag? + Você realmente deseja excluir esta tag? - apps/client/src/app/app.component.ts + apps/client/src/app/components/admin-tag/admin-tag.component.ts 85 + + + Update tag + Atualizar etiqueta - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - - - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Adicionar etiqueta - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 + + + Currency Cluster Risks + Riscos de cluster monetário - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 + + + Account Cluster Risks + Riscos de cluster de contas - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 + + + Transfer Cash Balance + Transferir saldo de dinheiro - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/core/paths.ts + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 7 + + + Benchmark + Referência - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Version + Versão - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Configurações - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + De - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + Para - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 + + + Transfer + Transferir - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 + + + Membership + Associação - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 31 + + + Access + Acesso - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 26 + + + Asset Profile + Perfil de ativos - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 + + + Do you really want to delete this asset profile? + Você realmente deseja excluir este perfil de ativo? - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Search + Procurar - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Adicionar manualmente - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/pages/i18n/i18n-page.html + 4 - - register - registo - snake-case + + Last All Time High + Última alta de todos os tempos - apps/client/src/app/app.component.ts - 86 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + User + Usuário - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs tabela de comparação - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + Open Source Wealth Management Software + Software de gerenciamento de patrimônio de código aberto - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/pages/i18n/i18n-page.html + 97 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + aplicativo, ativo, criptomoeda, painel, etf, finanças, gestão, desempenho, portfólio, software, ação, negociação, riqueza, web3 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + Oops, cash balance transfer has failed. + Ops, a transferência do saldo em dinheiro falhou. - apps/client/src/app/pages/features/features-page.component.ts - 28 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 + + + Extreme Fear + Medo Extremo - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + libs/ui/src/lib/i18n.ts + 100 + + + Extreme Greed + Ganância Extrema - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + libs/ui/src/lib/i18n.ts + 101 - - resources - recursos - snake-case + + Neutral + Neutro - apps/client/src/app/app.component.ts - 87 + libs/ui/src/lib/i18n.ts + 104 + + + Oops! Could not parse historical data. + Ops! Não foi possível analisar os dados históricos. - apps/client/src/app/components/header/header.component.ts - 86 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 + + + Do you really want to delete this system message? + Você realmente deseja excluir esta mensagem do sistema? - apps/client/src/app/components/header/header.component.ts - 92 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 + + + 50-Day Trend + Tendência de 50 dias - apps/client/src/app/core/paths.ts - 10 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend + Tendência de 200 dias - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Cash Balances + Saldos de caixa - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Starting from + A partir de - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 + + + year + ano - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 + + + Do you really want to delete this account balance? + Você realmente deseja excluir o saldo desta conta? - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + If a translation is missing, kindly support us in extending it here. + Se faltar uma tradução, por favor, ajude-nos a estendê-la here. - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 + + + The current market price is + O preço de mercado atual é - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 + + + Test + Teste - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 + + + Date Range + Período - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/ui/src/lib/assistant/assistant.html + 130 - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + + Permission + Permissão - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - Open Source Alternative to - Alternativa de software livre ao + + Restricted view + Visualização restrita - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Open Source Alternative to - Alternativa de software livre ao - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - The Open Source Alternative to - A alternativa de software livre ao + + Oops! Could not grant access. + Ops! Não foi possível conceder acesso. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + + Private + Privado - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + + Job Queue + Fila de trabalhos - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + libs/common/src/lib/routes/routes.ts + 46 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + Market data is delayed for + Dados de mercado estão atrasados para - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - open-source-alternative-to - alternativa-de-software-livre-ao + + Investment + Investimento - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Ready to take your investments to the next level? - Ready to take your investments to the next level? + + Absolute Asset Performance + Desempenho absoluto de ativos - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Get Started - Começar + + Asset Performance + Desempenho de ativos - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Switzerland - Switzerland - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 - + + Absolute Currency Performance + Desempenho absoluto da moeda - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Global - Global + + Currency Performance + Desempenho da moeda - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 + + + Absolute Net Performance + Desempenho Líquido Absoluto - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - (Last 24 hours) - (Last 24 hours) + + Net Performance + Desempenho líquido - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - (Last 30 days) - (Last 30 days) + + Week to date + Semana até agora - apps/client/src/app/pages/open/open-page.html - 48 + libs/ui/src/lib/assistant/assistant.component.ts + 344 + + + WTD + WTD - apps/client/src/app/pages/open/open-page.html - 59 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - (Last 90 days) - (Last 90 days) + + Month to date + Do mês até a data - apps/client/src/app/pages/open/open-page.html - 127 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Choose or drop a file here - Choose or drop a file here + + MTD + MTD - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - You are using the Live Demo. - You are using the Live Demo. + + Year to date + No acumulado do ano - apps/client/src/app/app.component.html - 12 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - One-time fee, annual account fees - One-time fee, annual account fees + + View + Visualizar - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Distribution of corporate earnings - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Fee - Fee + + Oops! A data provider is experiencing the hiccups. + Ops! Um provedor de dados está enfrentando problemas. - libs/ui/src/lib/i18n.ts - 37 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Interest - Interest + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Se você se aposentar hoje, poderá sacar per year or per month, based on your total assets of and a withdrawal rate of 4%. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Revenue for lending out money - Revenue for lending out money + + Reset Filters + Redefinir filtros - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + libs/ui/src/lib/assistant/assistant.html + 224 - - Add Tag - Add Tag + + year + ano - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Do you really want to delete this tag? - Do you really want to delete this tag? + + years + anos - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Update tag - Update tag + + Apply Filters + Aplicar filtros - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + libs/ui/src/lib/assistant/assistant.html + 234 - - Add tag - Add tag + + Data Gathering + Coleta de dados - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - Account Cluster Risks - Account Cluster Risks + + General + geral - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Transfer Cash Balance - Transfer Cash Balance + + Cloud + Nuvem - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + libs/common/src/lib/routes/routes.ts + 240 - - Benchmark - Benchmark + + Self-Hosting + Auto-hospedagem - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + libs/common/src/lib/routes/routes.ts + 248 - - Settings - Settings + + self-hosting + auto-hospedagem + kebab-case - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + libs/common/src/lib/routes/routes.ts + 243 - - - From - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + libs/common/src/lib/routes/routes.ts + 246 - - To - To + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Ops! Parece que você está fazendo muitas solicitações. Por favor, diminua um pouco a velocidade. - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - Transfer - Transfer + + My Account + Minha conta - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Membership - Membership + + Active + Ativo - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 + + + Closed + Fechado - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Access - Access - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 - + + Activity + Atividade - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - Find holding... - Find holding... + + Dividend Yield + Rendimento de dividendos - libs/ui/src/lib/assistant/assistant.component.ts - 143 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - No entries... - No entries... - - libs/ui/src/lib/assistant/assistant.html - 62 - + + Execute Job + Executar trabalho - libs/ui/src/lib/assistant/assistant.html - 85 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 - - Asset Profile - Asset Profile + + Priority + Prioridade apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + 64 - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? + + This action is not allowed. + Esta ação não é permitida. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - Search - Search + + Liquidity + Liquidez - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + libs/ui/src/lib/i18n.ts + 48 - - Add Manually - Add Manually + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {activity} other {activities}} - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. + + Buy and sell + Compre e venda - apps/client/src/app/pages/i18n/i18n-page.html - 4 + libs/ui/src/lib/i18n.ts + 8 - - Last All Time High - Last All Time High + + Delete Activities + Excluir atividades - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - User - User + + Internationalization + Internacionalização - apps/client/src/app/components/admin-users/admin-users.html - 29 + libs/common/src/lib/routes/routes.ts + 119 - - Ghostfolio vs comparison table - Ghostfolio vs tabela de comparação + + Do you really want to close your Ghostfolio account? + Você realmente deseja encerrar sua conta Ghostfolio? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Open Source Wealth Management Software - Open Source Wealth Management Software + + Danger Zone + Zona de perigo - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + Close Account + Fechar conta - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. + + By ETF Holding + Por ETF Holding - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Extreme Fear - Extreme Fear + + Approximation based on the top holdings of each ETF + Aproximação baseada nas principais participações de cada ETF - libs/ui/src/lib/i18n.ts - 100 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Extreme Greed - Extreme Greed + + Join now or check out the example account + Cadastre-se agora ou confira a conta de exemplo - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Neutral - Neutral + + Oops! There was an error setting up biometric authentication. + Ops! Ocorreu um erro ao configurar a autenticação biométrica. - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Oops! Could not parse historical data. - Oops! Could not parse historical data. + + Show more + Mostrar mais - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Do you really want to delete this system message? - Do you really want to delete this system message? + + Benchmarks + Referências - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - 50-Day Trend - 50-Day Trend + + Delete Profiles + Excluir perfis - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete these profiles? + Você realmente deseja excluir esses perfis? - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Cash Balances - Cash Balances + + Oops! Could not delete profiles. + Ops! Não foi possível excluir perfis. - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - Starting from - Starting from + + Table + o índice - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 + + + Chart + Gráfico - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - year - year + + Would you like to refine your personal investment strategy? + Você gostaria de refinar seu estratégia de investimento pessoal? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 + apps/client/src/app/pages/public/public-page.html + 211 + + + Alternative + Alternativo - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - Do you really want to delete this account balance? - Do you really want to delete this account balance? + + App + Aplicativo - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - If a translation is missing, kindly support us in extending it here. - If a translation is missing, kindly support us in extending it here. + + Budgeting + Orçamento - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - The current market price is - The current market price is + + Community + Comunidade - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Test - Test + + Family Office + Escritório Familiar - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Date Range - Date Range + + Investor + Investidor - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - Permission - Permission + + Open Source + Código aberto - apps/client/src/app/components/access-table/access-table.component.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 + + + Personal Finance + Finanças Pessoais - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Restricted view - Restricted view - - apps/client/src/app/components/access-table/access-table.component.html - 26 - + + Privacy + Privacidade - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Oops! Could not grant access. - Oops! Could not grant access. + + Software + Programas - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Private - Private + + Tool + Ferramenta - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Job Queue - Job Queue + + User Experience + Experiência do usuário - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 + + + Wealth + Fortuna - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - Market data is delayed for - Market data is delayed for + + Wealth Management + Gestão de patrimônio - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Investment - Investment + + Australia + Austrália - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + libs/ui/src/lib/i18n.ts + 74 + + + Austria + Áustria - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 + libs/ui/src/lib/i18n.ts + 75 + + + Belgium + Bélgica - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + libs/ui/src/lib/i18n.ts + 76 - - Absolute Asset Performance - Absolute Asset Performance + + Bulgaria + Bulgária - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + libs/ui/src/lib/i18n.ts + 78 - - Asset Performance - Asset Performance + + Canada + Canadá - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + libs/ui/src/lib/i18n.ts + 79 - - Absolute Currency Performance - Absolute Currency Performance + + Czech Republic + República Tcheca - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + libs/ui/src/lib/i18n.ts + 80 - - Currency Performance - Currency Performance + + Finland + Finlândia - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + libs/ui/src/lib/i18n.ts + 81 - - Absolute Net Performance - Absolute Net Performance + + France + França - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + libs/ui/src/lib/i18n.ts + 82 - - Net Performance - Net Performance + + Germany + Alemanha - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 + libs/ui/src/lib/i18n.ts + 83 - - Week to date - Week to date + + India + Índia - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 84 - - WTD - WTD + + Italy + Itália - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 85 - - Month to date - Month to date + + Netherlands + Holanda - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 87 - - MTD - MTD + + New Zealand + Nova Zelândia - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 88 - - Year to date - Year to date + + Poland + Polônia - libs/ui/src/lib/assistant/assistant.component.ts - 230 + libs/ui/src/lib/i18n.ts + 89 - - View - View + + Romania + Romênia - apps/client/src/app/components/access-table/access-table.component.html - 23 + libs/ui/src/lib/i18n.ts + 90 + + + South Africa + África do Sul - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + libs/ui/src/lib/i18n.ts + 92 - - Oops! A data provider is experiencing the hiccups. - Oops! A data provider is experiencing the hiccups. + + Thailand + Tailândia - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + libs/ui/src/lib/i18n.ts + 94 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + United States + Estados Unidos - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + libs/ui/src/lib/i18n.ts + 97 - - Reset Filters - Reset Filters + + Error + Erro - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - year - year + + Deactivate + Desativar - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/components/rule/rule.component.html + 72 - - years - years + + Activate + Activate - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/components/rule/rule.component.html + 74 - - Apply Filters - Apply Filters + + Inactive + Inactive - libs/ui/src/lib/assistant/assistant.html - 197 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Data Gathering - Data Gathering + + Cancel + Cancel - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + libs/ui/src/lib/i18n.ts + 9 + + + Close + Close - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + libs/ui/src/lib/i18n.ts + 11 - - General - General + + Yes + Yes - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 32 - - Cloud - Cloud + + Copy link to clipboard + Copy link to clipboard - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + apps/client/src/app/components/access-table/access-table.component.html + 70 + + + Portfolio Snapshot + Portfolio Snapshot - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Self-Hosting - Self-Hosting + + Change with currency effect Change + Change with currency effect Change - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 + + + Performance with currency effect Performance + Performance with currency effect Performance - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - self-hosting - self-hosting + + Threshold Min + Threshold Min - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - FAQ - FAQ + + Threshold Max + Threshold Max - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 + + + Close + Close - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Customize + Customize - apps/client/src/app/core/http-response.interceptor.ts - 103 + apps/client/src/app/components/rule/rule.component.html + 67 - - My Account - My Account + + No auto-renewal. + No auto-renewal. - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Active - Active + + Today + Today - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + apps/client/src/app/pages/public/public-page.html + 24 - - Closed - Closed + + This year + This year - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + apps/client/src/app/pages/public/public-page.html + 42 - - Activity - Activity + + From the beginning + From the beginning - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + apps/client/src/app/pages/public/public-page.html + 60 - - Dividend Yield - Dividend Yield + + Oops! Invalid currency. + Oops! Invalid currency. - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - Execute Job - Execute Job + + This page has been archived. + This page has been archived. - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Priority - Priority + + is Open Source Software + is Open Source Software - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - This action is not allowed. - This action is not allowed. + + is not Open Source Software + is not Open Source Software - apps/client/src/app/core/http-response.interceptor.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Liquidity - Liquidity + + is Open Source Software + is Open Source Software - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + is not Open Source Software + is not Open Source Software - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Buy and sell - Buy and sell + + can be self-hosted + can be self-hosted - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Delete Activities - Delete Activities + + cannot be self-hosted + cannot be self-hosted - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Internationalization - Internationalization + + can be self-hosted + can be self-hosted - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Do you really want to close your Ghostfolio account? - Do you really want to close your Ghostfolio account? + + cannot be self-hosted + cannot be self-hosted - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Danger Zone - Danger Zone + + can be used anonymously + can be used anonymously - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Close Account - Close Account + + cannot be used anonymously + cannot be used anonymously - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - By ETF Holding - By ETF Holding + + can be used anonymously + can be used anonymously - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Approximation based on the top holdings of each ETF - Approximation based on the top holdings of each ETF + + cannot be used anonymously + cannot be used anonymously - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Join now or check out the example account - Join now or check out the example account + + offers a free plan + offers a free plan - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Oops! There was an error setting up biometric authentication. - Oops! There was an error setting up biometric authentication. + + does not offer a free plan + does not offer a free plan - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Show more - Show more + + offers a free plan + offers a free plan - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Benchmarks - Benchmarks + + does not offer a free plan + does not offer a free plan - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Delete Profiles - Delete Profiles + + Oops! Could not find any assets. + Oops! Could not find any assets. - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Do you really want to delete these profiles? - Do you really want to delete these profiles? + + Data Providers + Data Providers - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Oops! Could not delete profiles. - Oops! Could not delete profiles. + + Set API key + Set API key - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - Table - Table + + Get access to 80’000+ tickers from over 50 exchanges + Get access to 80’000+ tickers from over 50 exchanges - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + libs/ui/src/lib/i18n.ts + 24 - - Chart - Chart + + Ukraine + Ukraine - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + libs/ui/src/lib/i18n.ts + 95 - - Would you like to refine your personal investment strategy? - Would you like to refine your personal investment strategy? + + Join now + Join now - apps/client/src/app/pages/public/public-page.html - 211 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Alternative - Alternative + + Glossary + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - App - App - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 293 - - Budgeting - Budgeting + + Guides + Guides - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Community - Community - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + libs/common/src/lib/routes/routes.ts + 301 - - Family Office - Family Office + + guides + guides + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + libs/common/src/lib/routes/routes.ts + 296 - - - Investor - Investor - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + libs/common/src/lib/routes/routes.ts + 299 - - Open Source - Open Source + + glossary + glossary + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + libs/common/src/lib/routes/routes.ts + 288 - - - Personal Finance - Personal Finance - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + libs/common/src/lib/routes/routes.ts + 291 - - Privacy - Privacy + + Threshold range + Threshold range - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Software - Software + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Tool - Tool + + Economic Market Cluster Risks + Economic Market Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - User Experience - User Experience + + of + of - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Wealth - Wealth + + daily requests + daily requests - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Wealth Management - Wealth Management + + Remove API key + Remove API key - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Australia - Australia + + Do you really want to delete the API key? + Do you really want to delete the API key? - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Austria - Austria + + Please enter your Ghostfolio API key: + Please enter your Ghostfolio API key: - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Belgium - Belgium + + API Requests Today + API Requests Today - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Bulgaria - Bulgaria + + Could not generate an API key + Could not generate an API key - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Canada - Canada + + Set this API key in your self-hosted environment: + Set this API key in your self-hosted environment: - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Czech Republic - Czech Republic + + Ghostfolio Premium Data Provider API Key + Ghostfolio Premium Data Provider API Key - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Finland - Finland + + Do you really want to generate a new API key? + Do you really want to generate a new API key? - libs/ui/src/lib/i18n.ts - 81 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - France - France + + Tag + Tag - libs/ui/src/lib/i18n.ts - 82 + libs/ui/src/lib/assistant/assistant.html + 194 - - Germany - Germany + + API Key + API Key - libs/ui/src/lib/i18n.ts - 83 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - India - India + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - libs/ui/src/lib/i18n.ts - 84 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - Italy - Italy - - libs/ui/src/lib/i18n.ts - 85 - - - - Netherlands - Netherlands - - libs/ui/src/lib/i18n.ts - 87 - - - - New Zealand - New Zealand - - libs/ui/src/lib/i18n.ts - 88 - - - - Poland - Poland - - libs/ui/src/lib/i18n.ts - 89 - - - - Romania - Romania - - libs/ui/src/lib/i18n.ts - 90 - - - - South Africa - South Africa - - libs/ui/src/lib/i18n.ts - 92 - - - - Thailand - Thailand - - libs/ui/src/lib/i18n.ts - 94 - - - - United States - United States - - libs/ui/src/lib/i18n.ts - 97 - - - - Error - Error - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 - - - - Deactivate - Deactivate - - apps/client/src/app/components/rule/rule.component.html - 72 - - - - Activate - Activate - - apps/client/src/app/components/rule/rule.component.html - 74 - - - - Inactive - Inactive + + out of + out of apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 - - - - Cancel - Cancel - - libs/ui/src/lib/i18n.ts - 9 - - - - Close - Close - - libs/ui/src/lib/i18n.ts - 11 - - - - Yes - Yes - - libs/ui/src/lib/i18n.ts - 32 - - - - Copy link to clipboard - Copy link to clipboard - - apps/client/src/app/components/access-table/access-table.component.html - 70 - - - - Portfolio Snapshot - Portfolio Snapshot - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 - - - - Change with currency effect Change - Change with currency effect Change - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 - - - - Performance with currency effect Performance - Performance with currency effect Performance - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 - - - - Threshold Min - Threshold Min - - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 - - - - Threshold Max - Threshold Max - - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 - - - - Close - Close - - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 - - - - Customize - Customize - - apps/client/src/app/components/rule/rule.component.html - 67 - - - - No auto-renewal. - No auto-renewal. - - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 - - - - Today - Today - - apps/client/src/app/pages/public/public-page.html - 24 - - - - This year - This year - - apps/client/src/app/pages/public/public-page.html - 42 + 56 - - From the beginning - From the beginning + + rules align with your portfolio. + rules align with your portfolio. - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - Oops! Invalid currency. - Oops! Invalid currency. + + Save + Save - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - This page has been archived. - This page has been archived. + + Asset Class Cluster Risks + Asset Class Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - is Open Source Software - is Open Source Software + + Me + Me - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - is not Open Source Software - is not Open Source Software + + Received Access + Received Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - is Open Source Software - is Open Source Software + + Please enter your Ghostfolio API key. + Please enter your Ghostfolio API key. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is not Open Source Software - is not Open Source Software + + AI prompt has been copied to the clipboard + AI prompt has been copied to the clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - can be self-hosted - can be self-hosted + + Link has been copied to the clipboard + O link foi copiado para a área de transferência - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - cannot be self-hosted - cannot be self-hosted + + Regional Market Cluster Risks + Regional Market Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - can be self-hosted - can be self-hosted + + Lazy + Lazy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - cannot be self-hosted - cannot be self-hosted + + Instant + Instant - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - can be used anonymously - can be used anonymously + + Default Market Price + Preço de mercado padrão - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - cannot be used anonymously - cannot be used anonymously + + Mode + Mode - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - can be used anonymously - can be used anonymously + + Selector + Selector - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - cannot be used anonymously - cannot be used anonymously + + HTTP Request Headers + HTTP Request Headers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - offers a free plan - offers a free plan + + end of day + end of day - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - does not offer a free plan - does not offer a free plan + + real-time + real-time - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - offers a free plan - offers a free plan + + Open Duck.ai + Open Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - does not offer a free plan - does not offer a free plan + + Create + Criar - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - Oops! Could not find any assets. - Oops! Could not find any assets. + + Market Data + Market Data - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - Data Providers - Data Providers + + Change + Mudar - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - Set API key - Set API key + + Performance + Performance - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Get access to 80’000+ tickers from over 50 exchanges - Get access to 80’000+ tickers from over 50 exchanges - libs/ui/src/lib/i18n.ts - 24 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Ukraine - Ukraine + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt - libs/ui/src/lib/i18n.ts - 95 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Join now - Join now + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Glossary - Glossary + + Armenia + Armenia - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + libs/ui/src/lib/i18n.ts + 73 + + + British Virgin Islands + British Virgin Islands - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + libs/ui/src/lib/i18n.ts + 77 - - Guides - Guides + + Singapore + Singapore - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + libs/ui/src/lib/i18n.ts + 91 + + + Terms and Conditions + Termos e Condições - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - guides - guides - snake-case + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + I understand that if I lose my security token, I cannot recover my account - apps/client/src/app/pages/resources/resources-page-routing.module.ts + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 28 - - glossary - glossary - snake-case + + Continue + Continue - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - Threshold range - Threshold range + + Security token + Security token - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Economic Market Cluster Risks - Economic Market Cluster Risks + + Do you really want to generate a new security token for this user? + Do you really want to generate a new security token for this user? - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - of - of + + Generate Security Token + Generate Security Token - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - daily requests - daily requests + + United Kingdom + United Kingdom - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/ui/src/lib/i18n.ts + 96 - - Remove API key - Remove API key + + Terms of Service + Termos de Serviço - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + apps/client/src/app/app.component.html + 112 - - Do you really want to delete the API key? - Do you really want to delete the API key? + + terms-of-service + termos-de-servico + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 212 + + + libs/common/src/lib/routes/routes.ts + 215 - - Please enter your Ghostfolio API key: - Please enter your Ghostfolio API key: + + Terms of Service + Termos de Serviço - apps/client/src/app/pages/api/api-page.component.ts - 41 + libs/common/src/lib/routes/routes.ts + 217 - - I have an API key - I have an API key + + Terms of Service + Termos de Serviço - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - API Requests Today - API Requests Today + + and I agree to the Terms of Service. + and I agree to the Terms of Service. - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - Could not generate an API key - Could not generate an API key + + () is already in use. + () is already in use. - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Set this API key in your self-hosted environment: - Set this API key in your self-hosted environment: + + An error occurred while updating to (). + An error occurred while updating to (). - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Ghostfolio Premium Data Provider API Key - Ghostfolio Premium Data Provider API Key + + Apply + Apply - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Do you really want to generate a new API key? - Do you really want to generate a new API key? + + with API access for + with API access for - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Tag - Tag + + Gather Recent Historical Market Data + Gather Recent Historical Market Data - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - API Key - API Key + + Gather All Historical Market Data + Gather All Historical Market Data - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + + Gather Historical Market Data + Gather Historical Market Data - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - out of - out of + + Data Gathering is off + Data Gathering is off - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - rules align with your portfolio. - rules align with your portfolio. + + Performance Calculation + Performance Calculation - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - Save - Save + + someone + someone - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Asset Class Cluster Risks - Asset Class Cluster Risks + + Add asset to watchlist + Add asset to watchlist - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - Me - Me + + Watchlist + Watchlist - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Received Access - Received Access - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + apps/client/src/app/pages/features/features-page.html + 197 - - Please enter your Ghostfolio API key. - Please enter your Ghostfolio API key. + + Watchlist + Watchlist - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + libs/common/src/lib/routes/routes.ts + 110 - - AI prompt has been copied to the clipboard - AI prompt has been copied to the clipboard + + Do you really want to delete this item? + Do you really want to delete this item? - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - Link has been copied to the clipboard - Link has been copied to the clipboard + + Log out + Log out - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/header/header.component.html + 329 - - Early Access - Early Access + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Regional Market Cluster Risks - Regional Market Cluster Risks - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + apps/client/src/app/components/markets/markets.html + 52 - - Lazy - Lazy + + changelog + changelog + kebab-case - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/common/src/lib/routes/routes.ts + 180 - - - Instant - Instant - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + libs/common/src/lib/routes/routes.ts + 183 - - Default Market Price - Default Market Price + + Demo user account has been synced. + Demo user account has been synced. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Mode - Mode + + Sync Demo User Account + Sync Demo User Account - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Selector - Selector + + Emergency Fund: Set up + Emergency Fund: Set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - HTTP Request Headers - HTTP Request Headers + + No emergency fund has been set up + No emergency fund has been set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - end of day - end of day + + An emergency fund has been set up + An emergency fund has been set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - real-time - real-time + + Fee Ratio + Fee Ratio - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - Open Duck.ai - Open Duck.ai + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Create - Create + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Market Data - Market Data + + Name + Nome - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Change - Change + + Find holding or page... + Encontrar holding ou página... - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Performance - Performance + + Quick Links + Links rápidos - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 43 + + + Asset Profiles + Perfis de ativos - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/ui/src/lib/assistant/assistant.html + 99 - - Copy portfolio data to clipboard for AI prompt - Copy portfolio data to clipboard for AI prompt + + Live Demo + Live Demo - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 231 - - Copy AI prompt to clipboard for analysis - Copy AI prompt to clipboard for analysis + + Open Source Alternative to + Alternativa de software livre ao - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + libs/common/src/lib/routes/routes.ts + 326 - - Armenia - Armenia + + Single Account + Single Account - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - British Virgin Islands - British Virgin Islands + + Your net worth is managed by a single account + Your net worth is managed by a single account - libs/ui/src/lib/i18n.ts - 77 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - Singapore - Singapore + + Your net worth is managed by ${accountsLength} accounts + Your net worth is managed by ${accountsLength} accounts - libs/ui/src/lib/i18n.ts - 91 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Terms and Conditions - Terms and Conditions + + Holdings + Holdings - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/ui/src/lib/assistant/assistant.html + 69 - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Please keep your security token safe. If you lose it, you will not be able to recover your account. + + personal-finance-tools + personal-finance-tools + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 312 - - - I understand that if I lose my security token, I cannot recover my account - I understand that if I lose my security token, I cannot recover my account - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 315 - - - Continue - Continue - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 323 - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Here is your security token. It is only visible once, please store and keep it in a safe place. + + markets + markets + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 304 + + + libs/common/src/lib/routes/routes.ts + 307 - - Security token - Security token + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Do you really want to generate a new security token for this user? - Do you really want to generate a new security token for this user? + + Get Access + Get Access - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Generate Security Token - Generate Security Token + + Learn more + Learn more - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - United Kingdom - United Kingdom + + new + new - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms of Service - Terms of Service + + Limited Offer! + Limited Offer! - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - terms-of-service - terms-of-service - snake-case + + Get extra + Get extra - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Available - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Unavailable - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + new - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Terms of Service - Terms of Service + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - Terms of Service + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - and I agree to the Terms of Service. - and I agree to the Terms of Service. + + Equity + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - () is already in use. - () is already in use. + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - An error occurred while updating to (). - An error occurred while updating to (). + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Apply - Apply + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - with API access for - with API access for + + Fixed Income + Fixed Income - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather Recent Historical Market Data - Gather Recent Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather All Historical Market Data - Gather All Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Historical Market Data - Gather Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off - Data Gathering is off + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation - Performance Calculation + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone - someone + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist - Add asset to watchlist + + Investment + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist - Watchlist + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - Watchlist + + start + start + kebab-case - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - Get Early Access + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - Do you really want to delete this item? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - Log out + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 400bed697..7349b99f9 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1,2209 +1,1933 @@ - + about hakkinda - snake-case + kebab-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 214 + + + faq + sss + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 245 + + + features + oezellikler + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/about/about-page.component.ts - 84 + libs/common/src/lib/routes/routes.ts + 255 + + + license + lisans + kebab-case - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + piyasalar + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + fiyatlandirma + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 270 + + + privacy-policy + gizlilik-politikasi + kebab-case - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + libs/common/src/lib/routes/routes.ts + 207 + + + register + kayit-ol + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/routes/routes.ts + 280 - - faq - sss - snake-case + + resources + kaynaklar + kebab-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 322 - - features - oezellikler - snake-case - - apps/client/src/app/app.component.ts - 83 - + + Personal Finance + Kişisel Finans - apps/client/src/app/components/header/header.component.ts - 83 + apps/client/src/app/app.component.html + 57 + + + Markets + Piyasalar - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/components/header/header.component.html + 408 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/components/markets/markets.html + 2 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/resources/markets/resources-markets.component.html + 2 + + + Resources + Kaynaklar - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/app.component.html + 64 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/components/header/header.component.html + 88 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/components/header/header.component.html + 301 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + apps/client/src/app/pages/resources/overview/resources-overview.component.html + 4 + + + About + Hakkında - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/components/header/header.component.html + 123 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/components/header/header.component.html + 374 + + + Blog + Blog - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/app.component.html + 73 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - - - license - lisans - snake-case - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - - - markets - piyasalar - snake-case - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - - - pricing - fiyatlandirma - snake-case - apps/client/src/app/app.component.ts - 85 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 183 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html + 189 - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html + 167 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog + Değişiklik Günlüğü - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/app.component.html + 77 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features + Özellikler - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/app.component.html + 79 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/components/header/header.component.html + 361 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 - - - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + apps/client/src/app/pages/features/features-page.html + 5 + + + Frequently Asked Questions (FAQ) + Sıkça Sorulan Sorular (SSS) - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/app.component.html + 83 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/pages/about/overview/about-overview-page.html + 156 + + + License + Lisans - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/app.component.html + 89 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/pages/about/license/license-page.html + 4 + + + Pricing + Fiyatlandırma - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/app.component.html + 99 - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/components/header/header.component.html + 105 - - - privacy-policy - gizlilik-politikasi - snake-case - apps/client/src/app/app.component.ts - 76 + apps/client/src/app/components/header/header.component.html + 313 - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/components/header/header.component.html + 389 - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 287 - - register - kayit-ol - snake-case - - apps/client/src/app/app.component.ts - 86 - + + Privacy Policy + Gizlilik Politikası - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/app.component.html + 105 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 + + + Community + Topluluk - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/app.component.html + 130 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 85 - apps/client/src/app/pages/features/features-page.component.ts - 28 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 94 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 98 - - - resources - kaynaklar - snake-case - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 102 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 106 - apps/client/src/app/components/header/header.component.ts - 92 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 118 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/pages/features/features-page.html + 276 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/app.component.html + 221 + + + Alias + Takma Ad - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + Grantee + Hibe Alan / Alıcı - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + Type + Tip - apps/client/src/app/pages/resources/overview/resources-overview.component.ts + apps/client/src/app/components/admin-jobs/admin-jobs.html 31 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 15 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + libs/ui/src/lib/activities-table/activities-table.component.html + 161 - - Personal Finance - Kişisel Finans + + Details + Ayrıntılar - apps/client/src/app/app.component.html - 57 + apps/client/src/app/components/access-table/access-table.component.html + 33 - - Markets - Piyasalar - - apps/client/src/app/app.component.html - 61 - - - apps/client/src/app/components/header/header.component.html - 394 - + + Revoke + Geri Al - apps/client/src/app/components/home-market/home-market.html - 2 + apps/client/src/app/components/access-table/access-table.component.html + 75 + + + Do you really want to revoke this granted access? + Bu erişim iznini geri almayı gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/markets/resources-markets.component.html - 2 + apps/client/src/app/components/access-table/access-table.component.ts + 79 - - Resources - Piyasalar + + Cash Balance + Nakit Bakiye - apps/client/src/app/app.component.html - 64 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 47 - apps/client/src/app/components/header/header.component.html - 82 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - apps/client/src/app/components/header/header.component.html - 287 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity + Menkul Kıymet - apps/client/src/app/pages/resources/overview/resources-overview.component.html - 4 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 58 - - About - Hakkında + + Platform + Platform - apps/client/src/app/app.component.html - 70 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 67 - apps/client/src/app/components/header/header.component.html - 117 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/components/header/header.component.html - 360 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 - - Blog - Blog + + Activities + İşlemler - apps/client/src/app/app.component.html - 73 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 92 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 184 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 184 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 205 - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 184 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 45 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 196 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 224 - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Name + Ad - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 89 - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 287 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 253 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 22 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 46 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 22 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 139 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + libs/ui/src/lib/activities-table/activities-table.component.html + 138 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html - 167 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 16 - apps/client/src/app/pages/blog/blog-page.html - 5 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 - - Changelog - Değişiklik Günlüğü - - apps/client/src/app/app.component.html - 77 - + + Total + Toplam - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 - - Features - Özellikler + + Currency + Para Birimi - apps/client/src/app/app.component.html - 79 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/components/header/header.component.html - 347 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 185 - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 294 - - - Frequently Asked Questions (FAQ) - Sıkça Sorulan Sorular (SSS) - apps/client/src/app/app.component.html - 83 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 46 - apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - - - License - Lisans - apps/client/src/app/app.component.html - 89 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 145 - apps/client/src/app/pages/about/license/license-page.html - 4 + libs/ui/src/lib/activities-table/activities-table.component.html + 276 - - Pricing - Fiyatlandırma - - apps/client/src/app/app.component.html - 99 - + + Value + Değer - apps/client/src/app/components/header/header.component.html - 99 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/components/header/header.component.html - 299 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/components/header/header.component.html - 375 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 287 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 205 - - - Privacy Policy - Gizlilik Politikası - apps/client/src/app/app.component.html - 105 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 208 - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 211 - - - Community - Topluluk - apps/client/src/app/app.component.html - 130 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 85 + libs/ui/src/lib/activities-table/activities-table.component.html + 257 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + libs/ui/src/lib/activities-table/activities-table.component.html + 293 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 25 - apps/client/src/app/components/user-account-settings/user-account-settings.html + libs/ui/src/lib/top-holdings/top-holdings.component.html 102 + + + Edit + Düzenle - apps/client/src/app/components/user-account-settings/user-account-settings.html - 106 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 268 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 67 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + libs/ui/src/lib/activities-table/activities-table.component.html + 430 + + + Delete + Sil - apps/client/src/app/pages/features/features-page.html - 276 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 289 - - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. - apps/client/src/app/app.component.html - 221 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 290 - - - Alias - Takma Ad - apps/client/src/app/components/access-table/access-table.component.html - 4 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-overview/admin-overview.html + 129 - - - Grantee - Hibe Alan / Alıcı - apps/client/src/app/components/access-table/access-table.component.html - 11 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 85 - - - Type - Tip - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 78 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 15 + libs/ui/src/lib/activities-table/activities-table.component.html + 457 - libs/ui/src/lib/activities-table/activities-table.component.html - 161 + libs/ui/src/lib/benchmark/benchmark.component.html + 169 - - Details - Ayrıntılar + + Do you really want to delete this account? + Bu hesabı silmeyi gerçekten istiyor musunuz? - apps/client/src/app/components/access-table/access-table.component.html - 33 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 107 - - Revoke - Geri Al + + Symbol + Sembol - apps/client/src/app/components/access-table/access-table.component.html + apps/client/src/app/components/admin-jobs/admin-jobs.html + 46 + + + apps/client/src/app/components/admin-market-data/admin-market-data.html 75 - - - Do you really want to revoke this granted access? - Bu erişim iznini geri almayı gerçekten istiyor musunuz? - apps/client/src/app/components/access-table/access-table.component.ts - 79 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 153 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 39 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 308 - - Cash Balance - Nakit Bakiye + + Data Source + Veri Kaynağı - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 47 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 55 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 136 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 106 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 163 - - - Equity - Menkul Kıymet - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 155 - - Platform - Platform + + Attempts + Deneme - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 67 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 83 + + + Created + Oluşturuldu - apps/client/src/app/components/accounts-table/accounts-table.component.html - 86 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 92 + + + Finished + Tamamlandı - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 101 - - Activities - İşlemler + + Status + Durum - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 63 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 110 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + apps/client/src/app/components/admin-settings/admin-settings.component.html 92 + + + Delete Jobs + İşleri Sil - apps/client/src/app/components/accounts-table/accounts-table.component.html - 119 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 151 + + + Asset Profiles + Varlık Profili - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 205 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 + + + Historical Market Data + Tarihsel Piyasa Verisi - apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 - apps/client/src/app/components/admin-users/admin-users.html - 135 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 85 + + + View Data + Veri Gör - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 166 + + + View Stacktrace + Hata İzini Görüntüle - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 173 + + + Delete Job + İşleri Sil - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 180 - - Name - Ad + + Details for + Detaylar - apps/client/src/app/components/accounts-table/accounts-table.component.html - 43 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 2 + + + Date + Tarih - apps/client/src/app/components/admin-market-data/admin-market-data.html - 89 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 161 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 287 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + libs/ui/src/lib/activities-table/activities-table.component.html + 170 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 15 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 6 + + + Market Price + Piyasa Fiyatı - apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 133 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 109 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 15 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 26 + + + Cancel + İptal - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 146 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 544 - libs/ui/src/lib/activities-table/activities-table.component.html - 138 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 56 - libs/ui/src/lib/benchmark/benchmark.component.html - 4 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 38 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 16 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 15 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 88 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - - - Total - Toplam - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 - - - Currency - Para Birimi - apps/client/src/app/components/accounts-table/accounts-table.component.html + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 65 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 338 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 294 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 48 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html 46 + + + Save + Kaydet - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 551 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 63 - libs/ui/src/lib/activities-table/activities-table.component.html - 276 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 45 - - - Value - Değer - apps/client/src/app/components/accounts-table/accounts-table.component.html - 171 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 206 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 22 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 53 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 135 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 - - - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + 345 - libs/ui/src/lib/activities-table/activities-table.component.html - 257 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 48 + + + Currencies + Para Birimleri - libs/ui/src/lib/activities-table/activities-table.component.html - 293 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 86 + + + ETFs without Countries + Ülkesi Olmayan ETF’ler - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 91 + + + ETFs without Sectors + Sektörü Olmayan ETF’ler - libs/ui/src/lib/top-holdings/top-holdings.component.html - 25 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 96 + + + Filter by... + Filtrele... - libs/ui/src/lib/top-holdings/top-holdings.component.html - 102 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 330 - - Edit - Düzenle + + Asset Class + Varlık Sınıfı - apps/client/src/app/components/accounts-table/accounts-table.component.html - 278 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 115 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 268 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 235 - libs/ui/src/lib/activities-table/activities-table.component.html - 430 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 290 - - - Delete - Sil - apps/client/src/app/components/accounts-table/accounts-table.component.html - 289 + libs/ui/src/lib/assistant/assistant.html + 205 + + + Asset Sub Class + Varlık Alt Sınıfı apps/client/src/app/components/admin-market-data/admin-market-data.html - 290 + 124 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 223 - apps/client/src/app/components/admin-overview/admin-overview.html - 129 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 317 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 244 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 + + + First Activity + İlk İşlem - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 148 - libs/ui/src/lib/activities-table/activities-table.component.html - 457 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 196 - libs/ui/src/lib/benchmark/benchmark.component.html - 155 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 212 - - - Do you really want to delete this account? - Bu hesabı silmeyi gerçekten istiyor musunuz? - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 107 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 - - Symbol - Sembol - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 46 - + + Activities Count + İşlem Sayısı apps/client/src/app/components/admin-market-data/admin-market-data.html - 75 + 157 + + + Historical Data + Tarihsel Veri - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 153 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 166 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 39 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 44 + + + Sectors Count + Sektör Sayısı - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 175 - - Data Source - Veri Kaynağı + + Countries Count + Ülke Sayısı - apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 184 + + + Gather Profile Data + Profil Verisini Getir apps/client/src/app/components/admin-market-data/admin-market-data.html - 106 + 235 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 163 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 44 - - Attempts - Deneme + + Refresh + Yenile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 83 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 17 - - Created - Oluşturuldu + + Sector + Sektör - apps/client/src/app/components/admin-jobs/admin-jobs.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 240 - - - Finished - Tamamlandı - apps/client/src/app/components/admin-jobs/admin-jobs.html - 101 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 261 - - Status - Durum + + Country + Ülke - apps/client/src/app/components/admin-jobs/admin-jobs.html - 110 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 251 - - - Delete Jobs - İşleri Sil - apps/client/src/app/components/admin-jobs/admin-jobs.html - 151 + apps/client/src/app/components/admin-users/admin-users.html + 77 - - - Asset Profiles - Varlık Profili - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 271 - - Historical Market Data - Tarihsel Piyasa Verisi - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 - + + Sectors + Sektörler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 85 + 257 - - - View Data - Veri Gör - apps/client/src/app/components/admin-jobs/admin-jobs.html - 166 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 484 - - - View Stacktrace - Hata İzini Görüntüle - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 277 - - - Delete Job - İşleri Sil - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/pages/public/public-page.html + 106 - - Details for - Detaylar + + Countries + Ülkeler - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 2 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 267 - - - Date - Tarih - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 495 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 289 + + + Symbol Mapping + Sembol Eşleştirme - libs/ui/src/lib/activities-table/activities-table.component.html - 170 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 + + + Scraper Configuration + Veri Toplayıcı Yapılandırması - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 6 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 377 - - Market Price - Piyasa Fiyatı + + Note + Not - apps/client/src/app/components/admin-market-data/admin-market-data.html - 133 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 520 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 26 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 275 - - Cancel - İptal + + Add Asset Profile + Varlık Profili Ekle - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 146 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 + + + Name, symbol or ISIN + Ad, sembol ya da ISIN apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 544 + 117 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 56 - - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 - - - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 25 + 29 apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 15 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 65 + 10 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + 124 + + + Do you really want to delete this coupon? + Bu kuponu gerçekten silmek istiyor musunuz? - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 48 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 142 + + + Do you really want to flush the cache? + Önbelleği temizlemeyi gerçekten istiyor musunuz? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 179 - - Save - Kaydet + + Please set your system message: + Lütfen sistem mesajınızı belirleyin: - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 551 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 199 + + + User Count + Kullanıcı Sayısı - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 63 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + Activity Count + İşlem Sayısı - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + per User + Kullanıcı başına - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 32 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + Add Currency + Para Birimi Ekle - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html 22 + + + Tags + Etiketler - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 135 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 201 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 4 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 16 + + + User Signup + Kullanıcı Kaydı - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Read-only Mode + Salt okunur mod - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + apps/client/src/app/components/admin-overview/admin-overview.html 48 - - Currencies - Para Birimleri + + System Message + Sistem Mesajı - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 86 + apps/client/src/app/components/admin-overview/admin-overview.html + 72 - - ETFs without Countries - Ülkesi Olmayan ETF’ler + + Set Message + Mesaj Belirle - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + apps/client/src/app/components/admin-overview/admin-overview.html + 94 - - ETFs without Sectors - Sektörü Olmayan ETF’ler - - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 - - - - Filter by... - Filtrele... + + Coupons + Kupon - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 330 + apps/client/src/app/components/admin-overview/admin-overview.html + 102 - - Asset Class - Varlık Sınıfı - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 115 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 214 - + + Add + Ekle - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 304 + apps/client/src/app/components/admin-overview/admin-overview.html + 162 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping + Genel Ayarlar - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + Flush Cache + Önbelleği temizle - libs/ui/src/lib/assistant/assistant.html - 168 + apps/client/src/app/components/admin-overview/admin-overview.html + 186 - - Asset Sub Class - Varlık Alt Sınıfı + + Add Platform + Platform Ekle - apps/client/src/app/components/admin-market-data/admin-market-data.html - 124 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 8 + + + Url + Url apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 223 + 455 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 317 + 507 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 38 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - First Activity - İlk İşlem + + Accounts + Hesaplar - apps/client/src/app/components/admin-market-data/admin-market-data.html - 148 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 52 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + apps/client/src/app/components/admin-users/admin-users.html + 114 + + + apps/client/src/app/components/header/header.component.html + 58 + + + apps/client/src/app/components/header/header.component.html + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + 368 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + apps/client/src/app/pages/accounts/accounts-page.html + 4 - - Activities Count - İşlem Sayısı + + Do you really want to delete this platform? + Bu platformu silmeyi gerçekten istiyor musunuz? - apps/client/src/app/components/admin-market-data/admin-market-data.html - 157 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 87 - - Historical Data - Tarihsel Veri + + Update platform + Platformu Güncelle - apps/client/src/app/components/admin-market-data/admin-market-data.html - 166 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 + + + Add platform + Platform Ekle - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 - - Sectors Count - Sektör Sayısı + + Platforms + Platformlar - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 195 - - Countries Count - Ülke Sayısı + + Do you really want to delete this user? + Bu kullanıcıyı silmeyi gerçekten istiyor musunuz? - apps/client/src/app/components/admin-market-data/admin-market-data.html - 184 + apps/client/src/app/components/admin-users/admin-users.component.ts + 142 - - Gather Profile Data - Profil Verisini Getir + + User + Kullanıcı - apps/client/src/app/components/admin-market-data/admin-market-data.html - 235 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 31 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 44 + apps/client/src/app/components/header/header.component.html + 231 - - Refresh - Yenile + + Registration + Kayıt - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 17 + apps/client/src/app/components/admin-users/admin-users.html + 97 - - Sector - Sektör - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 240 - + + Engagement per Day + Günlük etkileşim - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + apps/client/src/app/components/admin-users/admin-users.html + 157 - - Country - Ülke + + Last Request + Son Talep - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 251 + apps/client/src/app/components/admin-users/admin-users.html + 202 + + + Impersonate User + Kullanıcıyı Taklit Et apps/client/src/app/components/admin-users/admin-users.html - 77 + 239 + + + Delete User + Kullanıcıyı Sil - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + apps/client/src/app/components/admin-users/admin-users.html + 260 - - Sectors - Sektörler + + Performance + Performans - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 257 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 484 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 + + + Compare with... + Karşılaştır... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 + + + Manage Benchmarks + Karşılaştırma Ölçütlerini Yönet - apps/client/src/app/pages/public/public-page.html - 106 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 - - Countries - Ülkeler + + Portfolio + Portföy - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 120 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 495 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - - - Symbol Mapping - Sembol Eşleştirme - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 352 + libs/common/src/lib/routes/routes.ts + 151 - - Scraper Configuration - Veri Toplayıcı Yapılandırması + + Benchmark + Karşılaştırma Ölçütü - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 377 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 132 - - Note - Not + + Current Market Mood + Piyasa Psikolojisi - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 520 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 + + + Overview + Genel Bakış - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 + apps/client/src/app/components/header/header.component.html + 30 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + apps/client/src/app/components/header/header.component.html + 248 - - - Add Asset Profile - Varlık Profili Ekle - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 - - Name, symbol or ISIN - Ad, sembol ya da ISIN + + Portfolio + Portföy - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + apps/client/src/app/components/header/header.component.html + 44 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 29 + apps/client/src/app/components/header/header.component.html + 258 + + + Admin Control + Yönetici Kontrolü - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 10 + apps/client/src/app/components/header/header.component.html + 74 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + apps/client/src/app/components/header/header.component.html + 289 - - Do you really want to delete this coupon? - Önbelleği temizlemeyi gerçekten istiyor musunuz? + + Me + Ben - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + apps/client/src/app/components/header/header.component.html + 213 - - Do you really want to flush the cache? - Önbelleği temizlemeyi gerçekten istiyor musunuz + + My Ghostfolio + Ghostfolio’m - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + apps/client/src/app/components/header/header.component.html + 277 - - Please set your system message: - Lütfen sistem mesajınızı belirleyin: + + About Ghostfolio + Ghostfolio Hakkında - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + apps/client/src/app/components/header/header.component.html + 326 - - - User Count - Kullanıcı Sayısı - apps/client/src/app/components/admin-overview/admin-overview.html - 13 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 - - Activity Count - İşlem Sayısı + + Sign in + Giriş - apps/client/src/app/components/admin-overview/admin-overview.html - 19 + apps/client/src/app/components/header/header.component.html + 422 - - - per User - Kullanıcı başına - apps/client/src/app/components/admin-overview/admin-overview.html - 28 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 - - Add Currency - Para Birimi Ekle + + Get started + Haydi Başlayalım - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 22 + apps/client/src/app/components/header/header.component.html + 432 - - Tags - Etiketler + + Sign in + Giriş - apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + apps/client/src/app/components/header/header.component.ts + 237 - libs/ui/src/lib/tags-selector/tags-selector.component.html - 4 + libs/common/src/lib/routes/routes.ts + 81 - libs/ui/src/lib/tags-selector/tags-selector.component.html - 16 + libs/common/src/lib/routes/routes.ts + 157 - - User Signup - Kullanıcı Kaydı + + Oops! Incorrect Security Token. + Hay Allah! Güvenlik anahtarı yanlış. - apps/client/src/app/components/admin-overview/admin-overview.html - 34 + apps/client/src/app/components/header/header.component.ts + 252 - - - Read-only Mode - Salt okunur mod - apps/client/src/app/components/admin-overview/admin-overview.html - 48 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 - - - System Message - Sistem Mesajı - apps/client/src/app/components/admin-overview/admin-overview.html - 72 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 - - Set Message - Mesaj Belirle + + Manage Activities + İşlemleri Yönet - apps/client/src/app/components/admin-overview/admin-overview.html - 94 + apps/client/src/app/components/home-holdings/home-holdings.html + 62 - - Coupons - Kupon + + Fear + Korku - apps/client/src/app/components/admin-overview/admin-overview.html - 102 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - - - Add - Ekle - apps/client/src/app/components/admin-overview/admin-overview.html - 162 + apps/client/src/app/components/markets/markets.component.ts + 49 - libs/ui/src/lib/account-balances/account-balances.component.html - 93 + libs/ui/src/lib/i18n.ts + 102 - - Housekeeping - Genel Ayarlar + + Greed + Açgözlülük - apps/client/src/app/components/admin-overview/admin-overview.html - 170 + apps/client/src/app/components/home-market/home-market.component.ts + 29 - - - Flush Cache - Önbelleği temizle - apps/client/src/app/components/admin-overview/admin-overview.html - 174 + apps/client/src/app/components/markets/markets.component.ts + 50 - - - Add Platform - Platform Ekle - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + libs/ui/src/lib/i18n.ts + 103 - - Url - Url + + Last Days + Son Gün - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 455 + apps/client/src/app/components/home-market/home-market.html + 7 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 507 + apps/client/src/app/components/markets/markets.html + 17 + + + Welcome to Ghostfolio + Ghostfolio’ya Hoşgeldiniz. - apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 - - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 25 - - - - Accounts - Hesaplar - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 - - - apps/client/src/app/components/admin-users/admin-users.html - 114 - - - apps/client/src/app/components/header/header.component.html - 54 - - - apps/client/src/app/components/header/header.component.html - 259 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 - - - apps/client/src/app/pages/accounts/accounts-page.html - 4 - - - - Do you really want to delete this platform? - Bu platformu silmeyi gerçekten istiyor musunuz? - - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 87 - - - - Update platform - Platformu Güncelle - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 - - - - Add platform - Platform Ekle - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 10 - - - - Platforms - Platformlar - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 - - - - Do you really want to delete this user? - Bu kullanıcıyı silmeyi gerçekten istiyor musunu? - - apps/client/src/app/components/admin-users/admin-users.component.ts - 142 - - - - User - Kullanıcı - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 - - - apps/client/src/app/components/header/header.component.html - 225 - - - - Registration - Kayıt - - apps/client/src/app/components/admin-users/admin-users.html - 97 - - - - Engagement per Day - Günlük etkileşim - - apps/client/src/app/components/admin-users/admin-users.html - 157 - - - - Last Request - Son Talep - - apps/client/src/app/components/admin-users/admin-users.html - 202 - - - - Impersonate User - Kullanıcıyı Taklit Et - - apps/client/src/app/components/admin-users/admin-users.html - 239 - - - - Delete User - Kullanıcıyı Sil - - apps/client/src/app/components/admin-users/admin-users.html - 260 - - - - Performance - Performans - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 - - - - Compare with... - Karşılaştır... - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 18 - - - - Manage Benchmarks - Karşılaştırma Ölçütlerini Yönet - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 35 - - - - Portfolio - Portföy - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 - - - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 - - - - Benchmark - Karşılaştırma Ölçütü - - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 - - - - Current Market Mood - Piyasa Psikolojisi - - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 - - - - Overview - Genel Bakış - - apps/client/src/app/components/header/header.component.html - 28 - - - apps/client/src/app/components/header/header.component.html - 241 - - - - Portfolio - Portföy - - apps/client/src/app/components/header/header.component.html - 41 - - - apps/client/src/app/components/header/header.component.html - 251 - - - - Admin Control - Yönetici Kontrolü - - apps/client/src/app/components/header/header.component.html - 68 - - - apps/client/src/app/components/header/header.component.html - 275 - - - - Me - Ben - - apps/client/src/app/components/header/header.component.html - 207 - - - - My Ghostfolio - Ghostfolio’m - - apps/client/src/app/components/header/header.component.html - 266 - - - - About Ghostfolio - Ghostfolio Hakkında - - apps/client/src/app/components/header/header.component.html - 312 - - - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 - - - - Sign in - Giriş - - apps/client/src/app/components/header/header.component.html - 408 - - - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 - - - - Get started - Haydi Başlayalım - - apps/client/src/app/components/header/header.component.html - 418 - - - - Sign in - Giriş - - apps/client/src/app/app-routing.module.ts - 150 - - - apps/client/src/app/components/header/header.component.ts - 231 - - - - Oops! Incorrect Security Token. - Hay Allah! Güvenlik anahtarı yanlış. - - apps/client/src/app/components/header/header.component.ts - 246 - - - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 159 - - - - Manage Activities - İşlemleri Yönet - - apps/client/src/app/components/home-holdings/home-holdings.html - 62 - - - - Fear - Korku - - apps/client/src/app/components/home-market/home-market.component.ts - 28 - - - libs/ui/src/lib/i18n.ts - 102 - - - - Greed - Açgözlülük - - apps/client/src/app/components/home-market/home-market.component.ts - 29 - - - libs/ui/src/lib/i18n.ts - 103 - - - - Last Days - Son Gün - - apps/client/src/app/components/home-market/home-market.html - 7 - - - - Welcome to Ghostfolio - Ghostfolio’ya Hoşgeldiniz. - - apps/client/src/app/components/home-overview/home-overview.html - 7 + apps/client/src/app/components/home-overview/home-overview.html + 7 @@ -2267,7 +1991,7 @@ Hesaplarınızı kurunuz apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 @@ -2275,7 +1999,7 @@ İşlem ekle. apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2313,6 +2037,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -2330,8 +2062,8 @@ or veya - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2355,7 +2087,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2411,7 +2143,7 @@ Yatırım apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2539,7 +2271,7 @@ Temettü apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2551,7 +2283,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 @@ -2575,7 +2307,7 @@ Ortalama Birim Fiyat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -2583,7 +2315,7 @@ Asgari Fiyat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -2591,7 +2323,7 @@ Azami Fiyat apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -2599,11 +2331,11 @@ Miktar apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2615,7 +2347,7 @@ Komisyon apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2631,7 +2363,7 @@ Rapor Veri Sorunu apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -2659,11 +2391,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -2679,11 +2411,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -2695,11 +2427,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -2711,11 +2443,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -2727,7 +2459,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -2739,11 +2471,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -2771,7 +2503,7 @@ Üyeliğinizi Yükseltin apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -2783,7 +2515,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -2795,7 +2527,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -2807,7 +2539,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -2819,7 +2551,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -2831,7 +2563,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -2843,7 +2575,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -2851,7 +2583,7 @@ Bu özellik şu an için mevcut değil. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -2859,11 +2591,11 @@ Daha sonra tekrar deneyiniz. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2875,7 +2607,7 @@ Hay Allah! Bir şeyler yanlış gitti. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2887,11 +2619,11 @@ Tamam apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -2902,52 +2634,36 @@ About Hakkında - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 Changelog Değişiklik Günlüğü - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License Lisans - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 Privacy Policy Gizlilik Politikası - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -2978,8 +2694,8 @@ Accounts Hesaplar - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -3010,52 +2726,36 @@ Admin Control Yönetici Denetimleri - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Market Data Piyasa Verileri - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Settings Ayarlar - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 Users Kullanıcılar - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 @@ -3063,31 +2763,27 @@ Özet apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Blog Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -3109,14 +2805,14 @@ Frequently Asked Questions (FAQ) Sıkça Sorulan Sorular (SSS) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Frequently Asked Questions (FAQ) @@ -3138,8 +2834,8 @@ Features Özellikler - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -3282,56 +2978,44 @@ Holdings Varlıklar - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 Summary Özet - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 Markets Piyasalar - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -3359,7 +3043,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -3371,7 +3055,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -3702,12 +3386,8 @@ Activities İşlemler - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -3767,7 +3447,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -3783,7 +3463,7 @@ Birim Fiyat apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3795,7 +3475,7 @@ Komisyon apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3867,7 +3547,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -3938,8 +3618,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -4075,7 +3755,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4110,12 +3790,8 @@ Analysis Analiz - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -4257,10 +3933,6 @@ apps/client/src/app/pages/public/public-page.html 70 - - libs/ui/src/lib/assistant/assistant.html - 44 - Pricing @@ -4269,6 +3941,10 @@ apps/client/src/app/pages/pricing/pricing-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 271 + Pricing Plans @@ -4291,7 +3967,7 @@ Ghostfolio’yu kendi altyapınızda çalıştırmayı tercih ederseniz, lütfen kaynak kodunu ve daha fazla talimatı GitHub adresinde bulun. apps/client/src/app/pages/pricing/pricing-page.html - 26 + 12 @@ -4299,7 +3975,7 @@ Kendi altyapılarında Ghostfolio’yu çalıştırmayı tercih eden teknolojiye hakim yatırımcılar için. apps/client/src/app/pages/pricing/pricing-page.html - 38 + 24 @@ -4307,15 +3983,15 @@ Sınırsız İşlem apps/client/src/app/pages/pricing/pricing-page.html - 45 + 31 apps/client/src/app/pages/pricing/pricing-page.html - 134 + 120 apps/client/src/app/pages/pricing/pricing-page.html - 206 + 192 @@ -4323,15 +3999,15 @@ Kısıtsız Hesaplar apps/client/src/app/pages/pricing/pricing-page.html - 49 + 35 apps/client/src/app/pages/pricing/pricing-page.html - 138 + 124 apps/client/src/app/pages/pricing/pricing-page.html - 210 + 196 @@ -4339,15 +4015,15 @@ Portföy Performansı apps/client/src/app/pages/pricing/pricing-page.html - 53 + 39 apps/client/src/app/pages/pricing/pricing-page.html - 142 + 128 apps/client/src/app/pages/pricing/pricing-page.html - 214 + 200 @@ -4355,15 +4031,15 @@ Veri İçe Aktarma ve Dışa Aktarma apps/client/src/app/pages/pricing/pricing-page.html - 73 + 59 apps/client/src/app/pages/pricing/pricing-page.html - 146 + 132 apps/client/src/app/pages/pricing/pricing-page.html - 234 + 220 @@ -4371,7 +4047,7 @@ Topluluk Desteği apps/client/src/app/pages/pricing/pricing-page.html - 90 + 76 @@ -4379,7 +4055,7 @@ Tarafınızca barındırılıyor, elle güncelleyiniz. apps/client/src/app/pages/pricing/pricing-page.html - 94 + 80 @@ -4387,11 +4063,11 @@ Ücretsiz apps/client/src/app/pages/pricing/pricing-page.html - 95 + 81 apps/client/src/app/pages/pricing/pricing-page.html - 158 + 144 @@ -4399,7 +4075,7 @@ Alım satıma henüz başlamış yeni yatırımcılar için. apps/client/src/app/pages/pricing/pricing-page.html - 128 + 114 @@ -4407,11 +4083,11 @@ Eksiksiz yönetilen Ghostfolio bulut teklifi. apps/client/src/app/pages/pricing/pricing-page.html - 157 + 143 apps/client/src/app/pages/pricing/pricing-page.html - 283 + 269 @@ -4419,7 +4095,7 @@ Finansal varlıklarının tamamını görmeye ihtiyaç duyan hırslı yatırımcılar için. apps/client/src/app/pages/pricing/pricing-page.html - 199 + 185 @@ -4427,7 +4103,7 @@ E-posta ve Sohbet Desteği apps/client/src/app/pages/pricing/pricing-page.html - 279 + 265 @@ -4435,7 +4111,7 @@ Aboneliği Yenile apps/client/src/app/components/header/header.component.html - 185 + 191 apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -4443,7 +4119,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 310 + 296 @@ -4451,7 +4127,7 @@ Tek seferlik ödeme, otomatik yenileme yok. apps/client/src/app/pages/pricing/pricing-page.html - 316 + 302 @@ -4467,7 +4143,7 @@ Ücretsiz. apps/client/src/app/pages/pricing/pricing-page.html - 345 + 352 @@ -4506,8 +4182,8 @@ Registration Kayıt - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 281 @@ -4550,3451 +4226,3821 @@ Copy to clipboard Panoya Kopyala - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 88 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 88 + + + + Personal Finance Tools + Kişisel Finans Araçları + + libs/common/src/lib/routes/routes.ts + 329 + + + + open-source-alternative-to + acik-kaynak-alternatif + kebab-case + + libs/common/src/lib/routes/routes.ts + 320 + + + libs/common/src/lib/routes/routes.ts + 324 + + + + Discover Open Source Alternatives for Personal Finance Tools + Açık Kaynak Kişisel Finans Seçeneklerini Keşfet + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 + + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Bu genel bakış sayfası, diğer kişisel finans araçlarının seçilmiş bir koleksiyonunun açık kaynak alternatifiGhostfolio ile karşılaştırmasını sunmaktadır.. Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel bir fırsat sunuyor. + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Aşağıdaki bağlantıları keşfedin, çeşitli kişisel finans araçlarını Ghostfolio ile karşılaştırın. + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 + + + + Open Source Alternative to + için Açık Kaynak Alternatifi + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + + The Open Source Alternative to + Açık Kaynak Alternatifi + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Açık kaynaklı bir alternatif mi arıyorsunuz ? Ghostfolio güçlü bir portföy yönetim aracıdır ve bireylere yatırımlarını takip etmek, analiz etmek ve optimize etmek için kapsamlı bir platform sunar. İster deneyimli bir yatırımcı olun ister yeni başlıyor olun, Ghostfolio, bilinçli kararlar almanıza ve finansal geleceğinizi kontrol etmenize yardımcı olmak için sezgisel bir kullanıcı arayüzü ve geniş bir işlevsellik yelpazesi sunmaktadır. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio, karşısında açık kaynak kodlu maliyet etkin bir seçenek sunmaktadır. gibi kısıtlı bütçeye sahip, finansal özgürlük ve erken emeklilik (FIRE) amaçlayan kulanıcılar için özellikle uygundur. Ghostfolio, topluluk içindeki geliştiricilerin ve kişisel finans meraklılarının kolektif çabası sayesinde yeteneklerini, güvenliğini ve kullanıcı deneyimini sürekli olarak geliştirmektedir. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Ghostfolio ve arasındaki ayrıntılı karşılaştırmanın yer aldığı aşağıdaki tabloya daha yakından bakarak Ghostfolio’nun karşısında kendisini nasıl konumlandırdığını kapsamlı bir şekilde değerlendirelim. Bu kapsamda özellikler, veri güvenliği, fiyat vb. hususları inceleyerek kişisel gereksinimleriniz için bilgiye dayalı bir seçim yapmanızı sağlayabileceği. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + + Founded + Kuruluş + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + + Origin + Köken + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + + Region + Bölge + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 87 + + + + Available in + Mevcut + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 108 + + + + ✅ Yes + ✅ Evet + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 196 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 235 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 257 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 274 + + + + ❌ No + ❌ Hayır + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 203 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 225 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 242 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 264 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 281 + + + + Self-Hosting + Tarafınızca Barındırma + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 170 + + + + Use anonymously + Anonim olarak kullan + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 + + + + Free Plan + Ücretsiz Plan + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 + + + + Notes + Notlar + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 302 + + + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Lütfen dikkat, Ghostfolio ve arasındaki karşılaştırmanın yer aldığı tablodaki bilgiler bağımsız araştırmalarımıza dayanmaktadır. Websitemizin ile ya da bu karşılaştırmada adı geçen herhangi bir ürün ve hizmet ile ilişkisi bulunmamaktadır. Kişisel finans araçlarının kapsamı geliştikçe, belirli ayrıntıların veya değişikliklerin doğrudan ilgili ürün sayfasından doğrulanması önemlidir. Verilerin yenilenmesi mi gerekiyor? Doğru verileri sağlamamıza yardımcı olmak için sayfamızı ziyaret edin. GitHub. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 + + + + Ready to take your investments to the next level? + Yatırımlarınızı bir sonraki seviyeye taşımaya hazır mısınız? + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 + + + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Ghostfolio ile varlıklarınızı kolaylıkla takip edin, analiz edin ve görselleştirin. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 328 + + + + Get Started + Başlayın + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 - + Personal Finance Tools Kişisel Finans Araçları - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 351 - - open-source-alternative-to - Açık kaynak alternatif + + Switzerland + İsviçre - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/ui/src/lib/i18n.ts + 93 - - Open Source Alternative to - için Açık Kaynak Alternatif + + Global + Küresel - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - - - Discover Open Source Alternatives for Personal Finance Tools - Açık Kaynak Kişisel Finans Seçeneklerini Keşfet - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 + libs/ui/src/lib/i18n.ts + 16 - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Bu genel bakış sayfası, diğer kişisel finans araçlarının seçilmiş bir koleksiyonunun açık kaynak alternatifiGhostfolio ile karşılaştırmasını sunmaktadır.. Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel Şeffaflığa, veri gizliliğine ve topluluk işbirliğine değer veriyorsanız Ghostfolio, finansal yönetiminizin kontrolünü ele almak için mükemmel bir fırsat sunuyor. + + Resources + Kaynaklar - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + libs/common/src/lib/routes/routes.ts + 332 - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Aşağıdaki bağlantıları keşfedin, çeşitli kişisel finans araçlarını Ghostfolio ile karşılaştırın. + + Guides + Kılavuzlar - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/pages/resources/guides/resources-guides.component.html + 4 - - Open Source Alternative to - için Açık Kaynak Alternatifi + + Glossary + Sözlük - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/pages/resources/glossary/resources-glossary.component.html + 4 - - The Open Source Alternative to - Açık Kaynak Alternatifi + + Grant access + Erişim izni ver - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Açık kaynaklı bir alternatif mi arıyorsunuz ? Ghostfolio güçlü bir portföy yönetim aracıdır ve bireylere yatırımlarını takip etmek, analiz etmek ve optimize etmek için kapsamlı bir platform sunar. İster deneyimli bir yatırımcı olun ister yeni başlıyor olun, Ghostfolio, bilinçli kararlar almanıza ve finansal geleceğinizi kontrol etmenize yardımcı olmak için sezgisel bir kullanıcı arayüzü ve geniş bir işlevsellik yelpazesi sunmaktadır. + + Public + Halka açık - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio, karşısında açık kaynak kodlu maliyet etkin bir seçenek sunmaktadır. gibi kısıtlı bütçeye sahip, finansal özgürlük ve erken emeklilik (FIRE) amaçlayan kulanıcılar için özellikle uygundur. Ghostfolio, topluluk içindeki geliştiricilerin ve kişisel finans meraklılarının kolektif çabası sayesinde yeteneklerini, güvenliğini ve kullanıcı deneyimini sürekli olarak geliştirmektedir. + + My Ghostfolio + Benim Ghostfolio’m - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 34 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Ghostfolio ve arasındaki ayrıntılı karşılaştırmanın yer aldığı aşağıdaki tabloya daha yakından bakarak Ghostfolio’nun karşısında kendisini nasıl konumlandırdığını kapsamlı bir şekilde değerlendirelim. Bu kapsamda özellikler, veri güvenliği, fiyat vb. hususları inceleyerek kişisel gereksinimleriniz için bilgiye dayalı bir seçim yapmanızı sağlayabileceği. + + Auto + Otomatik - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 39 - - Founded - Kuruluş + + Please enter your coupon code. + Lütfen kupon kodunuzu girin: - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 202 - - Origin - Köken + + Could not redeem coupon code + Kupon kodu kullanılamadı - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 82 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 166 - - Region - Bölge + + Coupon code has been redeemed + Kupon kodu kullanıldı - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 87 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 179 - - Available in - Mevcut + + Reload + Yeniden Yükle - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 108 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 180 - - ✅ Yes - ✅ Evet - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 140 - + + Do you really want to remove this sign in method? + Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 157 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 248 + + + Membership + Üyelik - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 179 + libs/ui/src/lib/membership-card/membership-card.component.html + 37 + + + Valid until + Geçerli tarih - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 196 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 74 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 218 + libs/ui/src/lib/membership-card/membership-card.component.html + 42 + + + per year + yıllık - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 235 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 32 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 257 + apps/client/src/app/pages/pricing/pricing-page.html + 282 + + + Try Premium + Premium’u Deneyin - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 274 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 - - ❌ No - ❌ Hayır + + Redeem Coupon + Kupon Kullan - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 147 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 63 + + + Presenter View + Sunum Görünümü - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 164 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 183 + + + Protection for sensitive information like absolute performances and quantity values + Gerçek performans ve miktar değerleri gibi hassas bilgilerin saklanması için - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 186 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 + + + Base Currency + Temel Para Birimi - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 203 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 9 + + + Language + Dil - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 225 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 56 + + + Locale + Yerel Ayarlar - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 242 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 414 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 264 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 133 + + + Date and number format + Tarih ve Sayı Formatları - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 281 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 135 - - Self-Hosting - Tarafınızca Barındırma + + Appearance + Görünüm - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 170 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 158 - - Use anonymously - Anonim olarak kullan + + Auto + Otomatik - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 209 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 172 - - Free Plan - Ücretsiz Plan + + Light + Açık - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 248 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 - - Notes - Notlar + + Dark + Koyu - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 302 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Lütfen dikkat, Ghostfolio ve arasındaki karşılaştırmanın yer aldığı tablodaki bilgiler bağımsız araştırmalarımıza dayanmaktadır. Websitemizin ile ya da bu karşılaştırmada adı geçen herhangi bir ürün ve hizmet ile ilişkisi bulunmamaktadır. Kişisel finans araçlarının kapsamı geliştikçe, belirli ayrıntıların veya değişikliklerin doğrudan ilgili ürün sayfasından doğrulanması önemlidir. Verilerin yenilenmesi mi gerekiyor? Doğru verileri sağlamamıza yardımcı olmak için sayfamızı ziyaret edin. GitHub. + + Distraction-free experience for turbulent times + Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 202 - - Ready to take your investments to the next level? - Yatırımlarınızı bir sonraki seviyeye taşımaya hazır mısınız? + + Biometric Authentication + Biyometrik Kimlik Doğrulama - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 218 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Ghostfolio ile varlıklarınızı kolaylıkla takip edin, analiz edin ve görselleştirin. + + Sign in with fingerprint + Parmak iziyle oturum aç - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 328 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 219 - - Get Started - Başlayın + + Experimental Features + Deneysel Özellikler - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 235 - - Personal Finance Tools - Kişisel Finans Araçları + + Sneak peek at upcoming functionality + Gelecek özelliklere göz atın - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 351 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 236 - - Switzerland - İsviçre + + User ID + Kullanıcı Kimliği - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 252 - - Global - Küresel + + Export Data + Verileri Dışa Aktar - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 260 + + + Granted Access + xErişim İzni Verildi - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/components/user-account-access/user-account-access.html + 57 - - Resources - Kaynaklar + + Oops, authentication has failed. + Hay Allah, kimlik doğrulaması başarısız oldu. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 - - Guides - Kılavuzlar + + Try again + Yeniden dene - apps/client/src/app/pages/resources/guides/resources-guides.component.html - 4 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 - - Glossary - Sözlük + + Go back to Home Page + Ana Sayfaya Geri Dön - apps/client/src/app/pages/resources/glossary/resources-glossary.component.html - 4 + apps/client/src/app/pages/webauthn/webauthn-page.html + 33 - - Grant access - Erişim izni ver + + Import Activities + İşlemleri İçe Aktar - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - - - Public - Halka açık - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 + libs/ui/src/lib/activities-table/activities-table.component.html + 371 - - My Ghostfolio - Benim Ghostfolio’m + + Import Dividends + Temettüleri İçe Aktar - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - - - Auto - Otomatik - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 39 + libs/ui/src/lib/activities-table/activities-table.component.html + 383 - - Please enter your coupon code. - Lütfen kupon kodunuzu girin: + + Export Activities + İşlemleri Dışa Aktar - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - - - Could not redeem coupon code - Kupon kodu kullanılamadı - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + libs/ui/src/lib/activities-table/activities-table.component.html + 396 - - Coupon code has been redeemed - Kupon kodu kullanıldı + + Export Drafts as ICS + Taslakları ICS Olarak Dışa Aktar - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 409 - - Reload - Yeniden Yükle + + Draft + Taslak - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + libs/ui/src/lib/activities-table/activities-table.component.html + 145 - - Do you really want to remove this sign in method? - Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? + + Clone + Klonla - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 248 + libs/ui/src/lib/activities-table/activities-table.component.html + 436 - - Membership - Üyelik + + Export Draft as ICS + Taslakları ICS Olarak Dışa Aktar - libs/ui/src/lib/membership-card/membership-card.component.html - 37 + libs/ui/src/lib/activities-table/activities-table.component.html + 446 + + + + Do you really want to delete this activity? + TBu işlemi silmeyi gerçekten istiyor musunuz? + + libs/ui/src/lib/activities-table/activities-table.component.ts + 229 - - Valid until - Geçerli tarih + + Change from All Time High + Tüm Zamanların En Yüksek Seviyesinden (ATH) Değişim - apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + libs/ui/src/lib/benchmark/benchmark.component.html + 110 + + + from ATH + Tüm Zamanların En Yüksek Seviyesinden - libs/ui/src/lib/membership-card/membership-card.component.html - 42 + libs/ui/src/lib/benchmark/benchmark.component.html + 112 - - per year - yıllık + + Market data provided by + Piyasa verileri tarafından sağlanmıştır - apps/client/src/app/components/user-account-membership/user-account-membership.html - 32 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month + Aylık Tasarruf Oranı - apps/client/src/app/pages/pricing/pricing-page.html - 296 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 - - Try Premium - Premium’u Deneyin + + Annual Interest Rate + Yıllık Faiz Oranı - apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 - - Redeem Coupon - Kupon Kullan + + Retirement Date + Emeklilik Tarihi - apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 - - Presenter View - Sunum Görünümü + + Projected Total Amount + Hesaplanan Toplam Tutar - apps/client/src/app/components/user-account-settings/user-account-settings.html - 183 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 - - Protection for sensitive information like absolute performances and quantity values - Gerçek performans ve miktar değerleri gibi hassas bilgilerin saklanması için + + Interest + Faiz - apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 370 - - - Base Currency - Temel Para Birimi - apps/client/src/app/components/user-account-settings/user-account-settings.html - 9 + libs/ui/src/lib/i18n.ts + 38 - - Language - Dil + + Savings + Tasarruflar - apps/client/src/app/components/user-account-settings/user-account-settings.html - 56 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 380 - - Locale - Yerel Ayarlar + + Allocation + Dağılım - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 414 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 133 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 40 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 116 - - Date and number format - Tarih ve Sayı Formatları + + Show all + Tümünü göster - apps/client/src/app/components/user-account-settings/user-account-settings.html - 135 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 - - Appearance - Görünüm + + Account + Hesap - apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + libs/ui/src/lib/i18n.ts + 4 - - Auto - Otomatik + + Asia-Pacific + Asya Pasifik - apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + libs/ui/src/lib/i18n.ts + 5 - - Light - Açık + + Asset Class + Varlık Sınıfı - apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + libs/ui/src/lib/i18n.ts + 6 - - Dark - Koyu + + Asset Sub Class + AVarlık Alt Sınıfı - apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + libs/ui/src/lib/i18n.ts + 7 - - Distraction-free experience for turbulent times - Çalkantılı zamanlar için dikkat dağıtmayan bir deneyim + + Core + Temel - apps/client/src/app/components/user-account-settings/user-account-settings.html - 202 + libs/ui/src/lib/i18n.ts + 10 - - Biometric Authentication - Biyometrik Kimlik Doğrulama + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Ghostfolio Premium veya Ghostfolio Open Source’a kolayca geçin - apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + libs/ui/src/lib/i18n.ts + 12 - - Sign in with fingerprint - Parmak iziyle oturum aç + + Switch to Ghostfolio Premium easily + Ghostfolio Premium’a kolayca geçin - apps/client/src/app/components/user-account-settings/user-account-settings.html - 219 + libs/ui/src/lib/i18n.ts + 13 - - Experimental Features - Deneysel Özellikler + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Ghostfolio Açık Kaynak veya Ghostfolio Temel’e kolayca geçin. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 235 + libs/ui/src/lib/i18n.ts + 14 - - Sneak peek at upcoming functionality - Gelecek özelliklere göz atın + + Emergency Fund + Acil Durum Fonu - apps/client/src/app/components/user-account-settings/user-account-settings.html - 236 + libs/ui/src/lib/i18n.ts + 15 - - User ID - Kullanıcı Kimliği + + Grant + Hibe - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 45 + libs/ui/src/lib/i18n.ts + 17 + + + Higher Risk + Daha Yüksek Risk - apps/client/src/app/components/user-account-settings/user-account-settings.html - 252 + libs/ui/src/lib/i18n.ts + 18 - - Export Data - Verileri Dışa Aktar + + This activity already exists. + Bu işlem zaten mevcut. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 260 + libs/ui/src/lib/i18n.ts + 19 - - Granted Access - xErişim İzni Verildi + + Japan + Japonya - apps/client/src/app/components/user-account-access/user-account-access.html - 7 + libs/ui/src/lib/i18n.ts + 86 - - Oops, authentication has failed. - Hay Allah, kimlik doğrulaması başarısız oldu. + + Lower Risk + Daha Düşük Risk - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 + libs/ui/src/lib/i18n.ts + 20 - - Try again - Yeniden dene + + Month + Ay - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/i18n.ts + 21 - - Go back to Home Page - Ana Sayfaya Geri Dön + + Months + Ay - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 22 - - Import Activities - İşlemleri İçe Aktar + + Other + Diğer - libs/ui/src/lib/activities-table/activities-table.component.html - 9 + libs/ui/src/lib/i18n.ts + 23 - libs/ui/src/lib/activities-table/activities-table.component.html - 371 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 400 - - Import Dividends - Temettüleri İçe Aktar + + Preset + Önceden Ayarlanmış - libs/ui/src/lib/activities-table/activities-table.component.html - 29 + libs/ui/src/lib/i18n.ts + 25 + + + Retirement Provision + Yaşlılık Provizyonu - libs/ui/src/lib/activities-table/activities-table.component.html - 383 + libs/ui/src/lib/i18n.ts + 26 - - Export Activities - İşlemleri Dışa Aktar + + Satellite + Uydu - libs/ui/src/lib/activities-table/activities-table.component.html - 41 + libs/ui/src/lib/i18n.ts + 27 + + + Symbol + Sembol - libs/ui/src/lib/activities-table/activities-table.component.html - 396 + libs/ui/src/lib/i18n.ts + 28 - - Export Drafts as ICS - Taslakları ICS Olarak Dışa Aktar + + Tag + Etiket - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + libs/ui/src/lib/i18n.ts + 29 + + + Year + Yıl - libs/ui/src/lib/activities-table/activities-table.component.html - 409 + libs/ui/src/lib/i18n.ts + 30 - - Draft - Taslak + + Years + Yıl - libs/ui/src/lib/activities-table/activities-table.component.html - 145 + libs/ui/src/lib/i18n.ts + 31 - - Clone - Klonla + + Buy + Al - libs/ui/src/lib/activities-table/activities-table.component.html - 436 + libs/ui/src/lib/i18n.ts + 35 - - Export Draft as ICS - Taslakları ICS Olarak Dışa Aktar + + Valuable + Kıymet - libs/ui/src/lib/activities-table/activities-table.component.html - 446 + libs/ui/src/lib/i18n.ts + 39 - - Do you really want to delete this activity? - TBu işlemi silmeyi gerçekten istiyor musunuz? + + Liability + Yükümlülük - libs/ui/src/lib/activities-table/activities-table.component.ts - 229 + libs/ui/src/lib/i18n.ts + 40 - - Change from All Time High - Tüm Zamanların En Yüksek Seviyesinden (ATH) Değişim + + Sell + Sat - libs/ui/src/lib/benchmark/benchmark.component.html - 96 + libs/ui/src/lib/i18n.ts + 41 - - from ATH - Tüm Zamanların En Yüksek Seviyesinden + + Cash + Nakit - libs/ui/src/lib/benchmark/benchmark.component.html - 98 + libs/ui/src/lib/i18n.ts + 44 - - Market data provided by - Piyasa verileri tarafından sağlanmıştır + + Commodity + Emtia - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 45 - - Savings Rate per Month - Aylık Tasarruf Oranı + + Equity + Menkul Kıymet - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 46 - - Annual Interest Rate - Yıllık Faiz Oranı + + Fixed Income + Sabit Gelir - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 47 - - Retirement Date - Emeklilik Tarihi + + Real Estate + Gayrimenkul - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 49 - - Projected Total Amount - Hesaplanan Toplam Tutar + + Bond + Bono - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + libs/ui/src/lib/i18n.ts + 52 - - Interest - Faiz + + Cryptocurrency + Kriptopara - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 370 + libs/ui/src/lib/i18n.ts + 53 + + + ETF + Borsada İşlem Gören Fonlar (ETF) libs/ui/src/lib/i18n.ts - 38 + 54 - - Savings - Tasarruflar + + Mutual Fund + Borsada İşlem Görmeyen Fonlar (Mutual Fund) - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 380 + libs/ui/src/lib/i18n.ts + 55 - - Allocation - Dağılım + + Precious Metal + Kıymetli Metaller - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/i18n.ts + 56 + + + Private Equity + Özel Menkul Kıymetler - libs/ui/src/lib/top-holdings/top-holdings.component.html - 40 + libs/ui/src/lib/i18n.ts + 57 + + + Stock + Hisse Senetleri - libs/ui/src/lib/top-holdings/top-holdings.component.html - 116 + libs/ui/src/lib/i18n.ts + 58 - - Show all - Tümünü göster + + Africa + Afrika - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/i18n.ts + 65 - - Account - Hesap + + Asia + Asya libs/ui/src/lib/i18n.ts - 4 + 66 - - Asia-Pacific - Asya Pasifik + + Europe + Avrupa libs/ui/src/lib/i18n.ts - 5 + 67 - - Asset Class - Varlık Sınıfı + + North America + Kuzey Amerika libs/ui/src/lib/i18n.ts - 6 + 68 - - Asset Sub Class - AVarlık Alt Sınıfı + + Oceania + Okyanusya libs/ui/src/lib/i18n.ts - 7 + 69 - - Core - Temel + + South America + Güney Amerika libs/ui/src/lib/i18n.ts - 10 + 70 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Ghostfolio Premium veya Ghostfolio Open Source’a kolayca geçin + + Time to add your first activity. + İlk işleminizi girmanin tam zamanı. - libs/ui/src/lib/i18n.ts + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html 12 - - Switch to Ghostfolio Premium easily - Ghostfolio Premium’a kolayca geçin + + No data available + Veri mevcut değil - libs/ui/src/lib/i18n.ts - 13 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 402 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 415 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Ghostfolio Açık Kaynak veya Ghostfolio Temel’e kolayca geçin. + + You are using the Live Demo. + Canlı demoyu kullanmaktasınız. - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/app.component.html + 12 - - Emergency Fund - Acil Durum Fonu + + Interest + Faiz - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 - - Grant - Hibe + + (Last 24 hours) + (Son 24 saat) - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/pages/open/open-page.html + 37 - - Higher Risk - Daha Yüksek Risk + + (Last 30 days) + (Son 30 gün) - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/pages/open/open-page.html + 48 + + + apps/client/src/app/pages/open/open-page.html + 59 - - This activity already exists. - Bu işlem zaten mevcut. + + (Last 90 days) + (Son 90 gün) - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/pages/open/open-page.html + 127 - - Japan - Japonya + + One-time fee, annual account fees + Tek seferlik ücret, yıllık hesap ücreti - libs/ui/src/lib/i18n.ts - 86 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 - - Lower Risk - Daha Düşük Risk + + Distribution of corporate earnings + Şirket gelirinin dağıtımı - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 - - Month - Ay + + Revenue for lending out money + Borç verme getirisi - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 - - Months - Ay + + Choose or drop a file here + Dosya seçin ya da sürükleyin - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - Other - Diğer + + Fee + Ücret libs/ui/src/lib/i18n.ts - 23 + 37 + + + Add Tag + Etiket Ekleyiniz - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - Preset - Önceden Ayarlanmış + + Do you really want to delete this tag? + Bu etiketi silmeyi gerçekten istiyor musunuz? - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 85 - - Retirement Provision - Yaşlılık Provizyonu + + Update tag + Etiketi güncelle - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 - - Satellite - Uydu + + Add tag + Etiket ekle - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 10 - - Symbol - Sembol + + Currency Cluster Risks + Kur Kümelenme Riskleri (Currency Cluster Risks) - libs/ui/src/lib/i18n.ts - 28 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 - - Tag - Etiket + + Account Cluster Risks + Hesap Kümelenme Riski (Account Cluster Risks) - libs/ui/src/lib/i18n.ts - 29 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 - - Year - Yıl + + Transfer Cash Balance + Nakit Bakiyesini Transfer Et - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 - - Years - Yıl + + Benchmark + Kıyaslama + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + + Version + Versiyon - libs/ui/src/lib/i18n.ts - 31 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - Buy - Al + + Settings + Ayarlar - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 - - Valuable - Kıymet + + From + Başlangıç - libs/ui/src/lib/i18n.ts - 39 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 - - Liability - Yükümlülük + + To + Bitiş - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 - - Sell - Sat + + Transfer + Transfer - libs/ui/src/lib/i18n.ts - 41 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 - - Cash - Nakit + + Membership + Üyelik - libs/ui/src/lib/i18n.ts - 44 + libs/common/src/lib/routes/routes.ts + 31 - - Commodity - Emtia + + Access + Erişim - libs/ui/src/lib/i18n.ts - 45 + libs/common/src/lib/routes/routes.ts + 26 - - Equity - Menkul Kıymet + + Asset Profile + Varlık Profili - libs/ui/src/lib/i18n.ts - 46 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 - - Fixed Income - Sabit Gelir + + Do you really want to delete this asset profile? + Bu varlık profilini silmeyi gerçekten istiyor musunuz? - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 - - Real Estate - Gayrimenkul + + Search + Arama - libs/ui/src/lib/i18n.ts - 49 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 - - Bond - Bono + + Add Manually + Elle Giriş - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 - - Cryptocurrency - Kriptopara + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio, hisse senetleri, ETF’ler veya kriptopara birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans kontrol panelidir. - libs/ui/src/lib/i18n.ts - 53 + apps/client/src/app/pages/i18n/i18n-page.html + 4 - - ETF - Borsada İşlem Gören Fonlar (ETF) + + Last All Time High + Son, ATH - libs/ui/src/lib/i18n.ts - 54 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 - - Mutual Fund - Borsada İşlem Görmeyen Fonlar (Mutual Fund) + + User + Kullanıcı - libs/ui/src/lib/i18n.ts - 55 + apps/client/src/app/components/admin-users/admin-users.html + 29 - - Precious Metal - Kıymetli Metaller + + Ghostfolio vs comparison table + Ghostfolio ve karşılatırma tablosu - libs/ui/src/lib/i18n.ts - 56 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 - - Private Equity - Özel Menkul Kıymetler + + Open Source Wealth Management Software + Açık Kaynak Varlık Yönetim Yazılımı - libs/ui/src/lib/i18n.ts - 57 + apps/client/src/app/pages/i18n/i18n-page.html + 97 - - Stock - Hisse Senetleri + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, varlık, kriptopara, kontrol paneli, etf, finans, yönetim, performans, portföy, yazılım, hisse, alım satım, varlık, web3 - libs/ui/src/lib/i18n.ts - 58 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Africa - Afrika + + Oops, cash balance transfer has failed. + Hay Allah, Nakit bakiyesi tranferi başarısız oldu. - libs/ui/src/lib/i18n.ts - 65 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 - - Asia - Asya + + Extreme Fear + Aşırı Korku libs/ui/src/lib/i18n.ts - 66 + 100 - - Europe - Avrupa + + Extreme Greed + Aşırı Açgözlülük libs/ui/src/lib/i18n.ts - 67 + 101 - - North America - Kuzey Amerika + + Neutral + Nötr libs/ui/src/lib/i18n.ts - 68 + 104 - - Oceania - Okyanusya + + Oops! Could not parse historical data. + Hay Allah! Geçmiş veriler ayrıştırılamadı. - libs/ui/src/lib/i18n.ts - 69 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 - - South America - Güney Amerika + + Do you really want to delete this system message? + Bu sistem mesajını silmeyi gerçekten istiyor musunuz? - libs/ui/src/lib/i18n.ts - 70 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 - - Time to add your first activity. - İlk işleminizi girmanin tam zamanı. + + 50-Day Trend + 50 Günlük Trend - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 - - No data available - Veri mevcut değil + + 200-Day Trend + 200 Günlük Trend - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Cash Balances + Nakit Bakiyeleri - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 - - You are using the Live Demo. - Canlı demoyu kullanmaktasınız. + + Starting from + Başlangıç + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 + - apps/client/src/app/app.component.html - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 - - Interest - Faiz + + year + Yıl - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - - - (Last 24 hours) - (Son 24 saat) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 - - (Last 30 days) - (Son 30 gün) + + Do you really want to delete this account balance? + Bu nakit bakiyesini silmeyi gerçekten istiyor musunuz? - apps/client/src/app/pages/open/open-page.html - 48 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + If a translation is missing, kindly support us in extending it here. + Eğer bir çeviri eksikse, lütfen bunu genişletmemize yardımcı olun burada. - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 - - (Last 90 days) - (Son 90 gün) + + The current market price is + Şu anki piyasa fiyatı - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 - - One-time fee, annual account fees - Tek seferlik ücret, yıllık hesap ücreti + + Test + Test - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 - - Distribution of corporate earnings - Şirket gelirinin dağıtımı + + Date Range + Tarih Aralığı - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + libs/ui/src/lib/assistant/assistant.html + 130 - - Revenue for lending out money - Borç verme getirisi + + Permission + Yetki - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - Choose or drop a file here - Dosya seçin ya da sürükleyin - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - Fee - Ücret + + Restricted view + Kısıtlı görünüm - libs/ui/src/lib/i18n.ts - 37 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Add Tag - Etiket Ekleyiniz - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Do you really want to delete this tag? - Bu etiketi silmeyi gerçekten istiyor musunuz? + + Oops! Could not grant access. + Hay Allah! Erişim izni verilemedi. - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Update tag - Etiketi güncelle + + Private + Özel - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Add tag - Etiket ekle + + Job Queue + İş Kuyruğu - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + libs/common/src/lib/routes/routes.ts + 46 - - Currency Cluster Risks - Kur Kümelenme Riskleri (Currency Cluster Risks) + + Market data is delayed for + Piyasa verileri gecikmeli - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Account Cluster Risks - Hesap Kümelenme Riski (Account Cluster Risks) + + Investment + Yatırım - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Transfer Cash Balance - Nakit Bakiyesini Transfer Et - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Benchmark - Kıyaslama + + Absolute Asset Performance + Mutlak Varlık Performansı - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Version - Versiyon + + Asset Performance + Varlık Performansı - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Settings - Ayarlar + + Absolute Currency Performance + Mutlak Para Performansı - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - From - Başlangıç + + Currency Performance + Para Performansı - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - To - Bitiş + + Absolute Net Performance + Mutlak Net Performans - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - Transfer - Transfer + + Net Performance + Net Performans - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - Membership - Üyelik + + Week to date + Hafta içi - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + libs/ui/src/lib/assistant/assistant.component.ts + 344 + + + WTD + WTD - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Access - Erişim + + Month to date + Ay içi - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + libs/ui/src/lib/assistant/assistant.component.ts + 348 + + + MTD + MTD - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Find holding... - Sahip olunan varlıkları bul... + + Year to date + Yıl içi libs/ui/src/lib/assistant/assistant.component.ts - 143 + 352 - - No entries... - Girdi yok... + + View + Görünüm - libs/ui/src/lib/assistant/assistant.html - 62 + apps/client/src/app/components/access-table/access-table.component.html + 23 - libs/ui/src/lib/assistant/assistant.html - 85 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Asset Profile - Varlık Profili + + Oops! A data provider is experiencing the hiccups. + Oops! Bir veri sağlayıcısı aksaklık yaşıyor. - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Do you really want to delete this asset profile? - Bu varlık profilini silmeyi gerçekten istiyor musunuz? + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Eğer bugün emekli olursanız, paranızı çekebilirsiniz yıllık veya aylık, toplam varlıklarınıza göre ve %4’lük bir çekilme oranı. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Search - Arama + + Reset Filters + Filtreleri Sıfırla - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + libs/ui/src/lib/assistant/assistant.html + 224 - - Add Manually - Elle Giriş + + year + Yıl - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio, hisse senetleri, ETF’ler veya kriptopara birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans kontrol panelidir. + + years + Yıllar - apps/client/src/app/pages/i18n/i18n-page.html - 4 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Last All Time High - Son, ATH + + Apply Filters + Filtreleri Uygula - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + libs/ui/src/lib/assistant/assistant.html + 234 - - User - Kullanıcı + + Data Gathering + Veri Toplama - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Ghostfolio vs comparison table - Ghostfolio ve karşılatırma tablosu - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - Open Source Wealth Management Software - Açık Kaynak Varlık Yönetim Yazılımı + + General + Genel - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, varlık, kriptopara, kontrol paneli, etf, finans, yönetim, performans, portföy, yazılım, hisse, alım satım, varlık, web3 + + Cloud + Bulut - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Oops, cash balance transfer has failed. - Hay Allah, Nakit bakiyesi tranferi başarısız oldu. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + libs/common/src/lib/routes/routes.ts + 240 - - Extreme Fear - Aşırı Korku + + Self-Hosting + Kendini Barındırma - libs/ui/src/lib/i18n.ts - 100 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - Extreme Greed - Aşırı Açgözlülük - libs/ui/src/lib/i18n.ts - 101 + libs/common/src/lib/routes/routes.ts + 248 - - Neutral - Nötr + + self-hosting + kendini-barindirma + kebab-case - libs/ui/src/lib/i18n.ts - 104 + libs/common/src/lib/routes/routes.ts + 243 - - - Oops! Could not parse historical data. - Hay Allah! Geçmiş veriler ayrıştırılamadı. - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + libs/common/src/lib/routes/routes.ts + 246 - - Do you really want to delete this system message? - Bu sistem mesajını silmeyi gerçekten istiyor musunuz? + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Oops! Görünüşe göre çok fazla istekte bulunuyorsunuz. Lütfen biraz yavaşlayın. - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - 50-Day Trend - 50 Günlük Trend + + My Account + Hesabım - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - 200-Day Trend - 200 Günlük Trend + + Active + Aktif - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 - - Cash Balances - Nakit Bakiyeleri + + Closed + Kapalı - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Starting from - Başlangıç - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 - + + Activity + Etkinlik - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - year - Yıl - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 - + + Dividend Yield + Temettü Getiri - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - Do you really want to delete this account balance? - Bu nakit bakiyesini silmeyi gerçekten istiyor musunuz? + + Execute Job + İşlemi Yürüt - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 - - If a translation is missing, kindly support us in extending it here. - Eğer bir çeviri eksikse, lütfen bunu genişletmemize yardımcı olun burada. + + Priority + Öncelik - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - The current market price is - Şu anki piyasa fiyatı + + This action is not allowed. + Bu işlem izin verilmiyor. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - Test - Test + + Liquidity + Likidite - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + libs/ui/src/lib/i18n.ts + 48 - - Date Range - Tarih Aralığı + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {Etkinlik} other {Etkinlikler}} - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Permission - Yetki + + Buy and sell + Satın ve satın - apps/client/src/app/components/access-table/access-table.component.html - 18 + libs/ui/src/lib/i18n.ts + 8 + + + Delete Activities + Etkinlikleri Sil - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Restricted view - Kısıtlı görünüm + + Internationalization + İnternasyonalizasyon - apps/client/src/app/components/access-table/access-table.component.html - 26 + libs/common/src/lib/routes/routes.ts + 119 + + + Do you really want to close your Ghostfolio account? + Ghostfolio hesabınızı kapatmak istediğinize emin misiniz? - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 - - Oops! Could not grant access. - Hay Allah! Erişim izni verilemedi. + + Danger Zone + Tehlikeli Alan - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Private - Özel + + Close Account + Hesabı Kapat - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - Job Queue - İş Kuyruğu + + By ETF Holding + ETF Portföyü - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Approximation based on the top holdings of each ETF + Her ETF’nin en üst tutarlarına dayalı yaklaşım - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Market data is delayed for - Piyasa verileri gecikmeli + + Join now or check out the example account + Hemen katıl ya da örnek hesabı incele - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Investment - Yatırım + + Oops! There was an error setting up biometric authentication. + Oops! Biyometrik kimlik doğrulama ayarlanırken bir hata oluştu. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 + + + Show more + Daha fazla göster - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 + + + Benchmarks + Kıyaslamalar - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - Absolute Asset Performance - Mutlak Varlık Performansı + + Delete Profiles + Profilleri Sil - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Asset Performance - Varlık Performansı + + Do you really want to delete these profiles? + Bu profilleri silmek istediğinize emin misiniz? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Absolute Currency Performance - Mutlak Para Performansı + + Oops! Could not delete profiles. + Oops! Profilleri silmek mümkün olmadı. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 - - Currency Performance - Para Performansı + + Table + Tablo - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 - - Absolute Net Performance - Mutlak Net Performans + + Chart + Grafik - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Net Performance - Net Performans + + Would you like to refine your personal investment strategy? + Senin özel yatırım stratejinizi iyileştirmek ister misin? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html + apps/client/src/app/pages/public/public-page.html 211 - - Week to date - Hafta içi + + Alternative + Alternatif - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - WTD - WTD + + App + App - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Month to date - Ay içi + + Budgeting + Bütçeleme - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - MTD - MTD + + Community + Topluluk - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Year to date - Yıl içi + + Family Office + Aile Ofisi - libs/ui/src/lib/assistant/assistant.component.ts - 230 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - View - Görünüm + + Investor + Yatırımcı - apps/client/src/app/components/access-table/access-table.component.html - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Open Source + Açık Kaynak - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - Oops! A data provider is experiencing the hiccups. - Oops! Bir veri sağlayıcısı aksaklık yaşıyor. + + Personal Finance + Kişisel Finans + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 + + + + Privacy + Gizlilik - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Software + Yazılım - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - Reset Filters - Filtreleri Sıfırla + + Tool + Araç - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year - Yıl + + User Experience + Kullanıcı Deneyimi - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - years - Yıllar + + Wealth + Zenginlik - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - Apply Filters - Filtreleri Uygula + + Wealth Management + Zenginlik Yönetimi - libs/ui/src/lib/assistant/assistant.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Data Gathering - Veri Toplama + + Australia + Avustralya - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + libs/ui/src/lib/i18n.ts + 74 + + + Austria + Avusturya - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + libs/ui/src/lib/i18n.ts + 75 - - General - Genel + + Belgium + Belçika - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 76 - - Cloud - Bulut + + Bulgaria + Bulgaristan - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + libs/ui/src/lib/i18n.ts + 78 + + + Canada + Kanada - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 79 - - Self-Hosting - Kendini Barındırma + + Czech Republic + Çek Cumhuriyeti - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 80 + + + Finland + Finlandiya - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 81 - - self-hosting - Kendini-Barındırma + + France + Fransa - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/ui/src/lib/i18n.ts + 82 - - FAQ - SSS + + Germany + Almanya - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 83 + + + India + Hindistan - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 84 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Oops! Görünüşe göre çok fazla istekte bulunuyorsunuz. Lütfen biraz yavaşlayın. + + Italy + İtalya - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 85 - - My Account - Hesabım + + Netherlands + Hollanda - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 87 - - Active - Aktif + + New Zealand + Yeni Zelanda - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 88 - - Closed - Kapalı + + Poland + Polonya - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + libs/ui/src/lib/i18n.ts + 89 - - Activity - Etkinlik + + Romania + Romanya - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 90 - - Dividend Yield - Temettü Getiri + + South Africa + Güney Afrika - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 92 - - Execute Job - İşlemi Yürüt + + Thailand + Tayland - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 94 - - Priority - Öncelik + + United States + Amerika Birleşik Devletleri - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 97 - - This action is not allowed. - Bu işlem izin verilmiyor. + + Error + Hata - apps/client/src/app/core/http-response.interceptor.ts - 64 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - Liquidity - Likidite + + Deactivate + Devre Dışı Bırak - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/components/rule/rule.component.html + 72 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {Etkinlik} other {Etkinlikler}} + + Activate + Aktif Et - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 74 - - Buy and sell - Satın ve satın + + Inactive + Pasif - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Delete Activities - Etkinlikleri Sil + + Cancel + İptal Et - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + libs/ui/src/lib/i18n.ts + 9 - - Internationalization - İnternasyonalizasyon + + Close + Kapat - apps/client/src/app/app-routing.module.ts - 88 + libs/ui/src/lib/i18n.ts + 11 - - Do you really want to close your Ghostfolio account? - Ghostfolio hesabınızı kapatmak istediğinize emin misiniz? + + Yes + Evet - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/ui/src/lib/i18n.ts + 32 - - Danger Zone - Tehlikeli Alan + + Copy link to clipboard + Bağlantıyı panoya kopyala - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Close Account - Hesabı Kapat + + Portfolio Snapshot + Portföy Anlık Görüntüsü - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - By ETF Holding - ETF Portföyü + + Change with currency effect Change + Kur farkı etkisiyle değişim Değişim - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Approximation based on the top holdings of each ETF - Her ETF’nin en üst tutarlarına dayalı yaklaşım + + Performance with currency effect Performance + Kur farkı etkisiyle performans Performans - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Join now or check out the example account - Hemen katıl ya da örnek hesabı incele + + Threshold Min + Eşik Min - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Oops! There was an error setting up biometric authentication. - Oops! Biyometrik kimlik doğrulama ayarlanırken bir hata oluştu. + + Threshold Max + Eşik Max - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Show more - Daha fazla göster + + Close + Kapat - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Benchmarks - Kıyaslamalar + + Customize + Özelleştir - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/rule/rule.component.html + 67 - - Delete Profiles - Profilleri Sil + + No auto-renewal. + Otomatik yenileme yok. - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Do you really want to delete these profiles? - Bu profilleri silmek istediğinize emin misiniz? + + Today + Bugün - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/pages/public/public-page.html + 24 - - Oops! Could not delete profiles. - Oops! Profilleri silmek mümkün olmadı. + + This year + Bu yıl - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/pages/public/public-page.html + 42 - - Table - Tablo + + From the beginning + Başlangıçtan beri - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 60 - - Chart - Grafik + + Oops! Invalid currency. + Hay Allah! Geçersiz para birimi. - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - Would you like to refine your personal investment strategy? - Senin özel yatırım stratejinizi iyileştirmek ister misin? + + This page has been archived. + Bu sayfa arşivlendi. - apps/client/src/app/pages/public/public-page.html - 211 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Alternative - Alternatif + + is Open Source Software + , Açık Kaynak Kodlu Yazılımdır - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - App - App + + is not Open Source Software + , Açık Kaynak Kodlu Yazılımdır - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Budgeting - Bütçeleme + + is Open Source Software + , Açık Kaynak Kodlu Yazılımdır - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Community - Topluluk + + is not Open Source Software + , Açık Kaynak Kodlu Yazılım değildir - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Family Office - Aile Ofisi + + can be self-hosted + kendi sunucunuzda barındırılabilir - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Investor - Yatırımcı + + cannot be self-hosted + kendi sunucunuzda barındırılmaz - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Open Source - Açık Kaynak + + can be self-hosted + kendi sunucunuzda barındırılabilir - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Personal Finance - Kişisel Finans + + cannot be self-hosted + kendi sunucunuzda barındırılmaz - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Privacy - Gizlilik + + can be used anonymously + gizli kullanımda kullanılabilir - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Software - Yazılım + + cannot be used anonymously + gizli kullanımda kullanılmaz - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Tool - Araç + + can be used anonymously + gizli kullanımda kullanılabilir - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - User Experience - Kullanıcı Deneyimi + + cannot be used anonymously + gizli kullanımda kullanılmaz - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Wealth - Zenginlik + + offers a free plan + ücretsiz plan sunar - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Wealth Management - Zenginlik Yönetimi + + does not offer a free plan + ücretsiz plan sunmaz - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Australia - Avustralya + + offers a free plan + ücretsiz plan sunar - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Austria - Avusturya + + does not offer a free plan + ücretsiz plan sunmaz - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Belgium - Belçika + + Oops! Could not find any assets. + Oops! Herhangi bir varlık bulunamadı. - libs/ui/src/lib/i18n.ts - 76 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Bulgaria - Bulgaristan + + Data Providers + Veri Sağlayıcıları - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Canada - Kanada + + Set API key + API anahtarını ayarla - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - Czech Republic - Çek Cumhuriyeti + + Get access to 80’000+ tickers from over 50 exchanges + 80’000+ sembolden 50’den fazla borsada erişim alın libs/ui/src/lib/i18n.ts - 80 + 24 - - Finland - Finlandiya + + Ukraine + Ukraine libs/ui/src/lib/i18n.ts - 81 + 95 - - France - Fransa + + Join now + Şimdi katıl - libs/ui/src/lib/i18n.ts - 82 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Germany - Almanya + + Glossary + Sözlük - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - India - Hindistan - libs/ui/src/lib/i18n.ts - 84 + libs/common/src/lib/routes/routes.ts + 293 - - Italy - İtalya + + Guides + Kılavuzlar - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Netherlands - Hollanda - libs/ui/src/lib/i18n.ts - 87 + libs/common/src/lib/routes/routes.ts + 301 - - New Zealand - Yeni Zelanda + + guides + kilavuzlar + kebab-case - libs/ui/src/lib/i18n.ts - 88 + libs/common/src/lib/routes/routes.ts + 296 - - - Poland - Polonya - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 299 - - Romania - Romanya + + glossary + sozluk + kebab-case - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 288 - - - South Africa - Güney Afrika - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 291 - - Thailand - Tayland + + Threshold range + Eşik aralığı - libs/ui/src/lib/i18n.ts - 94 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - United States - Amerika Birleşik Devletleri + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray statik analiz kullanarak portföyünüzdeki potansiyel sorunları ve riskleri keşfetmek için kullanılır. Aşağıdaki kuralları ayarlayın ve özel eşikleri ayarlayarak kişisel yatırım stratejinize uyun. - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Error - Hata + + Economic Market Cluster Risks + Ekonomik Piyasa Küme Riskleri - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Deactivate - Devre Dışı Bırak + + of + ın - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Activate - Aktif Et + + daily requests + günlük istekler - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Inactive - Pasif + + Remove API key + API anahtarını kaldır - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Cancel - İptal Et + + Do you really want to delete the API key? + API anahtarını silmek istediğinize emin misiniz? - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Close - Kapat + + Please enter your Ghostfolio API key: + Ghostfolio API anahtarınızı girin: - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Yes - Evet + + API Requests Today + API Günü İstekleri - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Copy link to clipboard - Bağlantıyı panoya kopyala + + Could not generate an API key + API anahtarı oluşturulamadı - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Portfolio Snapshot - Portföy Anlık Görüntüsü + + Set this API key in your self-hosted environment: + Bu API anahtarını kendi barındırılan ortamınıza ayarlayın: - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Change with currency effect Change - Kur farkı etkisiyle değişim Değişim + + Ghostfolio Premium Data Provider API Key + Ghostfolio Premium Veri Sağlayıcı API Anahtarı - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Performance with currency effect Performance - Kur farkı etkisiyle performans Performans + + Do you really want to generate a new API key? + Yeni bir API anahtarı oluşturmak istediğinize emin misiniz? - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Min - Eşik Min + + Tag + Etiket - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + libs/ui/src/lib/assistant/assistant.html + 194 - - Threshold Max - Eşik Max + + API Key + API Anahtarı - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Close - Kapat + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Kendi barındırılan ortamlar için Ghostfolio Premium Veri Sağlayıcı API anahtarı oluştur... - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - Customize - Özelleştir + + out of + dışında - apps/client/src/app/components/rule/rule.component.html - 67 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - No auto-renewal. - Otomatik yenileme yok. + + rules align with your portfolio. + kurallar portföyünüze uyuyor. - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - Today - Bugün + + Save + Kaydet - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - This year - Bu yıl + + Asset Class Cluster Risks + Varlık Sınıfı Küme Riskleri - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - From the beginning - Başlangıçtan beri + + Me + Ben - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - Oops! Invalid currency. - Hay Allah! Geçersiz para birimi. + + Received Access + Alınan Erişim - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - This page has been archived. - Bu sayfa arşivlendi. + + Please enter your Ghostfolio API key. + Lütfen Ghostfolio API anahtarınızı girin. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is Open Source Software - , Açık Kaynak Kodlu Yazılımdır + + AI prompt has been copied to the clipboard + Yapay zeka istemi panoya kopyalandı - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is not Open Source Software - , Açık Kaynak Kodlu Yazılımdır + + Link has been copied to the clipboard + Bağlantı panoya kopyalandı - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is Open Source Software - , Açık Kaynak Kodlu Yazılımdır + + Regional Market Cluster Risks + Bölgesel Piyasa Küme Riskleri - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - is not Open Source Software - , Açık Kaynak Kodlu Yazılım değildir + + Lazy + Tembel - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be self-hosted - kendi sunucunuzda barındırılabilir + + Instant + Anında - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be self-hosted - kendi sunucunuzda barındırılmaz + + Default Market Price + Varsayılan Piyasa Fiyatı - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - can be self-hosted - kendi sunucunuzda barındırılabilir + + Mode + Mod - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - cannot be self-hosted - kendi sunucunuzda barındırılmaz + + Selector + Seçici - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - can be used anonymously - gizli kullanımda kullanılabilir + + HTTP Request Headers + HTTP İstek Başlıkları - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - cannot be used anonymously - gizli kullanımda kullanılmaz - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + + end of day + gün sonu + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be used anonymously - gizli kullanımda kullanılabilir + + real-time + gerçek zamanlı - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be used anonymously - gizli kullanımda kullanılmaz + + Open Duck.ai + Duck.ai’yi aç - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - offers a free plan - ücretsiz plan sunar + + Create + Oluştur - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - does not offer a free plan - ücretsiz plan sunmaz + + Market Data + Piyasa Verileri - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - offers a free plan - ücretsiz plan sunar + + Change + Değişim - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - does not offer a free plan - ücretsiz plan sunmaz + + Performance + Performans - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Oops! Could not find any assets. - Oops! Herhangi bir varlık bulunamadı. - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Data Providers - Veri Sağlayıcıları + + Copy portfolio data to clipboard for AI prompt + Yapay zeka istemi için portföy verilerini panoya kopyalayın - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Set API key - API anahtarını ayarla + + Copy AI prompt to clipboard for analysis + Yapay zeka istemini analiz için panoya kopyala - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Get access to 80’000+ tickers from over 50 exchanges - 80’000+ sembolden 50’den fazla borsada erişim alın + + Armenia + Ermenistan libs/ui/src/lib/i18n.ts - 24 + 73 - - Ukraine - Ukraine + + British Virgin Islands + Britanya Virjin Adaları libs/ui/src/lib/i18n.ts - 95 + 77 - - Join now - Şimdi katıl + + Singapore + Singapur - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 91 - - Glossary - Sözlük - - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 - + + Terms and Conditions + Hükümler ve Koşullar - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Guides - Kılavuzlar + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Lütfen güvenlik tokenınızı güvende tutun. Kaybetmeniz halinde hesabınızı kurtarmanız mümkün olmayacaktır. - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + I understand that if I lose my security token, I cannot recover my account + Güvenlik belirtecimi kaybedersem hesabımı kurtaramayacağımı anlıyorum. - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - guides - kılavuzlar - snake-case + + Continue + Devam et - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + İşte güvenlik belirteciniz. Yalnızca bir kez görülebilir, lütfen saklayın ve güvenli bir yerde muhafaza edin. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - glossary - sözlük - snake-case + + Security token + Güvenlik belirteci - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Threshold range - Eşik aralığı + + Do you really want to generate a new security token for this user? + Bu kullanıcı için yeni bir güvenlik belirteci oluşturmak istediğinize emin misiniz? - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray statik analiz kullanarak portföyünüzdeki potansiyel sorunları ve riskleri keşfetmek için kullanılır. Aşağıdaki kuralları ayarlayın ve özel eşikleri ayarlayarak kişisel yatırım stratejinize uyun. + + Generate Security Token + Güvenlik belirteci oluştur - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Economic Market Cluster Risks - Ekonomik Piyasa Küme Riskleri + + United Kingdom + Birleşik Krallık - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + libs/ui/src/lib/i18n.ts + 96 - - of - ın + + Terms of Service + Hükümler ve Koşullar - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/app.component.html + 112 - - daily requests - günlük istekler + + terms-of-service + hizmet-kosullari + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/common/src/lib/routes/routes.ts + 212 - - - Remove API key - API anahtarını kaldır - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + libs/common/src/lib/routes/routes.ts + 215 - - Do you really want to delete the API key? - API anahtarını silmek istediğinize emin misiniz? + + Terms of Service + Hizmet Koşulları - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 217 - - Please enter your Ghostfolio API key: - Ghostfolio API anahtarınızı girin: + + Terms of Service + Hizmet Koşulları - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - I have an API key - Bir API anahtarım var + + and I agree to the Terms of Service. + ve kabul ediyorum Hizmet Koşulları. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - API Requests Today - API Günü İstekleri + + () is already in use. + () is already in use. - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Could not generate an API key - API anahtarı oluşturulamadı + + An error occurred while updating to (). + Güncelleştirilirken bir hata oluştu (). - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Set this API key in your self-hosted environment: - Bu API anahtarını kendi barındırılan ortamınıza ayarlayın: + + Apply + Uygula - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Ghostfolio Premium Data Provider API Key - Ghostfolio Premium Veri Sağlayıcı API Anahtarı + + with API access for + API erişimi için - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Do you really want to generate a new API key? - Yeni bir API anahtarı oluşturmak istediğinize emin misiniz? + + Gather Recent Historical Market Data + Yakın Geçmiş Piyasa Verilerini Topla - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Tag - Etiket + + Gather All Historical Market Data + Tüm Geçmiş Piyasa Verilerini Topla - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - API Key - API Anahtarı + + Gather Historical Market Data + Geçmiş Piyasa Verilerini Topla - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Kendi barındırılan ortamlar için Ghostfolio Premium Veri Sağlayıcı API anahtarı oluştur... + + Data Gathering is off + Veri Toplama Kapalı - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - out of - dışında + + Performance Calculation + Performans Hesaplaması - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - rules align with your portfolio. - kurallar portföyünüze uyuyor. + + someone + birisi - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Save - Kaydet + + Add asset to watchlist + Varlığı izleme listesine ekle - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - Asset Class Cluster Risks - Varlık Sınıfı Küme Riskleri + + Watchlist + İzleme Listesi - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Me - Ben - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/pages/features/features-page.html + 197 - - Received Access - Alınan Erişim + + Watchlist + İzleme Listesi - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + libs/common/src/lib/routes/routes.ts + 110 - - Please enter your Ghostfolio API key. - Lütfen Ghostfolio API anahtarınızı girin. + + Do you really want to delete this item? + Bu öğeyi silmek istediğinize emin misiniz? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - AI prompt has been copied to the clipboard - Yapay zeka istemi panoya kopyalandı + + Log out + Oturumu kapat - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/header/header.component.html + 329 - - Link has been copied to the clipboard - Bağlantı panoya kopyalandı + + Calculations are based on delayed market data and may not be displayed in real-time. + Hesaplamalar gecikmeli piyasa verilerine dayanmaktadır ve gerçek zamanlı olarak görüntülenemeyebilir. - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Early Access - Erken Erişim - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/markets/markets.html + 52 - - Regional Market Cluster Risks - Bölgesel Piyasa Küme Riskleri + + changelog + degisiklik-gunlugu + kebab-case - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + libs/common/src/lib/routes/routes.ts + 180 - - - Lazy - Tembel - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/common/src/lib/routes/routes.ts + 183 - - Instant - Anında + + Demo user account has been synced. + Demo kullanıcı hesabı senkronize edildi. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Default Market Price - Varsayılan Piyasa Fiyatı + + Sync Demo User Account + Demo Kullanıcı Hesabını Senkronize Et - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Mode - Mod + + Emergency Fund: Set up + Acil Durum Fonu: Kurulum - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Selector - Seçici + + No emergency fund has been set up + Acil durum fonu oluşturulmadı - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - HTTP Request Headers - HTTP İstek Başlıkları + + An emergency fund has been set up + Acil durum fonu kuruldu - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - end of day - gün sonu + + Fee Ratio + Ücret Oranı - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - real-time - gerçek zamanlı + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Ücretler, ilk yatırımınızın %${thresholdMax} kadarını aşıyor (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Open Duck.ai - Duck.ai’yi aç + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + Ücretler, ilk yatırımınızın %${thresholdMax}’ını (${feeRatio}%) aşmaz - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Create - Oluştur + + Name + İsim - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Market Data - Piyasa Verileri + + Find holding or page... + Holding veya sayfayı bulun... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Change - Değişim + + Quick Links + Hızlı Bağlantılar - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 43 - - Performance - Performans + + Asset Profiles + Varlık Profilleri - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 99 + + + Live Demo + Canlı Demo - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/common/src/lib/routes/routes.ts + 231 - - Copy portfolio data to clipboard for AI prompt - Yapay zeka istemi için portföy verilerini panoya kopyalayın + + Open Source Alternative to + Açık Kaynak Alternatifi - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 326 - - Copy AI prompt to clipboard for analysis - Yapay zeka istemini analiz için panoya kopyala + + Single Account + Tek Hesap - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Armenia - Ermenistan + + Your net worth is managed by a single account + Net değeriniz tek bir hesap tarafından yönetiliyor - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - British Virgin Islands - Britanya Virjin Adaları + + Your net worth is managed by ${accountsLength} accounts + Net değeriniz ${accountsLength} hesaplar tarafından yönetiliyor - libs/ui/src/lib/i18n.ts - 77 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Singapore - Singapur + + Holdings + Holdingler - libs/ui/src/lib/i18n.ts - 91 + libs/ui/src/lib/assistant/assistant.html + 69 - - Terms and Conditions - Hükümler ve Koşullar + + personal-finance-tools + kisisel-finans-araclari + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 312 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Lütfen güvenlik tokenınızı güvende tutun. Kaybetmeniz halinde hesabınızı kurtarmanız mümkün olmayacaktır. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 315 - - - I understand that if I lose my security token, I cannot recover my account - Güvenlik belirtecimi kaybedersem hesabımı kurtaramayacağımı anlıyorum. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 323 - - Continue - Devam et + + markets + pazarlar + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 304 - - - Here is your security token. It is only visible once, please store and keep it in a safe place. - İşte güvenlik belirteciniz. Yalnızca bir kez görülebilir, lütfen saklayın ve güvenli bir yerde muhafaza edin. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 307 - - Security token - Güvenlik belirteci + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Do you really want to generate a new security token for this user? - Bu kullanıcı için yeni bir güvenlik belirteci oluşturmak istediğinize emin misiniz? + + Get Access + Get Access - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Generate Security Token - Güvenlik belirteci oluştur + + Learn more + Learn more - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - United Kingdom - Birleşik Krallık + + new + new - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms of Service - Hükümler ve Koşullar + + Limited Offer! + Limited Offer! - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - terms-of-service - Hizmet Koşulları - snake-case + + Get extra + Get extra - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Available - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Unavailable - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + new - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Terms of Service - Hizmet Koşulları + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - Hizmet Koşulları + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - and I agree to the Terms of Service. - ve kabul ediyorum Hizmet Koşulları. + + Equity + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - () is already in use. - () is already in use. + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - An error occurred while updating to (). - Güncelleştirilirken bir hata oluştu (). + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Apply - Uygula + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - with API access for - API erişimi için + + Fixed Income + Fixed Income - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather Recent Historical Market Data - Yakın Geçmiş Piyasa Verilerini Topla + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather All Historical Market Data - Tüm Geçmiş Piyasa Verilerini Topla + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Historical Market Data - Geçmiş Piyasa Verilerini Topla + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off - Veri Toplama Kapalı + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation - Performans Hesaplaması + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone - birisi + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist - Varlığı izleme listesine ekle + + Investment + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist - İzleme Listesi + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - İzleme Listesi + + start + start + kebab-case - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - Erken Erişim + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - Bu öğeyi silmek istediğinize emin misiniz? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - Log out + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 56b5ba426..a82a3fee1 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -5,28 +5,32 @@ Features Функції - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 Internationalization Інтернаціоналізація - apps/client/src/app/app-routing.module.ts - 88 + libs/common/src/lib/routes/routes.ts + 119 Sign in Увійти - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -74,12 +78,16 @@ apps/client/src/app/components/header/header.component.html - 394 + 408 apps/client/src/app/components/home-market/home-market.html 2 + + apps/client/src/app/components/markets/markets.html + 2 + apps/client/src/app/pages/resources/markets/resources-markets.component.html 2 @@ -94,11 +102,11 @@ apps/client/src/app/components/header/header.component.html - 82 + 88 apps/client/src/app/components/header/header.component.html - 287 + 301 apps/client/src/app/pages/resources/overview/resources-overview.component.html @@ -114,11 +122,11 @@ apps/client/src/app/components/header/header.component.html - 117 + 123 apps/client/src/app/components/header/header.component.html - 360 + 374 @@ -194,7 +202,7 @@ apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + 183 apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -206,7 +214,7 @@ apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + 189 apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html @@ -238,7 +246,7 @@ apps/client/src/app/components/header/header.component.html - 347 + 361 apps/client/src/app/pages/features/features-page.html @@ -254,7 +262,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + 156 @@ -278,15 +286,15 @@ apps/client/src/app/components/header/header.component.html - 99 + 105 apps/client/src/app/components/header/header.component.html - 299 + 313 apps/client/src/app/components/header/header.component.html - 375 + 389 apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -365,7636 +373,7674 @@ 221 - + about about - snake-case + kebab-case - apps/client/src/app/app.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 214 + + + license + license + kebab-case - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 191 + + + privacy-policy + privacy-policy + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 207 + + + faq + faq + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/about-page.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/about/about-page.component.ts - 84 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 245 + + + features + features + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 255 + + + markets + markets + kebab-case - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + pricing + kebab-case - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 270 + + + register + register + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + libs/common/src/lib/routes/routes.ts + 280 + + + resources + resources + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/routes/routes.ts + 284 - - - license - license - snake-case - apps/client/src/app/app.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/core/paths.ts - 5 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 298 - - - privacy-policy - privacy-policy - snake-case - apps/client/src/app/app.component.ts - 76 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/core/paths.ts - 8 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 322 - - faq - faq - snake-case + + Alias + Псевдонім - apps/client/src/app/app.component.ts - 82 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/core/paths.ts - 3 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 + + + Grantee + Одержувач - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + apps/client/src/app/components/access-table/access-table.component.html + 11 + + + Permission + Дозвіл - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + apps/client/src/app/components/access-table/access-table.component.html + 18 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 + + + View + Перегляд - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + apps/client/src/app/components/access-table/access-table.component.html + 23 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - features - features - snake-case + + Restricted view + Обмежений перегляд - apps/client/src/app/app.component.ts - 83 + apps/client/src/app/components/access-table/access-table.component.html + 26 - apps/client/src/app/components/header/header.component.ts - 83 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 + + + Details + Деталі - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/components/access-table/access-table.component.html + 33 + + + Copy link to clipboard + Скопіювати посилання в буфер обміну - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/components/access-table/access-table.component.html + 70 + + + Revoke + Відкликати - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/components/access-table/access-table.component.html + 75 + + + Link has been copied to the clipboard + Посилання скопійовано в буфер обміну - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/components/access-table/access-table.component.ts + 65 + + + Do you really want to revoke this granted access? + Ви дійсно хочете відкликати цей наданий доступ? - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/components/access-table/access-table.component.ts + 79 + + + Cash Balance + Баланс готівки - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 47 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity + Капітал - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 58 + + + Activities + Діяльність - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 92 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 205 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 45 - - - markets - markets - snake-case - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/components/header/header.component.ts - 84 - - - apps/client/src/app/components/header/header.component.ts - 89 - - - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 224 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Platform + Платформа - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 67 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 - - pricing - pricing - snake-case - - apps/client/src/app/app.component.ts - 85 - - - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 - + + Holdings + Активи - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 79 - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/public/public-page.html + 70 + + + Cash Balances + Баланс готівки - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Transfer Cash Balance + Перевести баланс готівки - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/core/paths.ts + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 7 + + + Name + Назва - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 89 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 287 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 22 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html 15 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 46 + + + apps/client/src/app/components/admin-tag/admin-tag.component.html + 22 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 15 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 15 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 139 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + libs/ui/src/lib/activities-table/activities-table.component.html + 138 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 16 - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 - - register - register - snake-case + + Total + Загалом - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + Currency + Валюта - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 185 - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 294 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 46 - apps/client/src/app/pages/features/features-page.component.ts - 28 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 145 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + libs/ui/src/lib/activities-table/activities-table.component.html + 276 - - resources - resources - snake-case + + Value + Вартість - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/components/header/header.component.ts - 92 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 205 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 208 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 211 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + libs/ui/src/lib/activities-table/activities-table.component.html + 257 - apps/client/src/app/pages/features/features-page.component.ts - 29 + libs/ui/src/lib/activities-table/activities-table.component.html + 293 - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 25 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 102 + + + Edit + Редагувати - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 268 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 74 - - - Alias - Псевдонім - apps/client/src/app/components/access-table/access-table.component.html - 4 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 67 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + libs/ui/src/lib/activities-table/activities-table.component.html + 430 - - Grantee - Одержувач + + Delete + Видалити - apps/client/src/app/components/access-table/access-table.component.html - 11 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 289 - - - Permission - Дозвіл - apps/client/src/app/components/access-table/access-table.component.html - 18 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 290 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - - - View - Перегляд - apps/client/src/app/components/access-table/access-table.component.html - 23 + apps/client/src/app/components/admin-overview/admin-overview.html + 129 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 85 - - - Restricted view - Обмежений перегляд - apps/client/src/app/components/access-table/access-table.component.html - 26 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 78 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 - - - Details - Деталі - - apps/client/src/app/components/access-table/access-table.component.html - 33 - - - - Copy link to clipboard - Скопіювати посилання в буфер обміну - apps/client/src/app/components/access-table/access-table.component.html - 70 + libs/ui/src/lib/activities-table/activities-table.component.html + 457 - - - Revoke - Відкликати - apps/client/src/app/components/access-table/access-table.component.html - 75 + libs/ui/src/lib/benchmark/benchmark.component.html + 169 - - Link has been copied to the clipboard - Посилання скопійовано в буфер обміну + + Do you really want to delete this account? + Ви дійсно хочете видалити цей обліковий запис? - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 107 - - Do you really want to revoke this granted access? - Ви дійсно хочете відкликати цей наданий доступ? + + Type + Тип - apps/client/src/app/components/access-table/access-table.component.ts - 79 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - - - Cash Balance - Баланс готівки - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 47 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 136 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + libs/ui/src/lib/activities-table/activities-table.component.html + 161 - - Equity - Капітал + + Asset Profile + Профіль активу - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 - - Activities - Діяльність + + Historical Market Data + Історичні ринкові дані - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 63 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 85 + + + Portfolio Snapshot + Знімок портфеля - apps/client/src/app/components/accounts-table/accounts-table.component.html - 119 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 + + + Symbol + Символ - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 205 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 46 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 75 - apps/client/src/app/components/admin-users/admin-users.html - 135 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 153 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 39 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 - - - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + 308 - - Platform - Платформа + + Data Source + Джерело даних - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 67 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 55 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 86 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 106 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 163 - - - Holdings - Активи - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 79 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 155 + + + Priority + Пріоритет - apps/client/src/app/components/home-holdings/home-holdings.html - 4 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 + + + Attempts + Спроби - apps/client/src/app/pages/public/public-page.html - 70 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 83 + + + Created + Створено - libs/ui/src/lib/assistant/assistant.html - 44 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 92 - - Cash Balances - Баланс готівки + + Finished + Завершено - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 101 - - Transfer Cash Balance - Перевести баланс готівки + + Status + Статус - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 110 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 - - Name - Назва + + Delete Jobs + Видалити завдання - apps/client/src/app/components/accounts-table/accounts-table.component.html - 43 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 151 + + + View Data + Переглянути дані - apps/client/src/app/components/admin-market-data/admin-market-data.html - 89 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 166 + + + View Stacktrace + Переглянути трасування - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 287 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 173 + + + Execute Job + Виконати завдання - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 + + + Delete Job + Видалити завдання - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 15 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 180 + + + Benchmarks + Порівняльні показники - apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 + + + Currencies + Валюти - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 86 + + + ETFs without Countries + ETF без країн - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 15 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 - - - libs/ui/src/lib/activities-table/activities-table.component.html - 138 - - - libs/ui/src/lib/benchmark/benchmark.component.html - 4 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 - - - libs/ui/src/lib/top-holdings/top-holdings.component.html - 16 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 91 + + + ETFs without Sectors + ETF без секторів - libs/ui/src/lib/top-holdings/top-holdings.component.html - 88 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 96 - - Total - Загалом + + Filter by... + Фільтрувати за... - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 330 - - Currency - Валюта + + Asset Class + Клас активу - apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 115 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 214 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 294 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 46 + 304 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 235 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + 290 - libs/ui/src/lib/activities-table/activities-table.component.html - 276 + libs/ui/src/lib/assistant/assistant.html + 205 - - Value - Вартість + + Asset Sub Class + Підклас активу - apps/client/src/app/components/accounts-table/accounts-table.component.html - 171 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 124 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 206 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 223 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 53 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 317 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 244 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + 306 + + + Market Price + Ринкова ціна - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 133 - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 109 - libs/ui/src/lib/activities-table/activities-table.component.html - 257 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 26 + + + First Activity + Перша активність - libs/ui/src/lib/activities-table/activities-table.component.html - 293 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 148 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 196 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 25 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 212 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 102 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 - - Edit - Редагувати - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 278 - + + Activities Count + Кількість активностей apps/client/src/app/components/admin-market-data/admin-market-data.html - 268 + 157 + + + Historical Data + Історичні дані - apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 166 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 44 + + + Sectors Count + Кількість секторів - libs/ui/src/lib/activities-table/activities-table.component.html - 430 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 175 - - Delete - Видалити + + Countries Count + Кількість країн - apps/client/src/app/components/accounts-table/accounts-table.component.html - 289 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 184 + + + Gather Profile Data + Зібрати дані профілю apps/client/src/app/components/admin-market-data/admin-market-data.html - 290 + 235 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 44 + + + Delete Profiles + Видалити профілі - apps/client/src/app/components/admin-overview/admin-overview.html - 129 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 + + + Do you really want to delete this asset profile? + Ви дійсно хочете видалити цей профіль активу? - apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Oops! Could not delete profiles. + Упс! Не вдалося видалити профілі. - apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 56 + + + Do you really want to delete these profiles? + Ви дійсно хочете видалити ці профілі? - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 + + + Error + Помилка - libs/ui/src/lib/activities-table/activities-table.component.html - 457 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 + + + The current market price is + Поточна ринкова ціна - libs/ui/src/lib/benchmark/benchmark.component.html - 155 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 - - Do you really want to delete this account? - Ви дійсно хочете видалити цей обліковий запис? + + Refresh + Оновити - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 107 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 17 - - Type - Тип + + Sector + Сектор - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 240 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 261 + + + Country + Країна - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 251 - libs/ui/src/lib/activities-table/activities-table.component.html - 161 + apps/client/src/app/components/admin-users/admin-users.html + 77 - - - Asset Profile - Профіль активу - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 271 - - Historical Market Data - Історичні ринкові дані - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 - + + Sectors + Сектори apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 85 + 257 - - - Portfolio Snapshot - Знімок портфеля - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 484 - - - Symbol - Символ - apps/client/src/app/components/admin-jobs/admin-jobs.html - 46 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 277 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 75 + apps/client/src/app/pages/public/public-page.html + 106 + + + Countries + Країни apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 153 + 267 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 39 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 495 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 289 - - Data Source - Джерело даних - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 - - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 106 - + + Benchmark + Порівняльний показник apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 163 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 346 - - Priority - Пріоритет + + Symbol Mapping + Зіставлення символів - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 - - Attempts - Спроби + + Scraper Configuration + Конфігурація скребка - apps/client/src/app/components/admin-jobs/admin-jobs.html - 83 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 377 - - Created - Створено + + Test + Тест - apps/client/src/app/components/admin-jobs/admin-jobs.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 - - Finished - Завершено + + Url + URL - apps/client/src/app/components/admin-jobs/admin-jobs.html - 101 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 455 - - - Status - Статус - apps/client/src/app/components/admin-jobs/admin-jobs.html - 110 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 507 - - - Delete Jobs - Видалити завдання - apps/client/src/app/components/admin-jobs/admin-jobs.html - 151 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 38 - - - View Data - Переглянути дані - apps/client/src/app/components/admin-jobs/admin-jobs.html - 166 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - View Stacktrace - Переглянути трасування + + Note + Примітка - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 520 - - - Execute Job - Виконати завдання - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 - - - Delete Job - Видалити завдання - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 275 - - Benchmarks - Порівняльні показники + + Cancel + Скасувати - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 146 - - - Currencies - Валюти - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 86 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 544 - - - ETFs without Countries - ETF без країн - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 56 - - - ETFs without Sectors - ETF без секторів - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 38 - - - Filter by... - Фільтрувати за... - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 330 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - - - Asset Class - Клас активу - apps/client/src/app/components/admin-market-data/admin-market-data.html - 115 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 15 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 214 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 304 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + 338 - libs/ui/src/lib/assistant/assistant.html - 168 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 48 - - - Asset Sub Class - Підклас активу - apps/client/src/app/components/admin-market-data/admin-market-data.html - 124 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 46 + + + Save + Зберегти apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 223 + 551 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 317 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 63 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 45 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 - - - - Market Price - Ринкова ціна - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 133 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 22 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 26 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 135 - - - First Activity - Перша активність - apps/client/src/app/components/admin-market-data/admin-market-data.html - 148 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 345 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 48 - - Activities Count - Кількість активностей + + Add Asset Profile + Додати профіль активу - apps/client/src/app/components/admin-market-data/admin-market-data.html - 157 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 - - Historical Data - Історичні дані + + Search + Пошук - apps/client/src/app/components/admin-market-data/admin-market-data.html - 166 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + Додати вручну - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 - - Sectors Count - Кількість секторів + + Add Currency + Додати валюту - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 22 - - Countries Count - Кількість країн + + Name, symbol or ISIN + Назва, символ або ISIN - apps/client/src/app/components/admin-market-data/admin-market-data.html - 184 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - - - Gather Profile Data - Зібрати дані профілю - apps/client/src/app/components/admin-market-data/admin-market-data.html - 235 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 29 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 44 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 10 - - - Delete Profiles - Видалити профілі - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 - - Do you really want to delete this asset profile? - Ви дійсно хочете видалити цей профіль активу? + + Oops! Invalid currency. + Упс! Невірна валюта. - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - Oops! Could not delete profiles. - Упс! Не вдалося видалити профілі. + + Do you really want to delete this coupon? + Ви дійсно хочете видалити цей купон? - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 142 - - Do you really want to delete these profiles? - Ви дійсно хочете видалити ці профілі? + + Do you really want to delete this system message? + Ви дійсно хочете видалити це системне повідомлення? - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 - - Error - Помилка + + Do you really want to flush the cache? + Ви дійсно хочете очистити кеш? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 179 - - The current market price is - Поточна ринкова ціна + + Please set your system message: + Будь ласка, встановіть ваше системне повідомлення: - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 199 - - Refresh - Оновити + + Version + Версія - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 17 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - Sector - Сектор + + User Count + Кількість користувачів - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 240 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 + + + Activity Count + Кількість активностей - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 - - Country - Країна + + per User + на користувача - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 251 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + User Signup + Реєстрація користувача - apps/client/src/app/components/admin-users/admin-users.html - 77 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Read-only Mode + Режим лише для читання - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 + apps/client/src/app/components/admin-overview/admin-overview.html + 48 - - Sectors - Сектори + + Data Gathering + Збір даних apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 257 + 541 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 484 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 + + + System Message + Системне повідомлення - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 + apps/client/src/app/components/admin-overview/admin-overview.html + 72 + + + Set Message + Встановити повідомлення - apps/client/src/app/pages/public/public-page.html - 106 + apps/client/src/app/components/admin-overview/admin-overview.html + 94 - - Countries - Країни + + Coupons + Купони - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 + apps/client/src/app/components/admin-overview/admin-overview.html + 102 + + + Add + Додати - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 495 + apps/client/src/app/components/admin-overview/admin-overview.html + 162 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 - - Benchmark - Порівняльний показник + + Housekeeping + Прибирання - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 - - Symbol Mapping - Зіставлення символів + + Flush Cache + Очистити кеш - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 352 + apps/client/src/app/components/admin-overview/admin-overview.html + 186 - - Scraper Configuration - Конфігурація скребка + + Add Platform + Додати платформу - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 377 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 8 - - Test - Тест + + Accounts + Рахунки - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 52 - - - Url - URL - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 455 + apps/client/src/app/components/admin-users/admin-users.html + 114 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 507 + apps/client/src/app/components/header/header.component.html + 58 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + apps/client/src/app/components/header/header.component.html + 268 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 25 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - - - Note - Примітка - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 520 + apps/client/src/app/pages/accounts/accounts-page.html + 4 + + + Do you really want to delete this platform? + Ви дійсно хочете видалити цю платформу? - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 87 + + + Update platform + Оновити платформу - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 - - Cancel - Скасувати + + Add platform + Додати платформу - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 146 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 10 + + + Data Providers + Постачальники даних - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 544 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 + + + Valid until + Дійсне до - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 56 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 74 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + libs/ui/src/lib/membership-card/membership-card.component.html 42 + + + of + з - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 25 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 + + + daily requests + щоденних запитів - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 15 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 + + + Remove API key + Вилучити ключ API - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 + + + Set API key + Встановити ключ API - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 + + + Platforms + Платформи - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 65 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 195 + + + Tags + Теги - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 201 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 48 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 4 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 16 - - Save - Зберегти + + Do you really want to delete the API key? + Ви дійсно хочете видалити ключ API? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 551 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 + + + Please enter your Ghostfolio API key. + Будь ласка, введіть ваш ключ API Ghostfolio. - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 63 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 + + + or + або - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 32 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 31 - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 22 + apps/client/src/app/pages/landing/landing-page.html + 47 - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 135 + apps/client/src/app/pages/landing/landing-page.html + 450 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 97 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/pages/register/register-page.html + 30 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + apps/client/src/app/pages/webauthn/webauthn-page.html + 30 + + + Add Tag + Додати тег - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 8 - - Add Asset Profile - Додати профіль активу + + User + Користувач - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 31 - - - Search - Пошук - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/components/header/header.component.html + 231 - - Add Manually - Додати вручну + + Do you really want to delete this tag? + Ви дійсно хочете видалити цей тег? - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 85 - - Add Currency - Додати валюту - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 22 - - - - Name, symbol or ISIN - Назва, символ або ISIN - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 - + + Update tag + Оновити тег - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 29 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 8 + + + Add tag + Додати тег - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 10 + + + Do you really want to delete this user? + Ви дійсно хочете видалити цього користувача? - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + apps/client/src/app/components/admin-users/admin-users.component.ts + 142 - - Oops! Invalid currency. - Упс! Невірна валюта. + + User + Користувач - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/admin-users/admin-users.html + 29 - - Do you really want to delete this coupon? - Ви дійсно хочете видалити цей купон? + + Registration + Реєстрація - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 + apps/client/src/app/components/admin-users/admin-users.html + 97 - - Do you really want to delete this system message? - Ви дійсно хочете видалити це системне повідомлення? + + Engagement per Day + Взаємодія за день - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 + apps/client/src/app/components/admin-users/admin-users.html + 157 - - Do you really want to flush the cache? - Ви дійсно хочете очистити кеш? + + API Requests Today + Запити API сьогодні - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Please set your system message: - Будь ласка, встановіть ваше системне повідомлення: + + Last Request + Останній запит - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 + apps/client/src/app/components/admin-users/admin-users.html + 202 - - Version - Версія + + Impersonate User + Видавати себе за користувача - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/components/admin-users/admin-users.html + 239 - - User Count - Кількість користувачів + + Delete User + Видалити користувача - apps/client/src/app/components/admin-overview/admin-overview.html - 13 + apps/client/src/app/components/admin-users/admin-users.html + 260 - - Activity Count - Кількість активностей + + Performance + Прибутковість - apps/client/src/app/components/admin-overview/admin-overview.html - 19 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 6 - - - per User - на користувача - apps/client/src/app/components/admin-overview/admin-overview.html - 28 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 142 - - User Signup - Реєстрація користувача + + Compare with... + Порівняти з... - apps/client/src/app/components/admin-overview/admin-overview.html - 34 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 18 - - Read-only Mode - Режим лише для читання + + Manage Benchmarks + Управляти порівняльними показниками - apps/client/src/app/components/admin-overview/admin-overview.html - 48 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html + 35 - - Data Gathering - Збір даних + + Portfolio + Портфель - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 120 - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - - - System Message - Системне повідомлення - apps/client/src/app/components/admin-overview/admin-overview.html - 72 + libs/common/src/lib/routes/routes.ts + 151 - - Set Message - Встановити повідомлення + + Benchmark + Порівняльний показник - apps/client/src/app/components/admin-overview/admin-overview.html - 94 + apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts + 132 - - Coupons - Купони + + Current Market Mood + Поточний ринковий настрій - apps/client/src/app/components/admin-overview/admin-overview.html - 102 + apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html + 12 - - Add - Додати + + Overview + Огляд - apps/client/src/app/components/admin-overview/admin-overview.html - 162 + apps/client/src/app/components/header/header.component.html + 30 - libs/ui/src/lib/account-balances/account-balances.component.html - 93 + apps/client/src/app/components/header/header.component.html + 248 - - - Housekeeping - Прибирання - apps/client/src/app/components/admin-overview/admin-overview.html - 170 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 - - Flush Cache - Очистити кеш + + Portfolio + Портфель - apps/client/src/app/components/admin-overview/admin-overview.html - 174 + apps/client/src/app/components/header/header.component.html + 44 - - - Add Platform - Додати платформу - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + apps/client/src/app/components/header/header.component.html + 258 - - Accounts - Рахунки - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 - + + Admin Control + Управління адміністратором - apps/client/src/app/components/admin-users/admin-users.html - 114 + apps/client/src/app/components/header/header.component.html + 74 apps/client/src/app/components/header/header.component.html - 54 + 289 + + + Upgrade Plan + Оновити план apps/client/src/app/components/header/header.component.html - 259 + 193 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 70 - apps/client/src/app/pages/accounts/accounts-page.html - 4 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 20 - - - Do you really want to delete this platform? - Ви дійсно хочете видалити цю платформу? - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 87 + apps/client/src/app/pages/pricing/pricing-page.html + 298 - - Update platform - Оновити платформу + + Renew Plan + Поновити план - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + apps/client/src/app/components/header/header.component.html + 191 - - - Add platform - Додати платформу - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 10 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 - - - Data Providers - Постачальники даних - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/pricing/pricing-page.html + 296 - - Valid until - Дійсне до + + Me + Я - apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + apps/client/src/app/components/header/header.component.html + 213 + + + My Ghostfolio + Мій Ghostfolio - libs/ui/src/lib/membership-card/membership-card.component.html - 42 + apps/client/src/app/components/header/header.component.html + 277 - - of - з + + About Ghostfolio + Про Ghostfolio - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/components/header/header.component.html + 326 - - - daily requests - щоденних запитів - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + apps/client/src/app/pages/about/overview/about-overview-page.html + 5 - - Remove API key - Вилучити ключ API + + Sign in + Увійти - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + apps/client/src/app/components/header/header.component.html + 422 - - - Set API key - Встановити ключ API - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 71 - - Platforms - Платформи + + Get started + Почати - apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + apps/client/src/app/components/header/header.component.html + 432 - - Tags - Теги + + Oops! Incorrect Security Token. + Упс! Неправильний Секретний Токен. - apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + apps/client/src/app/components/header/header.component.ts + 252 - libs/ui/src/lib/tags-selector/tags-selector.component.html - 4 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 - libs/ui/src/lib/tags-selector/tags-selector.component.html - 16 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 159 - - Do you really want to delete the API key? - Ви дійсно хочете видалити ключ API? + + Change with currency effect Change + Зміна з урахуванням валютного ефекту Зміна - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Please enter your Ghostfolio API key. - Будь ласка, введіть ваш ключ API Ghostfolio. + + Performance with currency effect Performance + Прибутковість з урахуванням валютного ефекту валюти Прибутковість - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - or - або + + Average Unit Price + Середня ціна за одиницю - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 98 + + + Minimum Price + Мінімальна ціна - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 31 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 125 + + + Maximum Price + Максимальна ціна - apps/client/src/app/pages/landing/landing-page.html - 47 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 141 + + + Quantity + Кількість - apps/client/src/app/pages/landing/landing-page.html - 450 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 151 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 97 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 189 - apps/client/src/app/pages/register/register-page.html - 30 + libs/ui/src/lib/activities-table/activities-table.component.html + 186 + + + Investment + Інвестиції - apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 165 - - - I have an API key - У мене є ключ API - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 58 - - Add Tag - Додати тег + + Dividend + Дивіденди - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 180 - - - User - Користувач - apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 319 - apps/client/src/app/components/header/header.component.html - 225 + apps/client/src/app/pages/features/features-page.html + 63 - - - Do you really want to delete this tag? - Ви дійсно хочете видалити цей тег? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 85 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 202 - - Update tag - Оновити тег + + Dividend Yield + Дохідність дивіденду - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 8 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - Add tag - Додати тег + + Fees + Комісії - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 10 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 202 - - - Do you really want to delete this user? - Ви дійсно хочете видалити цього користувача? - apps/client/src/app/components/admin-users/admin-users.component.ts - 142 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 84 - - - User - Користувач - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 213 - - Registration - Реєстрація + + Activity + Активність - apps/client/src/app/components/admin-users/admin-users.html - 97 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - Engagement per Day - Взаємодія за день + + Report Data Glitch + Повідомити про збій даних - apps/client/src/app/components/admin-users/admin-users.html - 157 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 423 - - API Requests Today - Запити API сьогодні + + Active + Активний - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 37 - - Last Request - Останній запит + + Closed + Закритий - apps/client/src/app/components/admin-users/admin-users.html - 202 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Impersonate User - Видавати себе за користувача + + Table + Таблиця - apps/client/src/app/components/admin-users/admin-users.html - 239 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 - - Delete User - Видалити користувача + + Chart + Графік - apps/client/src/app/components/admin-users/admin-users.html - 260 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Performance - Прибутковість + + Manage Activities + Керування діяльністю - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 6 + apps/client/src/app/components/home-holdings/home-holdings.html + 62 + + + Fear + Страх - libs/ui/src/lib/holdings-table/holdings-table.component.html - 142 + apps/client/src/app/components/home-market/home-market.component.ts + 28 - - - Compare with... - Порівняти з... - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 18 + apps/client/src/app/components/markets/markets.component.ts + 49 - - - Manage Benchmarks - Управляти порівняльними показниками - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html - 35 + libs/ui/src/lib/i18n.ts + 102 - - Portfolio - Портфель + + Greed + Жадібність - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + apps/client/src/app/components/home-market/home-market.component.ts + 29 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/components/markets/markets.component.ts + 50 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/ui/src/lib/i18n.ts + 103 - - Benchmark - Порівняльний показник + + Last Days + Останні днів - apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + apps/client/src/app/components/home-market/home-market.html + 7 - - - Current Market Mood - Поточний ринковий настрій - apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html - 12 + apps/client/src/app/components/markets/markets.html + 17 - - Overview - Огляд - - apps/client/src/app/components/header/header.component.html - 28 - + + Welcome to Ghostfolio + Ласкаво просимо в Ghostfolio - apps/client/src/app/components/header/header.component.html - 241 + apps/client/src/app/components/home-overview/home-overview.html + 7 - - Portfolio - Портфель + + Ready to take control of your personal finances? + Готові взяти під контроль ваші особисті фінанси? - apps/client/src/app/components/header/header.component.html - 41 + apps/client/src/app/components/home-overview/home-overview.html + 8 + + + Setup your accounts + Налаштуйте ваші рахунки - apps/client/src/app/components/header/header.component.html - 251 + apps/client/src/app/components/home-overview/home-overview.html + 15 - - Admin Control - Управління адміністратором + + Get a comprehensive financial overview by adding your bank and brokerage accounts. + Отримайте комплексний фінансовий огляд, додавши ваші банківські та брокерські рахунки. - apps/client/src/app/components/header/header.component.html - 68 + apps/client/src/app/components/home-overview/home-overview.html + 17 + + + Capture your activities + Фіксуйте свою діяльність - apps/client/src/app/components/header/header.component.html - 275 + apps/client/src/app/components/home-overview/home-overview.html + 24 - - Upgrade Plan - Оновити план + + Record your investment activities to keep your portfolio up to date. + Записуйте ваші інвестиційні дії, щоб підтримувати актуальність вашого портфеля. - apps/client/src/app/components/header/header.component.html - 187 + apps/client/src/app/components/home-overview/home-overview.html + 26 + + + Monitor and analyze your portfolio + Відстежуйте та аналізуйте свій портфель - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 70 + apps/client/src/app/components/home-overview/home-overview.html + 33 + + + Track your progress in real-time with comprehensive analysis and insights. + Відстежуйте свій прогрес в режимі реального часу за допомогою всебічного аналізу та інсайтів - apps/client/src/app/components/user-account-membership/user-account-membership.html - 20 + apps/client/src/app/components/home-overview/home-overview.html + 35 + + + Setup accounts + Налаштувати рахунки - apps/client/src/app/pages/pricing/pricing-page.html - 312 + apps/client/src/app/components/home-overview/home-overview.html + 48 - - Renew Plan - Поновити план + + Add activity + Додати активність - apps/client/src/app/components/header/header.component.html - 185 + apps/client/src/app/components/home-overview/home-overview.html + 56 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 18 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 8 + + + Summary + Зведення - apps/client/src/app/pages/pricing/pricing-page.html - 310 + apps/client/src/app/components/home-summary/home-summary.html + 2 - - Me - Я + + Total Amount + Загальна сума - apps/client/src/app/components/header/header.component.html - 207 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 141 - - My Ghostfolio - Мій Ghostfolio + + Savings Rate + Ставка заощаджень - apps/client/src/app/components/header/header.component.html - 266 + apps/client/src/app/components/investment-chart/investment-chart.component.ts + 200 - - About Ghostfolio - Про Ghostfolio + + Security Token + Секретний Токен - apps/client/src/app/components/header/header.component.html - 312 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 11 - apps/client/src/app/pages/about/overview/about-overview-page.html - 5 + apps/client/src/app/components/user-account-access/user-account-access.html + 3 - - - Sign in - Увійти - apps/client/src/app/components/header/header.component.html - 408 + apps/client/src/app/components/user-account-access/user-account-access.html + 15 - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 71 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 279 - - - Get started - Почати - apps/client/src/app/components/header/header.component.html - 418 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 64 + + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 72 - - Oops! Incorrect Security Token. - Упс! Неправильний Секретний Токен. + + Sign in with Internet Identity + Увійти з Інтернет-Ідентичністю - apps/client/src/app/components/header/header.component.ts - 246 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 42 + + + Sign in with Google + Увійти з Google - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 159 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 52 - - Change with currency effect Change - Зміна з урахуванням валютного ефекту Зміна + + Stay signed in + Залишатися в системі - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html + 61 - - Performance with currency effect Performance - Прибутковість з урахуванням валютного ефекту валюти Прибутковість + + Oops! A data provider is experiencing the hiccups. + Упс! У постачальника даних виникають проблеми. - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Average Unit Price - Середня ціна за одиницю + + Market data is delayed for + Ринкові дані затримуються для - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts 87 - - Minimum Price - Мінімальна ціна + + Time in Market + Час на ринку - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 3 - - Maximum Price - Максимальна ціна + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {дія} other {дій}} - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Quantity - Кількість + + Buy + Купівля - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 31 + + + Sell + Продаж - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 43 + + + Absolute Gross Performance + Абсолютний валовий дохід - libs/ui/src/lib/activities-table/activities-table.component.html - 186 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 70 - - Investment - Інвестиції + + Absolute Net Performance + Абсолютний чистий прибуток - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 102 + + + Net Performance + Чистий прибуток apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 58 + 117 - - Dividend - Дивіденди + + Total Assets + Загальні активи - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 143 + + + Valuables + Цінності apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 319 + 156 + + + + Emergency Fund + Резервний фонд + + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 168 apps/client/src/app/pages/features/features-page.html - 63 + 89 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 69 - - Dividend Yield - Дохідність дивіденду + + Cash + Готівка - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 202 - - Fees - Комісії - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 - + + Assets + Активи apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 84 + 215 + + + Buying Power + Купівельна спроможність - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 213 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 228 - - Activity - Активність + + Excluded from Analysis + Виключено з аналізу - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 240 - - Report Data Glitch - Повідомити про збій даних + + Liabilities + Зобов’язання - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 255 - - - Active - Активний - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + apps/client/src/app/pages/features/features-page.html + 102 - - Closed - Закритий + + Net Worth + Чиста вартість - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 273 - - Table - Таблиця + + Annualized Performance + Річна доходність - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 285 - - Chart - Графік + + Interest + Відсотки - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 307 - - Manage Activities - Керування діяльністю + + Save + Зберегти - apps/client/src/app/components/home-holdings/home-holdings.html + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts 62 - - Fear - Страх + + Please set the amount of your emergency fund. + Будь ласка, встановіть суму вашого резервного фонду. - apps/client/src/app/components/home-market/home-market.component.ts - 28 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 64 + + + Threshold range + Діапазон порогу - libs/ui/src/lib/i18n.ts - 102 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Greed - Жадібність + + Threshold Min + Мінімальний поріг - apps/client/src/app/components/home-market/home-market.component.ts - 29 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 + + + Threshold Max + Максимальний поріг - libs/ui/src/lib/i18n.ts - 103 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Last Days - Останні днів + + Close + Закрити - apps/client/src/app/components/home-market/home-market.html - 7 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Welcome to Ghostfolio - Ласкаво просимо в Ghostfolio + + Customize + Налаштувати - apps/client/src/app/components/home-overview/home-overview.html - 7 + apps/client/src/app/components/rule/rule.component.html + 67 - - Ready to take control of your personal finances? - Готові взяти під контроль ваші особисті фінанси? + + Deactivate + Деактивувати - apps/client/src/app/components/home-overview/home-overview.html - 8 + apps/client/src/app/components/rule/rule.component.html + 72 - - Setup your accounts - Налаштуйте ваші рахунки + + Activate + Активувати - apps/client/src/app/components/home-overview/home-overview.html - 15 + apps/client/src/app/components/rule/rule.component.html + 74 - - Get a comprehensive financial overview by adding your bank and brokerage accounts. - Отримайте комплексний фінансовий огляд, додавши ваші банківські та брокерські рахунки. + + Are you an ambitious investor who needs the full picture? + Ви амбітний інвестор, якому потрібна повна картина? - apps/client/src/app/components/home-overview/home-overview.html - 17 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 14 - - Capture your activities - Фіксуйте свою діяльність + + Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: + Оновіть до Ghostfolio Premium сьогодні та отримайте доступ до ексклюзивних функцій, щоб покращити ваш інвестиційний досвід: - apps/client/src/app/components/home-overview/home-overview.html - 24 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 17 - - Record your investment activities to keep your portfolio up to date. - Записуйте ваші інвестиційні дії, щоб підтримувати актуальність вашого портфеля. + + Portfolio Summary + Резюме портфеля - apps/client/src/app/components/home-overview/home-overview.html - 26 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 24 - - - Monitor and analyze your portfolio - Відстежуйте та аналізуйте свій портфель - apps/client/src/app/components/home-overview/home-overview.html - 33 + apps/client/src/app/pages/pricing/pricing-page.html + 43 - - - Track your progress in real-time with comprehensive analysis and insights. - Відстежуйте свій прогрес в режимі реального часу за допомогою всебічного аналізу та інсайтів - apps/client/src/app/components/home-overview/home-overview.html - 35 + apps/client/src/app/pages/pricing/pricing-page.html + 204 - - Setup accounts - Налаштувати рахунки + + Portfolio Allocations + Розподіли портфеля - apps/client/src/app/components/home-overview/home-overview.html - 44 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 28 - - - Add activity - Додати активність - apps/client/src/app/components/home-overview/home-overview.html - 52 + apps/client/src/app/pages/features/features-page.html + 161 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 8 + apps/client/src/app/pages/pricing/pricing-page.html + 47 - - - Summary - Зведення - apps/client/src/app/components/home-summary/home-summary.html - 2 + apps/client/src/app/pages/pricing/pricing-page.html + 208 - - Total Amount - Загальна сума + + Performance Benchmarks + Порівняльні показники продуктивності - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 141 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 32 - - - Savings Rate - Ставка заощаджень - apps/client/src/app/components/investment-chart/investment-chart.component.ts - 200 + apps/client/src/app/pages/pricing/pricing-page.html + 51 - - - Security Token - Секретний Токен - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 11 + apps/client/src/app/pages/pricing/pricing-page.html + 212 + + + FIRE Calculator + Калькулятор FIRE - apps/client/src/app/components/user-account-settings/user-account-settings.html - 279 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 36 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 64 + apps/client/src/app/pages/pricing/pricing-page.html + 55 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 72 + apps/client/src/app/pages/pricing/pricing-page.html + 216 - - Sign in with Internet Identity - Увійти з Інтернет-Ідентичністю + + Professional Data Provider + Професійний постачальник даних - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 42 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 40 - - - Sign in with Google - Увійти з Google - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 52 + apps/client/src/app/pages/pricing/pricing-page.html + 236 - - Stay signed in - Залишатися в системі + + and more Features... + і більше функцій... - apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html - 61 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 44 - - - Oops! A data provider is experiencing the hiccups. - Упс! У постачальника даних виникають проблеми. - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/pricing/pricing-page.html + 71 - - - Market data is delayed for - Ринкові дані затримуються для - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/pages/pricing/pricing-page.html + 260 - - Time in Market - Час на ринку + + Get the tools to effectively manage your finances and refine your personal investment strategy. + Отримайте інструменти для ефективного управління фінансами та вдосконалення вашої особистої інвестиційної стратегії. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 3 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 47 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {дія} other {дій}} + + Skip + Пропустити - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 59 - - - Buy - Купівля - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 31 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 98 - - Sell - Продаж + + Join now + Приєднуйтесь - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 43 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Absolute Gross Performance - Абсолютний валовий дохід + + Today + Сьогодні - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 70 + apps/client/src/app/components/toggle/toggle.component.ts + 22 - - - Absolute Net Performance - Абсолютний чистий прибуток - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 102 + libs/ui/src/lib/assistant/assistant.component.ts + 340 - - Net Performance - Чистий прибуток + + YTD + З початку року - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 117 + apps/client/src/app/components/toggle/toggle.component.ts + 23 - - - Total Assets - Загальні активи - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 143 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Valuables - Цінності + + 1Y + 1 рік - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 156 + apps/client/src/app/components/toggle/toggle.component.ts + 24 - - - Emergency Fund - Резервний фонд - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 168 + libs/ui/src/lib/assistant/assistant.component.ts + 362 + + + 5Y + 5 років - apps/client/src/app/pages/features/features-page.html - 89 + apps/client/src/app/components/toggle/toggle.component.ts + 25 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 69 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Cash - Готівка + + Max + Максимум - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 202 + apps/client/src/app/components/toggle/toggle.component.ts + 26 - - - Assets - Активи - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 215 + libs/ui/src/lib/assistant/assistant.component.ts + 393 - - Buying Power - Купівельна спроможність + + Oops! Could not grant access. + Упс! Не вдалося надати доступ. - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 228 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Excluded from Analysis - Виключено з аналізу + + Grant access + Надати доступ - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 240 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - Liabilities - Зобов’язання + + Private + Приватний - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 255 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + Public + Публічний - apps/client/src/app/pages/features/features-page.html - 102 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 25 - - Net Worth - Чиста вартість + + User ID + ID користувача - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 273 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 45 - - - Annualized Performance - Річна доходність - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 285 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 252 - - Interest - Відсотки + + Me + Я - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 307 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - Save - Зберегти + + Received Access + Отриманий доступ - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - Please set the amount of your emergency fund. - Будь ласка, встановіть суму вашого резервного фонду. + + Granted Access + Наданий доступ - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 64 + apps/client/src/app/components/user-account-access/user-account-access.html + 57 - - Threshold range - Діапазон порогу + + Could not generate an API key + Не вдалося згенерувати ключ API - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Threshold Min - Мінімальний поріг + + Okay + ОК - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 141 - - - Threshold Max - Максимальний поріг - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + apps/client/src/app/core/http-response.interceptor.ts + 89 - - - Close - Закрити - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 145 - - Customize - Налаштувати + + Set this API key in your self-hosted environment: + Встановіть цей ключ API у вашому self-hosted середовищі: - apps/client/src/app/components/rule/rule.component.html - 67 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Deactivate - Деактивувати + + Ghostfolio Premium Data Provider API Key + Ключ API Ghostfolio Premium Data Provider - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Activate - Активувати + + Do you really want to generate a new API key? + Ви дійсно хочете згенерувати новий ключ API? - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Are you an ambitious investor who needs the full picture? - Ви амбітний інвестор, якому потрібна повна картина? + + Could not redeem coupon code + Не вдалося обміняти код купона - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 14 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 166 - - Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience: - Оновіть до Ghostfolio Premium сьогодні та отримайте доступ до ексклюзивних функцій, щоб покращити ваш інвестиційний досвід: + + Coupon code has been redeemed + Код купона був обміняний - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 17 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 179 - - Portfolio Summary - Резюме портфеля + + Reload + Перезавантажити - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 24 - - - apps/client/src/app/pages/pricing/pricing-page.html - 57 - - - apps/client/src/app/pages/pricing/pricing-page.html - 218 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 180 - - Portfolio Allocations - Розподіли портфеля + + Please enter your coupon code. + Будь ласка, введіть ваш код купона. - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 28 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 202 + + + per year + на рік - apps/client/src/app/pages/features/features-page.html - 161 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 32 apps/client/src/app/pages/pricing/pricing-page.html - 61 + 282 + + + Try Premium + Спробуйте Premium - apps/client/src/app/pages/pricing/pricing-page.html - 222 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 - - Performance Benchmarks - Порівняльні показники продуктивності + + Redeem Coupon + Обміняти купон - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 32 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 63 + + + No auto-renewal. + Без автоматичного поновлення. - apps/client/src/app/pages/pricing/pricing-page.html - 65 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 + + + Auto + Автоматичний - apps/client/src/app/pages/pricing/pricing-page.html - 226 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 39 - - FIRE Calculator - Калькулятор FIRE + + Do you really want to close your Ghostfolio account? + Ви дійсно хочете закрити ваш обліковий запис Ghostfolio? - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 36 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + Do you really want to remove this sign in method? + Ви дійсно хочете вилучити цей спосіб входу? - apps/client/src/app/pages/pricing/pricing-page.html - 69 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 248 + + + Oops! There was an error setting up biometric authentication. + Упс! Виникла помилка під час налаштування біометричної автентифікації. - apps/client/src/app/pages/pricing/pricing-page.html - 230 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Professional Data Provider - Професійний постачальник даних + + Settings + Налаштування - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 40 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + Presenter View + Режим доповідача - apps/client/src/app/pages/pricing/pricing-page.html - 250 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 183 - - and more Features... - і більше функцій... + + Protection for sensitive information like absolute performances and quantity values + Захист конфіденційної інформації, такої як абсолютні показники та кількісні значення - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 44 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 + + + Base Currency + Базова валюта - apps/client/src/app/pages/pricing/pricing-page.html - 85 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 9 + + + Language + Мова - apps/client/src/app/pages/pricing/pricing-page.html - 274 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 56 - - Get the tools to effectively manage your finances and refine your personal investment strategy. - Отримайте інструменти для ефективного управління фінансами та вдосконалення вашої особистої інвестиційної стратегії. + + If a translation is missing, kindly support us in extending it here. + Якщо переклад відсутній, будь ласка, підтримайте нас у його розширенні тут. - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 - - Skip - Пропустити + + Locale + Локалізація - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 59 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 414 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 98 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 133 - - Join now - Приєднуйтесь + + Date and number format + Формат дати та чисел - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 135 - - Today - Сьогодні + + Appearance + Зовнішній вигляд - apps/client/src/app/components/toggle/toggle.component.ts - 22 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 158 + + + Auto + Автоматичний - libs/ui/src/lib/assistant/assistant.component.ts - 220 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 172 - - YTD - З початку року + + Light + Світлий - apps/client/src/app/components/toggle/toggle.component.ts - 23 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 173 + + + Dark + Темний - libs/ui/src/lib/assistant/assistant.component.ts - 230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 174 - - 1Y - 1 рік + + Zen Mode + Режим дзен - apps/client/src/app/components/toggle/toggle.component.ts - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 201 - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/features/features-page.html + 246 - - 5Y - 5 років + + Distraction-free experience for turbulent times + Досвід без відволікань для неспокійних часів - apps/client/src/app/components/toggle/toggle.component.ts - 25 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 202 + + + Biometric Authentication + Біометрична аутентифікація - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 218 - - Max - Максимум + + Sign in with fingerprint + Увійти з відбитком пальця - apps/client/src/app/components/toggle/toggle.component.ts - 26 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 219 + + + Experimental Features + Експериментальні функції - libs/ui/src/lib/assistant/assistant.component.ts - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 235 - - Oops! Could not grant access. - Упс! Не вдалося надати доступ. - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 - - - - Grant access - Надати доступ + + Sneak peek at upcoming functionality + Попередній перегляд майбутніх функцій - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 236 - - Private - Приватний + + Export Data + Експортувати дані - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 260 - - Public - Публічний + + Danger Zone + Зона небезпеки - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - User ID - ID користувача - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 45 - + + Close Account + Закрити обліковий запис apps/client/src/app/components/user-account-settings/user-account-settings.html - 252 + 307 - - Me - Я + + This feature is currently unavailable. + Ця функція наразі недоступна. - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/core/http-response.interceptor.ts + 55 - - Received Access - Отриманий доступ + + Please try again later. + Спробуйте ще раз пізніше. - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + apps/client/src/app/core/http-response.interceptor.ts + 57 - - - Granted Access - Наданий доступ - apps/client/src/app/components/user-account-access/user-account-access.html - 7 + apps/client/src/app/core/http-response.interceptor.ts + 88 - - - Could not generate an API key - Не вдалося згенерувати ключ API - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 144 - - Okay - ОК + + This action is not allowed. + Ця дія заборонена. - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + apps/client/src/app/core/http-response.interceptor.ts + 67 + + + Oops! Something went wrong. + Упс! Щось пішло не так. apps/client/src/app/core/http-response.interceptor.ts 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 145 - - - - Set this API key in your self-hosted environment: - Встановіть цей ключ API у вашому self-hosted середовищі: - - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts 142 - - Ghostfolio Premium Data Provider API Key - Ключ API Ghostfolio Premium Data Provider + + Oops! It looks like you’re making too many requests. Please slow down a bit. + Упс! Здається, ви робите занадто багато запитів. Будь ласка, пригальмуй трохи. - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - Do you really want to generate a new API key? - Ви дійсно хочете згенерувати новий ключ API? + + About + Про нас - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - - - Could not redeem coupon code - Не вдалося обміняти код купона - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + libs/common/src/lib/routes/routes.ts + 220 - - Coupon code has been redeemed - Код купона був обміняний + + Changelog + Журнал змін - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + libs/common/src/lib/routes/routes.ts + 185 - - Reload - Перезавантажити + + License + Ліцензія - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + libs/common/src/lib/routes/routes.ts + 193 - - Please enter your coupon code. - Будь ласка, введіть ваш код купона. + + Privacy Policy + Політика конфіденційності - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + libs/common/src/lib/routes/routes.ts + 209 - - per year - на рік + + Our + Наші - apps/client/src/app/components/user-account-membership/user-account-membership.html - 32 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 6 + + + Discover other exciting Open Source Software projects + Відкрийте для себе інші захоплюючі проекти з відкритим кодом - apps/client/src/app/pages/pricing/pricing-page.html - 296 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 9 - - Try Premium - Спробуйте Premium + + Visit + Відвідати - apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + apps/client/src/app/pages/about/oss-friends/oss-friends-page.html + 28 - - Redeem Coupon - Обміняти купон + + Accounts + Рахунки - apps/client/src/app/components/user-account-membership/user-account-membership.html - 63 + libs/common/src/lib/routes/routes.ts + 69 - - No auto-renewal. - Без автоматичного поновлення. + + Oops, cash balance transfer has failed. + Упс, перенесення балансу готівки не вдалося. - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 318 - - Auto - Автоматичний + + Update account + Оновити рахунок - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 39 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 8 - - Do you really want to close your Ghostfolio account? - Ви дійсно хочете закрити ваш обліковий запис Ghostfolio? + + Add account + Додати рахунок - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 10 - - Do you really want to remove this sign in method? - Ви дійсно хочете вилучити цей спосіб входу? + + Account ID + Ідентифікатор облікового запису - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 248 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 96 - - Oops! There was an error setting up biometric authentication. - Упс! Виникла помилка під час налаштування біометричної автентифікації. + + From + Від - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 - - Settings - Налаштування + + To + До - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 32 - - Presenter View - Режим доповідача + + Transfer + Переказати - apps/client/src/app/components/user-account-settings/user-account-settings.html - 183 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 72 - - Protection for sensitive information like absolute performances and quantity values - Захист конфіденційної інформації, такої як абсолютні показники та кількісні значення + + Admin Control + Управління адміністратором - apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + libs/common/src/lib/routes/routes.ts + 64 - - Base Currency - Базова валюта + + Job Queue + Черга завдань - apps/client/src/app/components/user-account-settings/user-account-settings.html - 9 + libs/common/src/lib/routes/routes.ts + 46 - - Language - Мова + + Market Data + Ринкові дані - apps/client/src/app/components/user-account-settings/user-account-settings.html - 56 + libs/common/src/lib/routes/routes.ts + 51 - - If a translation is missing, kindly support us in extending it here. - Якщо переклад відсутній, будь ласка, підтримайте нас у його розширенні тут. + + Settings + Налаштування - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + libs/common/src/lib/routes/routes.ts + 34 - - - Locale - Локалізація - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 414 + libs/common/src/lib/routes/routes.ts + 56 + + + Users + Користувачі - apps/client/src/app/components/user-account-settings/user-account-settings.html - 133 + libs/common/src/lib/routes/routes.ts + 61 - - Date and number format - Формат дати та чисел + + Overview + Огляд - apps/client/src/app/components/user-account-settings/user-account-settings.html - 135 + apps/client/src/app/pages/admin/admin-page.component.ts + 29 - - - Appearance - Зовнішній вигляд - apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + apps/client/src/app/pages/resources/resources-page.component.ts + 20 - - - Auto - Автоматичний - apps/client/src/app/components/user-account-settings/user-account-settings.html - 172 + libs/common/src/lib/routes/routes.ts + 113 - - - Light - Світлий - apps/client/src/app/components/user-account-settings/user-account-settings.html - 173 + libs/common/src/lib/routes/routes.ts + 170 - - Dark - Темний + + Please enter your Ghostfolio API key: + Будь ласка, введіть ваш ключ API Ghostfolio: - apps/client/src/app/components/user-account-settings/user-account-settings.html - 174 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Zen Mode - Режим дзен + + Blog + Блог - apps/client/src/app/components/user-account-settings/user-account-settings.html - 201 + libs/common/src/lib/routes/routes.ts + 225 + + + Discover the latest Ghostfolio updates and insights on personal finance + Відкрийте для себе останні оновлення Ghostfolio та виявлення особистих фінансів - apps/client/src/app/pages/features/features-page.html - 246 + apps/client/src/app/pages/blog/blog-page.html + 7 - - Distraction-free experience for turbulent times - Досвід без відволікань для неспокійних часів + + As you are already logged in, you cannot access the demo account. + Оскільки ви вже ввійшли, ви не можете отримати доступ до демонстраційного обліковий запис. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 202 + apps/client/src/app/pages/demo/demo-page.component.ts + 35 - - Biometric Authentication - Біометрична аутентифікація + + Frequently Asked Questions (FAQ) + Часто задавані питання (FAQ) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 218 + apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts + 13 - - - Sign in with fingerprint - Увійти з відбитком пальця - apps/client/src/app/components/user-account-settings/user-account-settings.html - 219 + libs/common/src/lib/routes/routes.ts + 251 - - Experimental Features - Експериментальні функції + + General + Загальні - apps/client/src/app/components/user-account-settings/user-account-settings.html - 235 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Sneak peek at upcoming functionality - Попередній перегляд майбутніх функцій + + Cloud + Хмара - apps/client/src/app/components/user-account-settings/user-account-settings.html - 236 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - Export Data - Експортувати дані - apps/client/src/app/components/user-account-settings/user-account-settings.html - 260 + libs/common/src/lib/routes/routes.ts + 240 - - Danger Zone - Зона небезпеки + + Self-Hosting + Самохостинг - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - Close Account - Закрити обліковий запис - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + libs/common/src/lib/routes/routes.ts + 248 - - This feature is currently unavailable. - Ця функція наразі недоступна. + + self-hosting + samohosting + kebab-case - apps/client/src/app/core/http-response.interceptor.ts - 54 + libs/common/src/lib/routes/routes.ts + 243 + + + libs/common/src/lib/routes/routes.ts + 246 - - Please try again later. - Спробуйте ще раз пізніше. + + Frequently Asked Questions (FAQ) + Часто задавані питання (FAQ) - apps/client/src/app/core/http-response.interceptor.ts - 56 + apps/client/src/app/pages/faq/overview/faq-overview-page.html + 4 - apps/client/src/app/core/http-response.interceptor.ts - 85 + apps/client/src/app/pages/faq/saas/saas-page.html + 4 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 144 + apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html + 4 - - This action is not allowed. - Ця дія заборонена. + + Check out the numerous features of Ghostfolio to manage your wealth + Огляньте численні функції Ghostfolio для управління вашим багатством - apps/client/src/app/core/http-response.interceptor.ts - 64 + apps/client/src/app/pages/features/features-page.html + 6 - - Oops! Something went wrong. - Упс! Щось пішло не так. + + Stocks + Акції - apps/client/src/app/core/http-response.interceptor.ts - 83 + apps/client/src/app/pages/features/features-page.html + 15 + + + ETFs + ETF - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 142 + apps/client/src/app/pages/features/features-page.html + 25 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - Упс! Здається, ви робите занадто багато запитів. Будь ласка, пригальмуй трохи. + + Bonds + Облігації - apps/client/src/app/core/http-response.interceptor.ts - 103 + apps/client/src/app/pages/features/features-page.html + 38 - - About - Про нас - - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 - + + Cryptocurrencies + Криптовалюти - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/features/features-page.html + 51 - - Changelog - Журнал змін - - apps/client/src/app/pages/about/about-page.component.ts - 50 - + + Wealth Items + Предмети багатства - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + apps/client/src/app/pages/features/features-page.html + 76 - - License - Ліцензія - - apps/client/src/app/pages/about/about-page.component.ts - 55 - + + Import and Export + Імпорт та експорт - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + apps/client/src/app/pages/features/features-page.html + 115 - - Privacy Policy - Політика конфіденційності - - apps/client/src/app/pages/about/about-page.component.ts - 64 - + + Multi-Accounts + Багатокористувацькі акаунти - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + apps/client/src/app/pages/features/features-page.html + 127 - - Our - Наші + + Portfolio Calculations + Розрахунки портфеля - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 6 + apps/client/src/app/pages/features/features-page.html + 141 - - Discover other exciting Open Source Software projects - Відкрийте для себе інші захоплюючі проекти з відкритим кодом + + Dark Mode + Темний режим - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 9 + apps/client/src/app/pages/features/features-page.html + 233 - - Visit - Відвідати + + Market Mood + Ринковий настрій - apps/client/src/app/pages/about/oss-friends/oss-friends-page.html - 28 + apps/client/src/app/pages/features/features-page.html + 215 - - Accounts - Рахунки + + Static Analysis + Статичний аналіз - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + apps/client/src/app/pages/features/features-page.html + 179 - - Oops, cash balance transfer has failed. - Упс, перенесення балансу готівки не вдалося. + + Multi-Language + Багатомовність - apps/client/src/app/pages/accounts/accounts-page.component.ts - 318 + apps/client/src/app/pages/features/features-page.html + 259 - - Update account - Оновити рахунок + + Open Source Software + Програмне забезпечення з відкритим кодом - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 8 + apps/client/src/app/pages/features/features-page.html + 295 - - Add account - Додати рахунок + + Get Started + Почати - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 10 + apps/client/src/app/pages/features/features-page.html + 320 - - - Account ID - Ідентифікатор облікового запису - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 96 + apps/client/src/app/pages/public/public-page.html + 220 - - From - Від + + Holdings + Активи - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + libs/common/src/lib/routes/routes.ts + 90 - - - To - До - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 32 + libs/common/src/lib/routes/routes.ts + 167 - - Transfer - Переказати + + Summary + Зведення - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 72 + libs/common/src/lib/routes/routes.ts + 105 - - Admin Control - Управління адміністратором + + Markets + Ринки - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - - - Job Queue - Черга завдань - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 100 - - - Market Data - Ринкові дані - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 309 - - Settings - Налаштування + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio - це панель особистих фінансів для відстеження вашого чистого капіталу, включаючи готівку, акції, ETF та криптовалюти на різних платформах. - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + додаток, актив, криптовалюта, панель, etf, фінанси, управління, продуктивність, портфель, програмне забезпечення, акція, торгівля, багатство, web3 - apps/client/src/app/pages/admin/admin-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 9 + + + My Account + Мій рахунок - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + apps/client/src/app/pages/i18n/i18n-page.html + 13 + + + Open Source Wealth Management Software + Програмне забезпечення управління багатством з відкритим кодом - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + apps/client/src/app/pages/i18n/i18n-page.html + 97 - - Users - Користувачі + + Manage your wealth like a boss + Керуйте своїми фінансами як професіонал - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 + apps/client/src/app/pages/landing/landing-page.html + 5 + + + Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. + Ghostfolio - це інформаційна панель з відкритим кодом для управління вашими особистими фінансами, орієнтована насамперед на конфіденційність. Розподіліть свої активи, визначте чисту вартість свого майна та приймайте зважені інвестиційні рішення на основі даних. - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + apps/client/src/app/pages/landing/landing-page.html + 9 - - Overview - Огляд + + Get Started + Почати - apps/client/src/app/pages/admin/admin-page.component.ts - 28 + apps/client/src/app/pages/landing/landing-page.html + 41 - apps/client/src/app/pages/home/home-page.component.ts - 38 + apps/client/src/app/pages/pricing/pricing-page.html + 349 + + + Live Demo + Жива демонстрація - apps/client/src/app/pages/resources/resources-page.component.ts - 17 + apps/client/src/app/pages/landing/landing-page.html + 49 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + apps/client/src/app/pages/landing/landing-page.html + 452 + + + Monthly Active Users + Щомісячні активні користувачі - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + apps/client/src/app/pages/landing/landing-page.html + 70 - - Please enter your Ghostfolio API key: - Будь ласка, введіть ваш ключ API Ghostfolio: + + Stars on GitHub + Зірки на GitHub - apps/client/src/app/pages/api/api-page.component.ts - 41 + apps/client/src/app/pages/landing/landing-page.html + 88 - - - Blog - Блог - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + apps/client/src/app/pages/open/open-page.html + 103 - - Discover the latest Ghostfolio updates and insights on personal finance - Відкрийте для себе останні оновлення Ghostfolio та виявлення особистих фінансів + + Pulls on Docker Hub + Завантаження на Docker Hub - apps/client/src/app/pages/blog/blog-page.html - 7 + apps/client/src/app/pages/landing/landing-page.html + 106 - - - As you are already logged in, you cannot access the demo account. - Оскільки ви вже ввійшли, ви не можете отримати доступ до демонстраційного обліковий запис. - apps/client/src/app/pages/demo/demo-page.component.ts - 35 + apps/client/src/app/pages/open/open-page.html + 117 - - Frequently Asked Questions (FAQ) - Часто задавані питання (FAQ) + + As seen in + Як видно в - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 + apps/client/src/app/pages/landing/landing-page.html + 115 + + + Protect your assets. Refine your personal investment strategy. + Захищайте свої активи. Вдосконалюйте власну інвестиційну стратегію. - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 225 - - General - Загальні + + Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. + Ghostfolio допомагає зайнятим людям відстежувати акції, ETF або криптовалюти без ризику бути відстеженими. - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + apps/client/src/app/pages/landing/landing-page.html + 229 - - Cloud - Хмара + + 360° View + 360° огляд - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + apps/client/src/app/pages/landing/landing-page.html + 240 + + + Get the full picture of your personal finances across multiple platforms. + Отримайте повну картину ваших особистих фінансів на різних платформах. - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 242 - - Self-Hosting - Самохостинг + + Web3 Ready + Готовий до Web3 - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/landing/landing-page.html + 251 + + + Use Ghostfolio anonymously and own your financial data. + Використовуйте Ghostfolio анонімно та володійте своїми фінансовими даними. - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 253 - - self-hosting - самохостинг + + Open Source + Відкритий код - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + apps/client/src/app/pages/landing/landing-page.html + 261 - - Frequently Asked Questions (FAQ) - Часто задавані питання (FAQ) + + Benefit from continuous improvements through a strong community. + Отримуйте користь від постійних покращень завдяки сильній спільноті. - apps/client/src/app/pages/faq/overview/faq-overview-page.html - 4 + apps/client/src/app/pages/landing/landing-page.html + 263 + + + Why Ghostfolio? + Чому Ghostfolio? - apps/client/src/app/pages/faq/saas/saas-page.html - 4 + apps/client/src/app/pages/landing/landing-page.html + 272 + + + Ghostfolio is for you if you are... + Ghostfolio для вас, якщо ви... - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html - 4 + apps/client/src/app/pages/landing/landing-page.html + 273 - - FAQ - FAQ + + trading stocks, ETFs or cryptocurrencies on multiple platforms + торгуєте акціями, ETF або криптовалютами на різних платформах - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 280 + + + pursuing a buy & hold strategy + дотримуєтеся стратегії купівлі та утримання - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/pages/landing/landing-page.html + 286 - - Check out the numerous features of Ghostfolio to manage your wealth - Огляньте численні функції Ghostfolio для управління вашим багатством + + interested in getting insights of your portfolio composition + вас цікавлять інсайти вашого складу портфеля - apps/client/src/app/pages/features/features-page.html - 6 + apps/client/src/app/pages/landing/landing-page.html + 291 - - Stocks - Акції + + valuing privacy and data ownership + цінуєте конфіденційність і володіння даними - apps/client/src/app/pages/features/features-page.html - 15 + apps/client/src/app/pages/landing/landing-page.html + 296 - - ETFs - ETF + + into minimalism + займаєтесь мінімалізмом - apps/client/src/app/pages/features/features-page.html - 25 + apps/client/src/app/pages/landing/landing-page.html + 299 - - Bonds - Облігації + + caring about diversifying your financial resources + піклуєтесь про диверсифікацію ваших фінансових ресурсів - apps/client/src/app/pages/features/features-page.html - 38 + apps/client/src/app/pages/landing/landing-page.html + 303 - - Cryptocurrencies - Криптовалюти + + interested in financial independence + цікавитесь фінансовою незалежністю - apps/client/src/app/pages/features/features-page.html - 51 + apps/client/src/app/pages/landing/landing-page.html + 307 - - Wealth Items - Предмети багатства + + saying no to spreadsheets in + кажете ні таблицям у - apps/client/src/app/pages/features/features-page.html - 76 + apps/client/src/app/pages/landing/landing-page.html + 311 - - Import and Export - Імпорт та експорт + + still reading this list + все ще читаєте цей список - apps/client/src/app/pages/features/features-page.html - 115 + apps/client/src/app/pages/landing/landing-page.html + 314 - - Multi-Accounts - Багатокористувацькі акаунти + + Learn more about Ghostfolio + Дізнайтеся більше про Ghostfolio - apps/client/src/app/pages/features/features-page.html - 127 + apps/client/src/app/pages/landing/landing-page.html + 319 - - Portfolio Calculations - Розрахунки портфеля + + What our users are saying + Що говорять користувачі - apps/client/src/app/pages/features/features-page.html - 141 + apps/client/src/app/pages/landing/landing-page.html + 327 - - Dark Mode - Темний режим + + Members from around the globe are using Ghostfolio Premium + Члени зі всього світу використовують Ghostfolio Premium - apps/client/src/app/pages/features/features-page.html - 233 + apps/client/src/app/pages/landing/landing-page.html + 366 - - Market Mood - Ринковий настрій + + How does Ghostfolio work? + Як працює Ghostfolio? - apps/client/src/app/pages/features/features-page.html - 215 + apps/client/src/app/pages/landing/landing-page.html + 383 - - Static Analysis - Статичний аналіз - - apps/client/src/app/pages/features/features-page.html - 179 - - - - Multi-Language - Багатомовність - - apps/client/src/app/pages/features/features-page.html - 259 - - - - Open Source Software - Програмне забезпечення з відкритим кодом - - apps/client/src/app/pages/features/features-page.html - 295 - - - - Get Started - Почати - - apps/client/src/app/pages/features/features-page.html - 320 - - - apps/client/src/app/pages/public/public-page.html - 220 - - - - Holdings - Активи - - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 - - - apps/client/src/app/pages/zen/zen-page.component.ts - 40 - - - - Summary - Зведення - - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 - - - - Markets - Ринки - - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 - - - apps/client/src/app/pages/home/home-page.component.ts - 58 - - - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 - - - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 - + + Get started in only 3 steps + Почніть всього за 3 кроки - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + apps/client/src/app/pages/landing/landing-page.html + 386 - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio - це панель особистих фінансів для відстеження вашого чистого капіталу, включаючи готівку, акції, ETF та криптовалюти на різних платформах. + + Sign up anonymously* + Зареєструйтеся анонімно* - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/landing/landing-page.html + 392 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - додаток, актив, криптовалюта, панель, etf, фінанси, управління, продуктивність, портфель, програмне забезпечення, акція, торгівля, багатство, web3 + + * no e-mail address nor credit card required + * не потрібні електронна адреса та кредитна картка - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/landing/landing-page.html + 394 - - My Account - Мій рахунок + + Add any of your historical transactions + Додайте будь-які з ваших історичних транзакцій - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/landing/landing-page.html + 405 - - Open Source Wealth Management Software - Програмне забезпечення управління багатством з відкритим кодом + + Get valuable insights of your portfolio composition + Отримуйте цінні інсайти вашого складу портфеля - apps/client/src/app/pages/i18n/i18n-page.html - 14 + apps/client/src/app/pages/landing/landing-page.html + 417 - - Manage your wealth like a boss - Керуйте своїми фінансами як професіонал + + Are you ready? + Ви готові? apps/client/src/app/pages/landing/landing-page.html - 5 + 431 - - Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. - Ghostfolio - це інформаційна панель з відкритим кодом для управління вашими особистими фінансами, орієнтована насамперед на конфіденційність. Розподіліть свої активи, визначте чисту вартість свого майна та приймайте зважені інвестиційні рішення на основі даних. + + Join now or check out the example account + Приєднуйтесь зараз або перегляньте демонстраційний рахунок apps/client/src/app/pages/landing/landing-page.html - 9 + 434 - + Get Started Почати apps/client/src/app/pages/landing/landing-page.html - 41 + 446 + + + At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. + У Ghostfolio прозорість є основою наших цінностей. Ми публікуємо вихідний код як відкрите програмне забезпечення (OSS) під AGPL-3.0 ліцензією та відкрито ділимося агрегованими ключовими метриками операційного стану платформи. - apps/client/src/app/pages/pricing/pricing-page.html - 342 + apps/client/src/app/pages/open/open-page.html + 6 - - Live Demo - Жива демонстрація + + (Last 24 hours) + (Останні 24 години) - apps/client/src/app/pages/landing/landing-page.html - 49 + apps/client/src/app/pages/open/open-page.html + 37 + + + Active Users + Активні користувачі - apps/client/src/app/pages/landing/landing-page.html - 451 + apps/client/src/app/pages/open/open-page.html + 40 - - - Monthly Active Users - Щомісячні активні користувачі - apps/client/src/app/pages/landing/landing-page.html - 70 + apps/client/src/app/pages/open/open-page.html + 62 - - Stars on GitHub - Зірки на GitHub + + (Last 30 days) + (Останні 30 днів) - apps/client/src/app/pages/landing/landing-page.html - 88 + apps/client/src/app/pages/open/open-page.html + 48 apps/client/src/app/pages/open/open-page.html - 103 + 59 - - Pulls on Docker Hub - Завантаження на Docker Hub + + New Users + Нові користувачі - apps/client/src/app/pages/landing/landing-page.html - 106 + apps/client/src/app/pages/open/open-page.html + 51 + + + Users in Slack community + Користувачі в спільноті Slack apps/client/src/app/pages/open/open-page.html - 117 + 75 - - As seen in - Як видно в + + Contributors on GitHub + Учасники на GitHub - apps/client/src/app/pages/landing/landing-page.html - 115 + apps/client/src/app/pages/open/open-page.html + 89 - - Protect your assets. Refine your personal investment strategy. - Захищайте свої активи. Вдосконалюйте власну інвестиційну стратегію. + + (Last 90 days) + (Останні 90 днів) - apps/client/src/app/pages/landing/landing-page.html - 225 + apps/client/src/app/pages/open/open-page.html + 127 - - Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. - Ghostfolio допомагає зайнятим людям відстежувати акції, ETF або криптовалюти без ризику бути відстеженими. + + Uptime + Час безвідмовної роботи - apps/client/src/app/pages/landing/landing-page.html - 229 + apps/client/src/app/pages/open/open-page.html + 132 - - 360° View - 360° огляд + + Activities + Активності - apps/client/src/app/pages/landing/landing-page.html - 240 + libs/common/src/lib/routes/routes.ts + 128 - - Get the full picture of your personal finances across multiple platforms. - Отримайте повну картину ваших особистих фінансів на різних платформах. + + Update activity + Оновити активність - apps/client/src/app/pages/landing/landing-page.html - 242 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 - - Web3 Ready - Готовий до Web3 + + Stocks, ETFs, bonds, cryptocurrencies, commodities + Акції, ETF, облігації, криптовалюти, товари - apps/client/src/app/pages/landing/landing-page.html - 251 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 - - - Use Ghostfolio anonymously and own your financial data. - Використовуйте Ghostfolio анонімно та володійте своїми фінансовими даними. - apps/client/src/app/pages/landing/landing-page.html - 253 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 - - Open Source - Відкритий код + + One-time fee, annual account fees + Одноразова комісія, щорічна комісія за обслуговування рахунку - apps/client/src/app/pages/landing/landing-page.html - 261 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 - - Benefit from continuous improvements through a strong community. - Отримуйте користь від постійних покращень завдяки сильній спільноті. + + Distribution of corporate earnings + Розподіл корпоративних доходів - apps/client/src/app/pages/landing/landing-page.html - 263 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 - - Why Ghostfolio? - Чому Ghostfolio? + + Revenue for lending out money + Доходи за кредитування грошей - apps/client/src/app/pages/landing/landing-page.html - 272 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 - - Ghostfolio is for you if you are... - Ghostfolio для вас, якщо ви... + + Mortgages, personal loans, credit cards + Іпотека, особисті кредити, кредитні картки - apps/client/src/app/pages/landing/landing-page.html - 273 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 - - trading stocks, ETFs or cryptocurrencies on multiple platforms - торгуєте акціями, ETF або криптовалютами на різних платформах + + Luxury items, real estate, private companies + Предмети розкоші, нерухомість, приватні компанії - apps/client/src/app/pages/landing/landing-page.html - 280 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 - - pursuing a buy & hold strategy - дотримуєтеся стратегії купівлі та утримання + + Account + Рахунок - apps/client/src/app/pages/landing/landing-page.html - 286 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 - - - interested in getting insights of your portfolio composition - вас цікавлять інсайти вашого складу портфеля - apps/client/src/app/pages/landing/landing-page.html - 291 + libs/ui/src/lib/activities-table/activities-table.component.html + 308 - - - valuing privacy and data ownership - цінуєте конфіденційність і володіння даними - apps/client/src/app/pages/landing/landing-page.html - 296 + libs/ui/src/lib/assistant/assistant.html + 144 - - into minimalism - займаєтесь мінімалізмом + + Update Cash Balance + Оновити баланс готівки - apps/client/src/app/pages/landing/landing-page.html - 299 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 - - caring about diversifying your financial resources - піклуєтесь про диверсифікацію ваших фінансових ресурсів + + Date + Дата - apps/client/src/app/pages/landing/landing-page.html - 303 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 161 - - - interested in financial independence - цікавитесь фінансовою незалежністю - apps/client/src/app/pages/landing/landing-page.html - 307 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - - - saying no to spreadsheets in - кажете ні таблицям у - apps/client/src/app/pages/landing/landing-page.html - 311 + libs/ui/src/lib/activities-table/activities-table.component.html + 170 - - - still reading this list - все ще читаєте цей список - apps/client/src/app/pages/landing/landing-page.html - 314 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 6 - - Learn more about Ghostfolio - Дізнайтеся більше про Ghostfolio + + Unit Price + Ціна за одиницю - apps/client/src/app/pages/landing/landing-page.html - 319 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 214 - - - What our users are saying - Що говорять користувачі - apps/client/src/app/pages/landing/landing-page.html - 327 + libs/ui/src/lib/activities-table/activities-table.component.html + 210 - - Members from around the globe are using Ghostfolio Premium - Члени зі всього світу використовують Ghostfolio Premium + + Fee + Комісія - apps/client/src/app/pages/landing/landing-page.html - 366 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 262 - - - How does Ghostfolio work? - Як працює Ghostfolio? - apps/client/src/app/pages/landing/landing-page.html - 383 + libs/ui/src/lib/activities-table/activities-table.component.html + 234 - - Get started in only 3 steps - Почніть всього за 3 кроки + + Import Activities + Імпортувати активності - apps/client/src/app/pages/landing/landing-page.html - 386 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 47 - - Sign up anonymously* - Зареєструйтеся анонімно* + + Import Dividends + Імпорт дивідендів - apps/client/src/app/pages/landing/landing-page.html - 392 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 88 - - * no e-mail address nor credit card required - * не потрібні електронна адреса та кредитна картка + + Importing data... + Імпортуються дані... - apps/client/src/app/pages/landing/landing-page.html - 394 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 126 - - Add any of your historical transactions - Додайте будь-які з ваших історичних транзакцій + + Import has been completed + Імпорт завершено - apps/client/src/app/pages/landing/landing-page.html - 405 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 134 - - Get valuable insights of your portfolio composition - Отримуйте цінні інсайти вашого складу портфеля + + Validating data... + Перевірка даних... - apps/client/src/app/pages/landing/landing-page.html - 417 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 242 - - Are you ready? - Ви готові? + + Select Holding + Вибрати актив - apps/client/src/app/pages/landing/landing-page.html - 431 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 - - Join now or check out the example account - Приєднуйтесь зараз або перегляньте демонстраційний рахунок + + Select File + Вибрати файл - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 - - Get Started - Почати + + Holding + Актив - apps/client/src/app/pages/landing/landing-page.html - 446 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 - - - At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status. - У Ghostfolio прозорість є основою наших цінностей. Ми публікуємо вихідний код як відкрите програмне забезпечення (OSS) під AGPL-3.0 ліцензією та відкрито ділимося агрегованими ключовими метриками операційного стану платформи. - apps/client/src/app/pages/open/open-page.html - 6 + libs/ui/src/lib/assistant/assistant.html + 166 - - (Last 24 hours) - (Останні 24 години) + + Load Dividends + Завантажити дивіденди - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 - - Active Users - Активні користувачі + + Choose or drop a file here + Виберіть або перетягніть файл сюди - apps/client/src/app/pages/open/open-page.html - 40 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 + + + The following file formats are supported: + Підтримуються наступні формати файлів: - apps/client/src/app/pages/open/open-page.html - 62 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 - - (Last 30 days) - (Останні 30 днів) + + Select Dividends + Вибрати дивіденди - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 + + + Select Activities + Виберіть активності - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 - - New Users - Нові користувачі + + Back + Назад - apps/client/src/app/pages/open/open-page.html - 51 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 - - - Users in Slack community - Користувачі в спільноті Slack - apps/client/src/app/pages/open/open-page.html - 75 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 - - Contributors on GitHub - Учасники на GitHub + + Import + Імпорт - apps/client/src/app/pages/open/open-page.html - 89 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - - - (Last 90 days) - (Останні 90 днів) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 - - - Uptime - Час безвідмовної роботи - apps/client/src/app/pages/open/open-page.html - 132 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 71 - - Activities - Активності + + Allocations + Розподіли - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 133 - - Update activity - Оновити активність + + Allocations + Розподіли - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 10 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 - - Stocks, ETFs, bonds, cryptocurrencies, commodities - Акції, ETF, облігації, криптовалюти, товари + + Proportion of Net Worth + Частка чистої вартості - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 + + + By Platform + За платформою - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 65 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 - - One-time fee, annual account fees - Одноразова комісія, щорічна комісія за обслуговування рахунку + + By Currency + За валютою - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 63 - - Distribution of corporate earnings - Розподіл корпоративних доходів + + By Asset Class + За класом активів - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 - - Revenue for lending out money - Доходи за кредитування грошей + + By Holding + За активом - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 - - Mortgages, personal loans, credit cards - Іпотека, особисті кредити, кредитні картки + + By Sector + За сектором - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 - - Luxury items, real estate, private companies - Предмети розкоші, нерухомість, приватні компанії + + By Continent + За континентом - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 73 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 - - Account - Рахунок + + By Market + За ринком - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 85 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 + + + Regions + Регіони - libs/ui/src/lib/activities-table/activities-table.component.html - 308 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 - libs/ui/src/lib/assistant/assistant.html - 109 + apps/client/src/app/pages/public/public-page.html + 143 - - Update Cash Balance - Оновити баланс готівки + + Developed Markets + Розвиті ринки - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 - - - Date - Дата - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + apps/client/src/app/pages/public/public-page.html 160 + + + Emerging Markets + Ринки, що розвиваються - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 - libs/ui/src/lib/activities-table/activities-table.component.html - 170 + apps/client/src/app/pages/public/public-page.html + 169 + + + Other Markets + Інші ринки - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 6 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 - - - Unit Price - Ціна за одиницю - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + apps/client/src/app/pages/public/public-page.html + 178 + + + No data available + Дані недоступні - libs/ui/src/lib/activities-table/activities-table.component.html - 210 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - - - Fee - Комісія - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + apps/client/src/app/pages/public/public-page.html + 188 - libs/ui/src/lib/activities-table/activities-table.component.html - 234 + libs/ui/src/lib/benchmark/benchmark.component.html + 202 - - - Import Activities - Імпортувати активності - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 47 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 181 - - Import Dividends - Імпорт дивідендів + + By Country + За країною - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 88 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 - - Importing data... - Імпортуються дані... + + By Account + За рахунком - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 126 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 - - Import has been completed - Імпорт завершено + + By ETF Provider + За постачальником ETF - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 134 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 - - Validating data... - Перевірка даних... + + By ETF Holding + За активами ETF - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 242 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Select Holding - Вибрати актив + + Approximation based on the top holdings of each ETF + Наближення на основі провідних активів кожного ETF - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 20 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Select File - Вибрати файл + + Analysis + Аналіз - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 22 + libs/common/src/lib/routes/routes.ts + 138 - - Holding - Актив + + Dividend + Дивіденди - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 32 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 - libs/ui/src/lib/assistant/assistant.html - 129 + libs/ui/src/lib/i18n.ts + 36 - - Load Dividends - Завантажити дивіденди + + Investment + Інвестиції - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 68 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Choose or drop a file here - Виберіть або перетягніть файл сюди - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - - - The following file formats are supported: - Підтримуються наступні формати файлів: - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 90 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Select Dividends - Вибрати дивіденди + + Monthly + Щомісячно - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 113 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 66 - - Select Activities - Виберіть активності + + Yearly + Щорічно - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 67 - - Back - Назад + + Analysis + Аналіз - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 144 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 + + + Absolute Asset Performance + Абсолютна прибутковість активів - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Import - Імпорт + + Asset Performance + Прибутковість активів - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 153 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 + + + Absolute Currency Performance + Абсолютна прибутковість валюти - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 + + + Currency Performance + Прибутковість валюти - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Allocations - Розподіли + + Absolute Net Performance + Абсолютна чиста прибутковість - apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts - 13 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 + + + Net Performance + Чиста прибутковість - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - Allocations - Розподіли + + Top + Топ - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 4 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 239 - - Proportion of Net Worth - Частка чистої вартості + + Bottom + Низ - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 12 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 288 - - By Platform - За платформою + + Portfolio Evolution + Еволюція портфеля - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 44 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 341 - - By Currency - За валютою + + Investment Timeline + Інвестиційний графік - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 63 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 368 - - By Asset Class - За класом активів + + Current Streak + Поточна серія - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 85 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 389 - - By Holding - За активом + + Longest Streak + Найдовша серія - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 107 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 398 - - By Sector - За сектором + + Dividend Timeline + Графік дивідендів - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 130 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 425 - - By Continent - За континентом + + FIRE + Фінансова незалежність, достроковий вихід на пенсію (FIRE) - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 153 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 4 - - By Market - За ринком + + Calculator + Калькулятор - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 175 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 - - Regions - Регіони + + 4% Rule + Правило 4% - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 198 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 + + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + Якщо ви вийдете на пенсію сьогодні, ви зможете знімати на рік або на місяць, виходячи з вашого загального капіталу в та ставкою виведення у 4%. - apps/client/src/app/pages/public/public-page.html - 143 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Developed Markets - Розвиті ринки + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray використовує статичний аналіз для виявлення потенційних проблем та ризиків у вашому портфелі. Налаштуйте правила нижче та встановіть індивідуальні пороги, щоб узгодити їх з вашою особистою інвестиційною стратегією. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 222 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 + + + out of + з - apps/client/src/app/pages/public/public-page.html - 160 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - Emerging Markets - Ринки, що розвиваються + + rules align with your portfolio. + правила узгоджуються з вашим портфелем. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 231 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 + + + Currency Cluster Risks + Ризики зосередження валюти - apps/client/src/app/pages/public/public-page.html - 169 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 - - Other Markets - Інші ринки + + Asset Class Cluster Risks + Ризики зосередження класу активів - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 240 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 + + + Account Cluster Risks + Ризики зосередження рахунків - apps/client/src/app/pages/public/public-page.html - 178 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 - - No data available - Дані недоступні + + Economic Market Cluster Risks + Ризики зосередження економічного ринку - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 250 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 + + + Inactive + Неактивний - apps/client/src/app/pages/public/public-page.html - 188 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 + + + Pricing + Ціни - libs/ui/src/lib/benchmark/benchmark.component.html - 188 + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 181 + libs/common/src/lib/routes/routes.ts + 271 - - By Country - За країною + + Pricing Plans + Плани цін - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 264 + apps/client/src/app/pages/pricing/pricing-page.html + 4 - - By Account - За рахунком + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + Наша офіційна хмарна пропозиція Ghostfolio Premium - це найпростіший спосіб почати роботу. Завдяки економії часу, це буде найкращим варіантом для більшості людей. Доходи використовуються для покриття витрат на хостинг-інфраструктуру та фінансування постійної розробки. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 286 + apps/client/src/app/pages/pricing/pricing-page.html + 6 - - By ETF Provider - За постачальником ETF + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + Якщо ви віддаєте перевагу запускати Ghostfolio на власній інфраструктурі, перейдіть на GitHub для отримання вихідного коду та подальших інструкцій. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 306 + apps/client/src/app/pages/pricing/pricing-page.html + 12 - - By ETF Holding - За активами ETF + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + Для технікознавих інвесторів, які віддають перевагу запуску Ghostfolio на власній інфраструктурі. - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/pages/pricing/pricing-page.html + 24 - - Approximation based on the top holdings of each ETF - Наближення на основі провідних активів кожного ETF + + Unlimited Transactions + Необмежені транзакції - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/pages/pricing/pricing-page.html + 31 - - - Analysis - Аналіз - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 + apps/client/src/app/pages/pricing/pricing-page.html + 120 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + apps/client/src/app/pages/pricing/pricing-page.html + 192 - - Dividend - Дивіденди + + Unlimited Accounts + Необмежена кількість рахунків - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 51 + apps/client/src/app/pages/pricing/pricing-page.html + 35 - libs/ui/src/lib/i18n.ts - 36 + apps/client/src/app/pages/pricing/pricing-page.html + 124 + + + apps/client/src/app/pages/pricing/pricing-page.html + 196 - - Investment - Інвестиції + + Portfolio Performance + Прибутковість портфеля - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 39 - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 + apps/client/src/app/pages/pricing/pricing-page.html + 128 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + apps/client/src/app/pages/pricing/pricing-page.html + 200 - - Monthly - Щомісячно + + Data Import and Export + Імпорт та експорт даних - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 66 + apps/client/src/app/pages/pricing/pricing-page.html + 59 - - - Yearly - Щорічно - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 67 + apps/client/src/app/pages/pricing/pricing-page.html + 132 + + + apps/client/src/app/pages/pricing/pricing-page.html + 220 - - Analysis - Аналіз + + Community Support + Підтримка спільноти - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 2 + apps/client/src/app/pages/pricing/pricing-page.html + 76 - - Absolute Asset Performance - Абсолютна прибутковість активів + + Self-hosted, update manually. + Самохостинг, оновлення вручну. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + apps/client/src/app/pages/pricing/pricing-page.html + 80 - - Asset Performance - Прибутковість активів + + Free + Безкоштовно - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + apps/client/src/app/pages/pricing/pricing-page.html + 81 - - - Absolute Currency Performance - Абсолютна прибутковість валюти - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + apps/client/src/app/pages/pricing/pricing-page.html + 144 - - Currency Performance - Прибутковість валюти + + For new investors who are just getting started with trading. + Для нових інвесторів, які тільки починають з торгівлі. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + apps/client/src/app/pages/pricing/pricing-page.html + 114 - - Absolute Net Performance - Абсолютна чиста прибутковість + + Fully managed Ghostfolio cloud offering. + Повністю керована хмарна пропозиція Ghostfolio. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + apps/client/src/app/pages/pricing/pricing-page.html + 143 - - - Net Performance - Чиста прибутковість - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 211 + apps/client/src/app/pages/pricing/pricing-page.html + 269 - - Top - Топ + + For ambitious investors who need the full picture of their financial assets. + Для амбітних інвесторів, яким потрібна повна картина їхніх фінансових активів. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 239 + apps/client/src/app/pages/pricing/pricing-page.html + 185 - - Bottom - Низ + + Email and Chat Support + Підтримка електронної пошти та чату - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 288 + apps/client/src/app/pages/pricing/pricing-page.html + 265 - - Portfolio Evolution - Еволюція портфеля + + One-time payment, no auto-renewal. + Разова оплата, без автоматичного поновлення. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 341 + apps/client/src/app/pages/pricing/pricing-page.html + 302 - - Investment Timeline - Інвестиційний графік + + It’s free. + Це безкоштовно. - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 368 + apps/client/src/app/pages/pricing/pricing-page.html + 352 - - Current Streak - Поточна серія + + Hello, has shared a Portfolio with you! + Привіт, поділився з вами Портфелем! - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 389 + apps/client/src/app/pages/public/public-page.html + 4 - - Longest Streak - Найдовша серія + + Today + Сьогодні - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 398 + apps/client/src/app/pages/public/public-page.html + 24 - - Dividend Timeline - Графік дивідендів + + This year + Цього року - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 425 + apps/client/src/app/pages/public/public-page.html + 42 - - FIRE - Фінансова незалежність, достроковий вихід на пенсію (FIRE) + + From the beginning + З початку - apps/client/src/app/pages/portfolio/fire/fire-page.html - 4 + apps/client/src/app/pages/public/public-page.html + 60 - - Calculator - Калькулятор + + Currencies + Валюти - apps/client/src/app/pages/portfolio/fire/fire-page.html - 7 + apps/client/src/app/pages/public/public-page.html + 88 - - 4% Rule - Правило 4% + + Continents + Континенти - apps/client/src/app/pages/portfolio/fire/fire-page.html - 40 + apps/client/src/app/pages/public/public-page.html + 124 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - Якщо ви вийдете на пенсію сьогодні, ви зможете знімати на рік або на місяць, виходячи з вашого загального капіталу в та ставкою виведення у 4%. + + Would you like to refine your personal investment strategy? + Чи хотіли б ви удосконалити вашу особисту інвестиційну стратегію? - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/public/public-page.html + 211 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray використовує статичний аналіз для виявлення потенційних проблем та ризиків у вашому портфелі. Налаштуйте правила нижче та встановіть індивідуальні пороги, щоб узгодити їх з вашою особистою інвестиційною стратегією. + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio надає можливість вам стежити за вашим багатством. - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/pages/public/public-page.html + 215 - - out of - з + + Registration + Реєстрація - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + libs/common/src/lib/routes/routes.ts + 281 - - rules align with your portfolio. - правила узгоджуються з вашим портфелем. + + Continue with Internet Identity + Продовжити з Інтернет-Ідентичністю - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/pages/register/register-page.html + 42 - - Currency Cluster Risks - Ризики зосередження валюти + + Continue with Google + Продовжити з Google - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + apps/client/src/app/pages/register/register-page.html + 53 - - Asset Class Cluster Risks - Ризики зосередження класу активів + + Copy to clipboard + Копіювати в буфер обміну - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 88 - - Account Cluster Risks - Ризики зосередження рахунків + + Glossary + Глосарій - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 + + + libs/common/src/lib/routes/routes.ts + 293 - - Economic Market Cluster Risks - Ризики зосередження економічного ринку + + Glossary + Глосарій - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + apps/client/src/app/pages/resources/glossary/resources-glossary.component.html + 4 - - Inactive - Неактивний + + Guides + Посібники - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Pricing - Ціни - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 301 - - Pricing Plans - Плани цін + + Guides + Посібники - apps/client/src/app/pages/pricing/pricing-page.html + apps/client/src/app/pages/resources/guides/resources-guides.component.html 4 - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - Наша офіційна хмарна пропозиція Ghostfolio Premium - це найпростіший спосіб почати роботу. Завдяки економії часу, це буде найкращим варіантом для більшості людей. Доходи використовуються для покриття витрат на хостинг-інфраструктуру та фінансування постійної розробки. + + guides + guides + kebab-case - apps/client/src/app/pages/pricing/pricing-page.html - 6 + libs/common/src/lib/routes/routes.ts + 296 - - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - Якщо ви віддаєте перевагу запускати Ghostfolio на власній інфраструктурі, перейдіть на GitHub для отримання вихідного коду та подальших інструкцій. - apps/client/src/app/pages/pricing/pricing-page.html - 26 + libs/common/src/lib/routes/routes.ts + 299 - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - Для технікознавих інвесторів, які віддають перевагу запуску Ghostfolio на власній інфраструктурі. + + glossary + glossary + kebab-case - apps/client/src/app/pages/pricing/pricing-page.html - 38 + libs/common/src/lib/routes/routes.ts + 288 + + + libs/common/src/lib/routes/routes.ts + 291 - - Unlimited Transactions - Необмежені транзакції + + Personal Finance Tools + Інструменти особистих фінансів - apps/client/src/app/pages/pricing/pricing-page.html - 45 + libs/common/src/lib/routes/routes.ts + 329 + + + open-source-alternative-to + vidkrytyi-alternatyvnyi-dlia + kebab-case - apps/client/src/app/pages/pricing/pricing-page.html - 134 + libs/common/src/lib/routes/routes.ts + 320 - apps/client/src/app/pages/pricing/pricing-page.html - 206 + libs/common/src/lib/routes/routes.ts + 324 - - Unlimited Accounts - Необмежена кількість рахунків + + Discover Open Source Alternatives for Personal Finance Tools + Відкрийте для себе альтернативи з відкритим кодом для інструментів особистих фінансів - apps/client/src/app/pages/pricing/pricing-page.html - 49 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 + + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + Ця сторінка огляду містить добірку інструментів особистих фінансів, порівняних з відкритою альтернативою Ghostfolio. Якщо ви цінуєте прозорість, конфіденційність даних та співпрацю в спільноті, Ghostfolio надає чудову можливість взяти під контроль ваше фінансове управління. - apps/client/src/app/pages/pricing/pricing-page.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 + + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + Ознайомтеся з посиланнями нижче, щоб порівняти різні інструменти особистих фінансів з Ghostfolio. - apps/client/src/app/pages/pricing/pricing-page.html - 210 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 - - Portfolio Performance - Прибутковість портфеля + + Open Source Alternative to + Відкрита альтернатива для - apps/client/src/app/pages/pricing/pricing-page.html - 53 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 + + + Switzerland + Швейцарія - apps/client/src/app/pages/pricing/pricing-page.html - 142 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 - apps/client/src/app/pages/pricing/pricing-page.html - 214 + libs/ui/src/lib/i18n.ts + 93 - - Data Import and Export - Імпорт та експорт даних - - apps/client/src/app/pages/pricing/pricing-page.html - 73 - + + Global + Глобальний - apps/client/src/app/pages/pricing/pricing-page.html - 146 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - apps/client/src/app/pages/pricing/pricing-page.html - 234 + libs/ui/src/lib/i18n.ts + 16 - - Community Support - Підтримка спільноти + + Alternative + Альтернатива - apps/client/src/app/pages/pricing/pricing-page.html - 90 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - Self-hosted, update manually. - Самохостинг, оновлення вручну. + + App + Додаток - apps/client/src/app/pages/pricing/pricing-page.html - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Free - Безкоштовно + + Budgeting + Бюджетування - apps/client/src/app/pages/pricing/pricing-page.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 + + + Community + Спільнота - apps/client/src/app/pages/pricing/pricing-page.html - 158 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - For new investors who are just getting started with trading. - Для нових інвесторів, які тільки починають з торгівлі. + + Family Office + Сімейний офіс - apps/client/src/app/pages/pricing/pricing-page.html - 128 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Fully managed Ghostfolio cloud offering. - Повністю керована хмарна пропозиція Ghostfolio. + + Investor + Інвестор - apps/client/src/app/pages/pricing/pricing-page.html - 157 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 + + + Open Source + Відкритий код - apps/client/src/app/pages/pricing/pricing-page.html - 283 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - For ambitious investors who need the full picture of their financial assets. - Для амбітних інвесторів, яким потрібна повна картина їхніх фінансових активів. + + Personal Finance + Особисті фінанси - apps/client/src/app/pages/pricing/pricing-page.html - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Email and Chat Support - Підтримка електронної пошти та чату + + Privacy + Конфіденційність - apps/client/src/app/pages/pricing/pricing-page.html - 279 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - One-time payment, no auto-renewal. - Разова оплата, без автоматичного поновлення. + + Software + Програмне забезпечення - apps/client/src/app/pages/pricing/pricing-page.html - 316 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - It’s free. - Це безкоштовно. + + Tool + Інструмент - apps/client/src/app/pages/pricing/pricing-page.html - 345 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - Hello, has shared a Portfolio with you! - Привіт, поділився з вами Портфелем! + + User Experience + Користувацький досвід - apps/client/src/app/pages/public/public-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - Today - Сьогодні + + Wealth + Багатство - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - This year - Цього року - - apps/client/src/app/pages/public/public-page.html - 42 + + Wealth Management + Управління багатством + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - From the beginning - З початку + + The Open Source Alternative to + Відкрита альтернатива до - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 - - Currencies - Валюти + + This page has been archived. + Цю сторінку було архівовано. - apps/client/src/app/pages/public/public-page.html - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Continents - Континенти + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + Ви шукаєте відкриту альтернативу для ? Ghostfolio є потужним інструментом управління портфелем, який надає індивідуумам комплексну платформу для відстеження, аналізу та оптимізації їхніх інвестицій. Незалежно від того, чи ви досвідчений інвестор, чи тільки починаєте, Ghostfolio пропонує зручний інтерфейс користувача та широкий спектр функціональностей для допомоги вам у прийнятті обґрунтованих рішень та взятті під контроль вашого фінансового майбутнього. - apps/client/src/app/pages/public/public-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 - - Would you like to refine your personal investment strategy? - Чи хотіли б ви удосконалити вашу особисту інвестиційну стратегію? + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio є відкритим програмним забезпеченням (OSS), що надає економічно ефективну альтернативу для , роблячи його особливо підходящим для тих, хто обмежений у бюджеті, таких як прагнення до фінансової незалежності, раннього виходу на пенсію (FIRE). Використовуючи колективні зусилля спільноти розробників та ентузіастів особистих фінансів, Ghostfolio постійно покращує свої можливості, безпеку та користувацький досвід. - apps/client/src/app/pages/public/public-page.html - 211 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 - - Ghostfolio empowers you to keep track of your wealth. - Ghostfolio надає можливість вам стежити за вашим багатством. + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Давайте заглибимося у детальну порівняльну таблицю Ghostfolio проти нижче, щоб отримати повне розуміння того, як Ghostfolio позиціонує себе відносно . Ми дослідимо різні аспекти, такі як функції, конфіденційність даних, ціни тощо, що дозволить вам зробити добре обдуманий вибір для ваших особистих потреб. - apps/client/src/app/pages/public/public-page.html - 215 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 - - Registration - Реєстрація + + Ghostfolio vs comparison table + Порівняльна таблиця Ghostfolio проти - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 - - Continue with Internet Identity - Продовжити з Інтернет-Ідентичністю + + Founded + Засновано - apps/client/src/app/pages/register/register-page.html - 42 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 - - Continue with Google - Продовжити з Google + + Origin + Походження - apps/client/src/app/pages/register/register-page.html - 53 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 - - Copy to clipboard - Копіювати в буфер обміну + + Region + Регіон - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 87 - - Glossary - Глосарій + + Available in + Доступно в - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 108 + + + is Open Source Software + є відкритим програмним забезпеченням - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Glossary - Глосарій + + ✅ Yes + ✅ Так - apps/client/src/app/pages/resources/glossary/resources-glossary.component.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 - - - Guides - Посібники - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 179 - - - Guides - Посібники - apps/client/src/app/pages/resources/guides/resources-guides.component.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 196 - - - guides - guides - snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 218 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 235 - - - glossary - glossary - snake-case - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 257 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 274 - - Personal Finance Tools - Інструменти особистих фінансів + + is not Open Source Software + не є відкритим програмним забезпеченням - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - open-source-alternative-to - відкритий-альтернативний-для + + ❌ No + ❌ Ні - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 147 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 - - - Open Source Alternative to - Альтернатива з відкритим кодом для - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 186 - - - Discover Open Source Alternatives for Personal Finance Tools - Відкрийте для себе альтернативи з відкритим кодом для інструментів особистих фінансів - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 203 - - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - Ця сторінка огляду містить добірку інструментів особистих фінансів, порівняних з відкритою альтернативою Ghostfolio. Якщо ви цінуєте прозорість, конфіденційність даних та співпрацю в спільноті, Ghostfolio надає чудову можливість взяти під контроль ваше фінансове управління. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 225 - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - Ознайомтеся з посиланнями нижче, щоб порівняти різні інструменти особистих фінансів з Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 242 - - - Open Source Alternative to - Відкрита альтернатива для - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 264 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 281 - - Switzerland - Швейцарія + + is Open Source Software + є відкритим програмним забезпеченням - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 + + + is not Open Source Software + не є відкритим програмним забезпеченням - libs/ui/src/lib/i18n.ts - 93 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Global - Глобальний + + Self-Hosting + Самохостинг - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 170 + + + can be self-hosted + може бути self-hosted - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Alternative - Альтернатива + + cannot be self-hosted + не може бути self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - App - Додаток + + can be self-hosted + може бути self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Budgeting - Бюджетування + + cannot be self-hosted + не може бути self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Community - Спільнота + + Use anonymously + Використовувати анонімно - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 - - Family Office - Сімейний офіс + + can be used anonymously + може використовуватися анонімно - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Investor - Інвестор + + cannot be used anonymously + не може використовуватися анонімно - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Open Source - Відкритий код + + can be used anonymously + може використовуватися анонімно - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Personal Finance - Особисті фінанси + + cannot be used anonymously + не може використовуватися анонімно - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Privacy - Конфіденційність + + Free Plan + Безкоштовний план - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 - - Software - Програмне забезпечення + + offers a free plan + пропонує безкоштовний план - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Tool - Інструмент + + does not offer a free plan + не пропонує безкоштовний план - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - User Experience - Користувацький досвід + + offers a free plan + пропонує безкоштовний план - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Wealth - Багатство + + does not offer a free plan + не пропонує безкоштовний план - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Wealth Management - Управління багатством + + Starting from + Починаючи з - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - - - The Open Source Alternative to - Відкрита альтернатива до apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + 294 - - This page has been archived. - Цю сторінку було архівовано. + + year + рік apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + 290 - - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - Ви шукаєте відкриту альтернативу для ? Ghostfolio є потужним інструментом управління портфелем, який надає індивідуумам комплексну платформу для відстеження, аналізу та оптимізації їхніх інвестицій. Незалежно від того, чи ви досвідчений інвестор, чи тільки починаєте, Ghostfolio пропонує зручний інтерфейс користувача та широкий спектр функціональностей для допомоги вам у прийнятті обґрунтованих рішень та взятті під контроль вашого фінансового майбутнього. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + 296 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio є відкритим програмним забезпеченням (OSS), що надає економічно ефективну альтернативу для , роблячи його особливо підходящим для тих, хто обмежений у бюджеті, таких як прагнення до фінансової незалежності, раннього виходу на пенсію (FIRE). Використовуючи колективні зусилля спільноти розробників та ентузіастів особистих фінансів, Ghostfolio постійно покращує свої можливості, безпеку та користувацький досвід. + + Notes + Примітки apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + 302 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Давайте заглибимося у детальну порівняльну таблицю Ghostfolio проти нижче, щоб отримати повне розуміння того, як Ghostfolio позиціонує себе відносно . Ми дослідимо різні аспекти, такі як функції, конфіденційність даних, ціни тощо, що дозволить вам зробити добре обдуманий вибір для ваших особистих потреб. + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + Зазначаємо, що інформація, надана в порівняльній таблиці Ghostfolio проти базується на нашому незалежному дослідженні та аналізі. Цей веб-сайт не пов’язаний з або будь-яким іншим продуктом, згаданим у порівнянні. Оскільки ландшафт інструментів особистих фінансів еволюціонує, важливо перевіряти будь-які конкретні деталі або зміни безпосередньо на сторінці відповідного продукту. Потрібно оновити дані? Допоможіть нам підтримувати точні дані на GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + 311 - - Ghostfolio vs comparison table - Порівняльна таблиця Ghostfolio проти + + Ready to take your investments to the next level? + Готові підняти ваші інвестиції на наступний рівень? apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + 324 - - Founded - Засновано + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Легко відстежуйте, аналізуйте та візуалізуйте ваше багатство з Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 77 + 328 - - Origin - Походження + + Get Started + Почати apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 82 + 333 - - Region - Регіон + + Personal Finance Tools + Інструменти особистих фінансів apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 87 + 351 - - Available in - Доступно в + + Resources + Ресурси - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 108 + libs/common/src/lib/routes/routes.ts + 332 - - is Open Source Software - є відкритим програмним забезпеченням + + Membership + Членство - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + libs/common/src/lib/routes/routes.ts + 31 - - ✅ Yes - ✅ Так + + Access + Доступ - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 140 + libs/common/src/lib/routes/routes.ts + 26 + + + My Ghostfolio + Мій Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 157 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 34 + + + Oops, authentication has failed. + Упс, аутентифікація не вдалася. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 179 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 + + + Try again + Спробуйте ще раз - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 196 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 + + + Go back to Home Page + Повернутися на головну сторінку - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 218 + apps/client/src/app/pages/webauthn/webauthn-page.html + 33 + + + Do you really want to delete this account balance? + Ви дійсно хочете видалити цей рахунок? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 235 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 + + + Import Activities + Імпортувати активності - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 257 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 274 + libs/ui/src/lib/activities-table/activities-table.component.html + 371 - - is not Open Source Software - не є відкритим програмним забезпеченням + + Import Dividends + Імпорт дивідендів - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 383 - - ❌ No - ❌ Ні + + Export Activities + Експорт активності - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 147 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 164 + libs/ui/src/lib/activities-table/activities-table.component.html + 396 + + + Export Drafts as ICS + Експортувати чернетки як ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 186 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 203 + libs/ui/src/lib/activities-table/activities-table.component.html + 409 + + + Delete Activities + Видалити активності - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 225 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 + + + Draft + Чернетка - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 242 + libs/ui/src/lib/activities-table/activities-table.component.html + 145 + + + Clone + Клонувати - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 264 + libs/ui/src/lib/activities-table/activities-table.component.html + 436 + + + Export Draft as ICS + Експортувати чернетку як ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 281 + libs/ui/src/lib/activities-table/activities-table.component.html + 446 - - is Open Source Software - є відкритим програмним забезпеченням + + Do you really want to delete these activities? + Ви дійсно хочете видалити ці дії? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + libs/ui/src/lib/activities-table/activities-table.component.ts + 219 - - is not Open Source Software - не є відкритим програмним забезпеченням + + Do you really want to delete this activity? + Ви дійсно хочете видалити цю активність? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + libs/ui/src/lib/activities-table/activities-table.component.ts + 229 - - Self-Hosting - Самохостинг + + Week to date + Тиждень до дати - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 170 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - can be self-hosted - може бути self-hosted + + WTD + WTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - cannot be self-hosted - не може бути self-hosted + + Month to date + Місяць до дати - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - can be self-hosted - може бути self-hosted + + MTD + MTD - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - cannot be self-hosted - не може бути self-hosted + + Year to date + Рік до дати - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Use anonymously - Використовувати анонімно + + year + рік - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 209 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - can be used anonymously - може використовуватися анонімно + + years + роки - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - cannot be used anonymously - не може використовуватися анонімно + + Asset Profiles + Профілі активів - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 - - can be used anonymously - може використовуватися анонімно + + Date Range + Діапазон дат - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + libs/ui/src/lib/assistant/assistant.html + 130 - - cannot be used anonymously - не може використовуватися анонімно + + Tag + Тег - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + libs/ui/src/lib/assistant/assistant.html + 194 - - Free Plan - Безкоштовний план + + Reset Filters + Скинути фільтри - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 248 + libs/ui/src/lib/assistant/assistant.html + 224 - - offers a free plan - пропонує безкоштовний план + + Apply Filters + Застосувати фільтри - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + libs/ui/src/lib/assistant/assistant.html + 234 - - does not offer a free plan - не пропонує безкоштовний план + + 50-Day Trend + Тренд на 50 днів - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 - - offers a free plan - пропонує безкоштовний план + + 200-Day Trend + Тренд на 200 днів - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 - - does not offer a free plan - не пропонує безкоштовний план + + Last All Time High + Останній рекордний максимум - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 - - Starting from - Починаючи з + + Change from All Time High + Зміна від Історичного Максимуму - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 + libs/ui/src/lib/benchmark/benchmark.component.html + 110 + + + from ATH + від ІМ - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + libs/ui/src/lib/benchmark/benchmark.component.html + 112 - - year - рік + + Market data provided by + Ринкові дані надані - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month + Ставка заощаджень на місяць - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 - - Notes - Примітки + + Annual Interest Rate + Річна процентна ставка - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 302 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - Зазначаємо, що інформація, надана в порівняльній таблиці Ghostfolio проти базується на нашому незалежному дослідженні та аналізі. Цей веб-сайт не пов’язаний з або будь-яким іншим продуктом, згаданим у порівнянні. Оскільки ландшафт інструментів особистих фінансів еволюціонує, важливо перевіряти будь-які конкретні деталі або зміни безпосередньо на сторінці відповідного продукту. Потрібно оновити дані? Допоможіть нам підтримувати точні дані на GitHub. + + Retirement Date + Дата виходу на пенсію - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 - - Ready to take your investments to the next level? - Готові підняти ваші інвестиції на наступний рівень? + + Projected Total Amount + Прогнозована загальна сума - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Легко відстежуйте, аналізуйте та візуалізуйте ваше багатство з Ghostfolio. + + Deposit + Депозит - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 328 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 360 - - Get Started - Почати + + Interest + Відсотки - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 370 - - - Personal Finance Tools - Інструменти особистих фінансів - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 351 + libs/ui/src/lib/i18n.ts + 38 - - Resources - Ресурси + + Savings + Заощадження - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 380 - - Membership - Членство + + Details for + Деталі для - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 2 + + + Oops! Could not parse historical data. + Упс! Не вдалося отримати історичні дані. - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 - - Access - Доступ + + Allocation + Розподіл - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 40 - - - My Ghostfolio - Мій Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 116 - - Oops, authentication has failed. - Упс, аутентифікація не вдалася. + + Change + Змінити - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 119 - - Try again - Спробуйте ще раз + + Show all + Показати все - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 - - Go back to Home Page - Повернутися на головну сторінку + + Account + Рахунок - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 4 - - Do you really want to delete this account balance? - Ви дійсно хочете видалити цей рахунок? + + Asia-Pacific + Азія-Тихоокеанський регіон - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + libs/ui/src/lib/i18n.ts + 5 - - Import Activities - Імпортувати активності + + Asset Class + Клас активів - libs/ui/src/lib/activities-table/activities-table.component.html - 9 + libs/ui/src/lib/i18n.ts + 6 + + + Asset Sub Class + Підклас активів - libs/ui/src/lib/activities-table/activities-table.component.html - 371 + libs/ui/src/lib/i18n.ts + 7 - - Import Dividends - Імпорт дивідендів + + Buy and sell + Купівля та продаж - libs/ui/src/lib/activities-table/activities-table.component.html - 29 + libs/ui/src/lib/i18n.ts + 8 + + + Cancel + Скасувати - libs/ui/src/lib/activities-table/activities-table.component.html - 383 + libs/ui/src/lib/i18n.ts + 9 - - Export Activities - Експорт активності + + Core + Ядро - libs/ui/src/lib/activities-table/activities-table.component.html - 41 + libs/ui/src/lib/i18n.ts + 10 + + + Close + Закрити - libs/ui/src/lib/activities-table/activities-table.component.html - 396 + libs/ui/src/lib/i18n.ts + 11 - - Export Drafts as ICS - Експортувати чернетки як ICS + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Переключитися на Ghostfolio Premium або Ghostfolio з відкритим вихідним кодом легко - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + libs/ui/src/lib/i18n.ts + 12 - - libs/ui/src/lib/activities-table/activities-table.component.html - 409 + + + Switch to Ghostfolio Premium easily + Переключитися на Ghostfolio Premium легко + + libs/ui/src/lib/i18n.ts + 13 - - Delete Activities - Видалити активності + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Переключитися на Ghostfolio Open Source або Ghostfolio Basic легко - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + libs/ui/src/lib/i18n.ts + 14 - - Draft - Чернетка + + Emergency Fund + Резервний фонд - libs/ui/src/lib/activities-table/activities-table.component.html - 145 + libs/ui/src/lib/i18n.ts + 15 - - Clone - Клонувати + + Grant + Грант - libs/ui/src/lib/activities-table/activities-table.component.html - 436 + libs/ui/src/lib/i18n.ts + 17 - - Export Draft as ICS - Експортувати чернетку як ICS + + Higher Risk + Вищий ризик - libs/ui/src/lib/activities-table/activities-table.component.html - 446 + libs/ui/src/lib/i18n.ts + 18 - - Do you really want to delete these activities? - Ви дійсно хочете видалити ці дії? + + This activity already exists. + Така активність вже існує. - libs/ui/src/lib/activities-table/activities-table.component.ts - 219 + libs/ui/src/lib/i18n.ts + 19 - - Do you really want to delete this activity? - Ви дійсно хочете видалити цю активність? + + Lower Risk + Нижчий ризик - libs/ui/src/lib/activities-table/activities-table.component.ts - 229 + libs/ui/src/lib/i18n.ts + 20 - - Find holding... - Знайти актив... + + Month + Місяць - libs/ui/src/lib/assistant/assistant.component.ts - 143 + libs/ui/src/lib/i18n.ts + 21 - - Week to date - Тиждень до дати + + Months + Місяців - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 22 - - WTD - WTD + + Other + Інші - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 23 - - - Month to date - Місяць до дати - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 400 - - MTD - MTD + + Get access to 80’000+ tickers from over 50 exchanges + Отримайте доступ до 80 000+ тікерів з понад 50 бірж - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 24 - - Year to date - Рік до дати + + Preset + Пресет - libs/ui/src/lib/assistant/assistant.component.ts - 230 + libs/ui/src/lib/i18n.ts + 25 - - year - рік + + Retirement Provision + Пенсійне накопичення - libs/ui/src/lib/assistant/assistant.component.ts - 234 + libs/ui/src/lib/i18n.ts + 26 - - years - роки + + Satellite + Супутник - libs/ui/src/lib/assistant/assistant.component.ts - 256 + libs/ui/src/lib/i18n.ts + 27 - - No entries... - Немає записів... + + Symbol + Символ - libs/ui/src/lib/assistant/assistant.html - 62 + libs/ui/src/lib/i18n.ts + 28 + + + Tag + Тег - libs/ui/src/lib/assistant/assistant.html - 85 + libs/ui/src/lib/i18n.ts + 29 - - Asset Profiles - Профілі активів + + Year + Рік - libs/ui/src/lib/assistant/assistant.html - 67 + libs/ui/src/lib/i18n.ts + 30 - - Date Range - Діапазон дат + + Years + Роки - libs/ui/src/lib/assistant/assistant.html - 95 + libs/ui/src/lib/i18n.ts + 31 - - Tag - Тег + + Yes + Так - libs/ui/src/lib/assistant/assistant.html - 157 + libs/ui/src/lib/i18n.ts + 32 - - Reset Filters - Скинути фільтри + + Buy + Купити - libs/ui/src/lib/assistant/assistant.html - 187 + libs/ui/src/lib/i18n.ts + 35 - - Apply Filters - Застосувати фільтри + + Fee + Комісія - libs/ui/src/lib/assistant/assistant.html - 197 + libs/ui/src/lib/i18n.ts + 37 - - 50-Day Trend - Тренд на 50 днів + + Valuable + Цінний - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + libs/ui/src/lib/i18n.ts + 39 - - 200-Day Trend - Тренд на 200 днів + + Liability + Зобов’язання - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + libs/ui/src/lib/i18n.ts + 40 - - Last All Time High - Останній рекордний максимум + + Sell + Продати - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + libs/ui/src/lib/i18n.ts + 41 - - Change from All Time High - Зміна від Історичного Максимуму + + Cash + Готівка - libs/ui/src/lib/benchmark/benchmark.component.html - 96 + libs/ui/src/lib/i18n.ts + 44 - - from ATH - від ІМ + + Commodity + Товар - libs/ui/src/lib/benchmark/benchmark.component.html - 98 + libs/ui/src/lib/i18n.ts + 45 - - Market data provided by - Ринкові дані надані + + Equity + Капітал - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 46 - - Savings Rate per Month - Ставка заощаджень на місяць + + Fixed Income + Фіксований дохід - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 47 - - Annual Interest Rate - Річна процентна ставка + + Liquidity + Ліквідність - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 48 - - Retirement Date - Дата виходу на пенсію + + Real Estate + Нерухомість - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 49 - - Projected Total Amount - Прогнозована загальна сума + + Bond + Облігація - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + libs/ui/src/lib/i18n.ts + 52 - - Deposit - Депозит + + Cryptocurrency + Криптовалюта - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 360 + libs/ui/src/lib/i18n.ts + 53 - - Interest - Відсотки + + ETF + ETF - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 370 + libs/ui/src/lib/i18n.ts + 54 + + + Mutual Fund + Взаємний фонд libs/ui/src/lib/i18n.ts - 38 + 55 - - Savings - Заощадження + + Precious Metal + Дорогоцінний метал - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 380 + libs/ui/src/lib/i18n.ts + 56 - - Details for - Деталі для + + Private Equity + Приватний капітал - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 2 + libs/ui/src/lib/i18n.ts + 57 - - Oops! Could not parse historical data. - Упс! Не вдалося отримати історичні дані. + + Stock + Акція - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + libs/ui/src/lib/i18n.ts + 58 - - Allocation - Розподіл + + Africa + Африка - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/i18n.ts + 65 + + + Asia + Азія - libs/ui/src/lib/top-holdings/top-holdings.component.html - 40 + libs/ui/src/lib/i18n.ts + 66 + + + Europe + Європа - libs/ui/src/lib/top-holdings/top-holdings.component.html - 116 + libs/ui/src/lib/i18n.ts + 67 - - Change - Змінити + + North America + Північна Америка - libs/ui/src/lib/holdings-table/holdings-table.component.html - 119 + libs/ui/src/lib/i18n.ts + 68 - - Show all - Показати все + + Oceania + Океанія - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/i18n.ts + 69 - - Account - Рахунок + + South America + Південна Америка libs/ui/src/lib/i18n.ts - 4 + 70 - - Asia-Pacific - Азія-Тихоокеанський регіон + + Australia + Австралія libs/ui/src/lib/i18n.ts - 5 + 74 - - Asset Class - Клас активів + + Austria + Австрія libs/ui/src/lib/i18n.ts - 6 + 75 - - Asset Sub Class - Підклас активів + + Belgium + Бельгія libs/ui/src/lib/i18n.ts - 7 + 76 - - Buy and sell - Купівля та продаж + + Bulgaria + Болгарія libs/ui/src/lib/i18n.ts - 8 + 78 - - Cancel - Скасувати + + Canada + Канада libs/ui/src/lib/i18n.ts - 9 + 79 - - Core - Ядро + + Czech Republic + Чеська Республіка libs/ui/src/lib/i18n.ts - 10 + 80 - - Close - Закрити + + Finland + Фінляндія libs/ui/src/lib/i18n.ts - 11 + 81 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Переключитися на Ghostfolio Premium або Ghostfolio з відкритим вихідним кодом легко + + France + Франція libs/ui/src/lib/i18n.ts - 12 + 82 - - Switch to Ghostfolio Premium easily - Переключитися на Ghostfolio Premium легко + + Germany + Німеччина libs/ui/src/lib/i18n.ts - 13 + 83 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Переключитися на Ghostfolio Open Source або Ghostfolio Basic легко + + India + Індія libs/ui/src/lib/i18n.ts - 14 + 84 - - Emergency Fund - Резервний фонд + + Italy + Італія libs/ui/src/lib/i18n.ts - 15 + 85 - - Grant - Грант + + Japan + Японія libs/ui/src/lib/i18n.ts - 17 + 86 - - Higher Risk - Вищий ризик + + Netherlands + Нідерланди libs/ui/src/lib/i18n.ts - 18 + 87 - - This activity already exists. - Така активність вже існує. + + New Zealand + Нова Зеландія libs/ui/src/lib/i18n.ts - 19 + 88 - - Lower Risk - Нижчий ризик + + Poland + Польща libs/ui/src/lib/i18n.ts - 20 + 89 - - Month - Місяць + + Romania + Румунія libs/ui/src/lib/i18n.ts - 21 + 90 - - Months - Місяців + + South Africa + Південна Африка libs/ui/src/lib/i18n.ts - 22 + 92 - - Other - Інші + + Thailand + Таїланд libs/ui/src/lib/i18n.ts - 23 - - - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 94 - - Get access to 80’000+ tickers from over 50 exchanges - Отримайте доступ до 100 000+ тікерів з понад 50 бірж + + Ukraine + Україна libs/ui/src/lib/i18n.ts - 24 + 95 - - Preset - Пресет + + United States + Сполучені Штати libs/ui/src/lib/i18n.ts - 25 + 97 - - Retirement Provision - Пенсійне накопичення + + Extreme Fear + Екстремальний страх libs/ui/src/lib/i18n.ts - 26 + 100 - - Satellite - Супутник + + Extreme Greed + Екстремальна жадібність libs/ui/src/lib/i18n.ts - 27 + 101 - - Symbol - Символ + + Neutral + Нейтрально libs/ui/src/lib/i18n.ts - 28 + 104 - - Tag - Тег + + API Key + Ключ API - libs/ui/src/lib/i18n.ts - 29 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Year - Рік + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + Згенерувати ключ API для постачальника даних Ghostfolio Premium для self-hosted середовищ... - libs/ui/src/lib/i18n.ts - 30 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - Years - Роки + + Membership + Членство - libs/ui/src/lib/i18n.ts - 31 + libs/ui/src/lib/membership-card/membership-card.component.html + 37 - - Yes - Так + + Time to add your first activity. + Час додати першу активність. - libs/ui/src/lib/i18n.ts - 32 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Buy - Купити + + No data available + Дані недоступні - libs/ui/src/lib/i18n.ts - 35 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 402 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 415 - - Fee - Комісія + + Oops! Could not find any assets. + Упс! Не вдалося знайти жодного активу. - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Valuable - Цінний + + Show more + Показати більше - libs/ui/src/lib/i18n.ts - 39 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Liability - Зобов’язання + + AI prompt has been copied to the clipboard + Запит AI скопійовано в буфер обміну - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - Sell - Продати + + Regional Market Cluster Risks + Regional Market Cluster Risks - libs/ui/src/lib/i18n.ts - 41 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - Cash - Готівка + + Lazy + Lazy - libs/ui/src/lib/i18n.ts - 44 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - Commodity - Товар + + Instant + Instant - libs/ui/src/lib/i18n.ts - 45 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - Equity - Капітал + + Default Market Price + Default Market Price - libs/ui/src/lib/i18n.ts - 46 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - Fixed Income - Фіксований дохід + + Mode + Mode - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - Liquidity - Ліквідність + + Selector + Selector - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - Real Estate - Нерухомість + + HTTP Request Headers + HTTP Request Headers - libs/ui/src/lib/i18n.ts - 49 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - Bond - Облігація + + end of day + end of day - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - Cryptocurrency - Криптовалюта + + real-time + real-time - libs/ui/src/lib/i18n.ts - 53 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - ETF - ETF + + Open Duck.ai + Open Duck.ai - libs/ui/src/lib/i18n.ts - 54 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - Mutual Fund - Взаємний фонд + + Create + Create - libs/ui/src/lib/i18n.ts - 55 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - Precious Metal - Дорогоцінний метал + + Market Data + Market Data - libs/ui/src/lib/i18n.ts - 56 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - Private Equity - Приватний капітал + + Change + Change - libs/ui/src/lib/i18n.ts - 57 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - Stock - Акція + + Performance + Performance - libs/ui/src/lib/i18n.ts - 58 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Africa - Африка - libs/ui/src/lib/i18n.ts - 65 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Asia - Азія + + Copy portfolio data to clipboard for AI prompt + Copy portfolio data to clipboard for AI prompt - libs/ui/src/lib/i18n.ts - 66 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Europe - Європа + + Copy AI prompt to clipboard for analysis + Copy AI prompt to clipboard for analysis - libs/ui/src/lib/i18n.ts + apps/client/src/app/pages/portfolio/analysis/analysis-page.html 67 - - North America - Північна Америка + + Armenia + Armenia libs/ui/src/lib/i18n.ts - 68 + 73 - - Oceania - Океанія + + British Virgin Islands + British Virgin Islands libs/ui/src/lib/i18n.ts - 69 + 77 - - South America - Південна Америка + + Singapore + Singapore libs/ui/src/lib/i18n.ts - 70 + 91 - - Australia - Австралія + + Terms and Conditions + Terms and Conditions - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Austria - Австрія + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + Please keep your security token safe. If you lose it, you will not be able to recover your account. - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 - - Belgium - Бельгія + + I understand that if I lose my security token, I cannot recover my account + I understand that if I lose my security token, I cannot recover my account - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - Bulgaria - Болгарія + + Continue + Continue - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 - - Canada - Канада + + Here is your security token. It is only visible once, please store and keep it in a safe place. + Here is your security token. It is only visible once, please store and keep it in a safe place. - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - Czech Republic - Чеська Республіка + + Security token + Security token - libs/ui/src/lib/i18n.ts - 80 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - - - Finland - Фінляндія - libs/ui/src/lib/i18n.ts - 81 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - France - Франція + + Do you really want to generate a new security token for this user? + Do you really want to generate a new security token for this user? - libs/ui/src/lib/i18n.ts - 82 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - Germany - Німеччина + + Generate Security Token + Generate Security Token - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - India - Індія + + United Kingdom + United Kingdom libs/ui/src/lib/i18n.ts - 84 + 96 - - Italy - Італія + + Terms of Service + Terms of Service - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/app.component.html + 112 - - Japan - Японія + + terms-of-service + terms-of-service + kebab-case - libs/ui/src/lib/i18n.ts - 86 + libs/common/src/lib/routes/routes.ts + 212 - - - Netherlands - Нідерланди - libs/ui/src/lib/i18n.ts - 87 + libs/common/src/lib/routes/routes.ts + 215 - - New Zealand - Нова Зеландія + + Terms of Service + Terms of Service - libs/ui/src/lib/i18n.ts - 88 + libs/common/src/lib/routes/routes.ts + 217 - - Poland - Польща + + Terms of Service + Terms of Service - libs/ui/src/lib/i18n.ts - 89 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - Romania - Румунія + + and I agree to the Terms of Service. + and I agree to the Terms of Service. - libs/ui/src/lib/i18n.ts - 90 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - - South Africa - Південна Африка + + + () is already in use. + () is already in use. - libs/ui/src/lib/i18n.ts - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Thailand - Таїланд + + An error occurred while updating to (). + An error occurred while updating to (). - libs/ui/src/lib/i18n.ts - 94 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Ukraine - Україна + + Apply + Apply - libs/ui/src/lib/i18n.ts - 95 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - United States - Сполучені Штати + + with API access for + with API access for - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Extreme Fear - Екстремальний страх + + Gather Recent Historical Market Data + Gather Recent Historical Market Data - libs/ui/src/lib/i18n.ts - 100 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Extreme Greed - Екстремальна жадібність + + Gather All Historical Market Data + Gather All Historical Market Data - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - Neutral - Нейтрально + + Gather Historical Market Data + Gather Historical Market Data - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - API Key - Ключ API + + Data Gathering is off + Data Gathering is off - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - Згенерувати ключ API для постачальника даних Ghostfolio Premium для self-hosted середовищ... + + Performance Calculation + Performance Calculation - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - Membership - Членство + + someone + someone - libs/ui/src/lib/membership-card/membership-card.component.html - 37 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Time to add your first activity. - Час додати першу активність. + + Add asset to watchlist + Add asset to watchlist - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - No data available - Дані недоступні + + Watchlist + Watchlist - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + apps/client/src/app/pages/features/features-page.html + 197 - - Oops! Could not find any assets. - Упс! Не вдалося знайти жодного активу. + + Watchlist + Watchlist - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/common/src/lib/routes/routes.ts + 110 - - Show more - Показати більше + + Do you really want to delete this item? + Do you really want to delete this item? - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - AI prompt has been copied to the clipboard - Запит AI скопійовано в буфер обміну + + Log out + Log out - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + apps/client/src/app/components/header/header.component.html + 329 - - Early Access - Ранній доступ + + Calculations are based on delayed market data and may not be displayed in real-time. + Calculations are based on delayed market data and may not be displayed in real-time. - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Regional Market Cluster Risks - Regional Market Cluster Risks - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + apps/client/src/app/components/markets/markets.html + 52 - - Lazy - Lazy + + changelog + changelog + kebab-case - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/common/src/lib/routes/routes.ts + 180 + + + libs/common/src/lib/routes/routes.ts + 183 - - Instant - Instant + + Demo user account has been synced. + Demo user account has been synced. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Default Market Price - Default Market Price + + Sync Demo User Account + Sync Demo User Account - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Mode - Mode + + Emergency Fund: Set up + Emergency Fund: Set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Selector - Selector + + No emergency fund has been set up + No emergency fund has been set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - HTTP Request Headers - HTTP Request Headers + + An emergency fund has been set up + An emergency fund has been set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - end of day - end of day + + Fee Ratio + Fee Ratio - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - real-time - real-time + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Open Duck.ai - Open Duck.ai + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Create - Create + + Name + Name - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Market Data - Market Data + + Find holding or page... + Find holding or page... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Change - Change + + Quick Links + Quick Links - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 43 - - Performance - Performance + + Asset Profiles + Asset Profiles - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 99 + + + Live Demo + Live Demo - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/common/src/lib/routes/routes.ts + 231 - - Copy portfolio data to clipboard for AI prompt - Copy portfolio data to clipboard for AI prompt + + Open Source Alternative to + Альтернатива з відкритим кодом для - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 326 - - Copy AI prompt to clipboard for analysis - Copy AI prompt to clipboard for analysis + + Single Account + Single Account - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Armenia - Armenia + + Your net worth is managed by a single account + Your net worth is managed by a single account - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - British Virgin Islands - British Virgin Islands + + Your net worth is managed by ${accountsLength} accounts + Your net worth is managed by ${accountsLength} accounts - libs/ui/src/lib/i18n.ts - 77 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Singapore - Singapore + + Holdings + Holdings - libs/ui/src/lib/i18n.ts - 91 + libs/ui/src/lib/assistant/assistant.html + 69 - - Terms and Conditions - Terms and Conditions + + personal-finance-tools + personal-finance-tools + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 312 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - Please keep your security token safe. If you lose it, you will not be able to recover your account. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 315 - - - I understand that if I lose my security token, I cannot recover my account - I understand that if I lose my security token, I cannot recover my account - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 323 - - Continue - Continue + + markets + markets + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 304 - - - Here is your security token. It is only visible once, please store and keep it in a safe place. - Here is your security token. It is only visible once, please store and keep it in a safe place. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 307 - - Security token - Security token + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Do you really want to generate a new security token for this user? - Do you really want to generate a new security token for this user? + + Get Access + Get Access - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Generate Security Token - Generate Security Token + + Learn more + Learn more - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - United Kingdom - United Kingdom + + new + new - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms of Service - Terms of Service + + Limited Offer! + Limited Offer! - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - terms-of-service - terms-of-service - snake-case + + Get extra + Get extra - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Available - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Unavailable - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + new - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Terms of Service - Terms of Service + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - Terms of Service + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - and I agree to the Terms of Service. - and I agree to the Terms of Service. + + Equity + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - () is already in use. - () is already in use. + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - An error occurred while updating to (). - An error occurred while updating to (). + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Apply - Apply + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - with API access for - with API access for + + Fixed Income + Fixed Income - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather Recent Historical Market Data - Gather Recent Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather All Historical Market Data - Gather All Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Historical Market Data - Gather Historical Market Data + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off - Data Gathering is off + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation - Performance Calculation + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone - someone + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist - Add asset to watchlist + + Investment + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist - Watchlist + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - Watchlist + + start + start + kebab-case - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - Get Early Access + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - Do you really want to delete this item? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - Log out + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 70458fffd..7931c907c 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2,1872 +2,1572 @@ - + about - snake-case + kebab-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 214 + + + faq + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 245 + + + features + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/about/about-page.component.ts - 84 + libs/common/src/lib/routes/routes.ts + 255 + + + license + kebab-case - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 270 + + + privacy-policy + kebab-case - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + libs/common/src/lib/routes/routes.ts + 207 + + + register + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/routes/routes.ts + 280 - - faq - snake-case + + resources + kebab-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 322 - - features - snake-case - - apps/client/src/app/app.component.ts - 83 - + + You are using the Live Demo. - apps/client/src/app/components/header/header.component.ts - 83 + apps/client/src/app/app.component.html + 12 + + + Create Account - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/app.component.html + 13 - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/register/register-page.html + 27 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 101 + + + Personal Finance - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/app.component.html + 57 + + + Markets - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/components/header/header.component.html + 408 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + apps/client/src/app/components/markets/markets.html + 2 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/markets/resources-markets.component.html + 2 + + + Resources - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/app.component.html + 64 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/components/header/header.component.html + 88 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/components/header/header.component.html + 301 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + apps/client/src/app/pages/resources/overview/resources-overview.component.html + 4 - - license - snake-case + + About - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/components/header/header.component.html + 123 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/components/header/header.component.html + 374 - - markets - snake-case + + Blog - apps/client/src/app/app.component.ts - 84 + apps/client/src/app/app.component.html + 73 - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - - - pricing - snake-case - apps/client/src/app/app.component.ts - 85 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 183 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html + 189 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html + 167 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 + apps/client/src/app/app.component.html + 77 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/app.component.html + 79 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/components/header/header.component.html + 361 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/pages/features/features-page.html + 5 + + + Frequently Asked Questions (FAQ) - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/app.component.html + 83 - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/pages/about/overview/about-overview-page.html + 156 - - privacy-policy - snake-case - - apps/client/src/app/app.component.ts - 76 - + + License - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/app.component.html + 89 - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/pages/about/license/license-page.html + 4 - - register - snake-case - - apps/client/src/app/app.component.ts - 86 - + + Pricing - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/app.component.html + 99 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/header/header.component.html + 105 - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/header/header.component.html + 313 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/components/header/header.component.html + 389 - apps/client/src/app/pages/features/features-page.component.ts - 28 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 287 + + + Privacy Policy - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + apps/client/src/app/app.component.html + 105 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 - - resources - snake-case + + Community - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/app.component.html + 130 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 85 - apps/client/src/app/components/header/header.component.ts - 92 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 94 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 98 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 102 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 106 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 118 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/pages/features/features-page.html + 276 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/app.component.html + 221 + + + Alias - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 - - You are using the Live Demo. + + Grantee - apps/client/src/app/app.component.html - 12 + apps/client/src/app/components/access-table/access-table.component.html + 11 - - Create Account + + Type - apps/client/src/app/app.component.html - 13 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - apps/client/src/app/pages/register/register-page.html - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 101 + libs/ui/src/lib/activities-table/activities-table.component.html + 161 - - Personal Finance + + Details - apps/client/src/app/app.component.html - 57 + apps/client/src/app/components/access-table/access-table.component.html + 33 - - Markets - - apps/client/src/app/app.component.html - 61 - - - apps/client/src/app/components/header/header.component.html - 394 - + + Revoke - apps/client/src/app/components/home-market/home-market.html - 2 + apps/client/src/app/components/access-table/access-table.component.html + 75 + + + Do you really want to revoke this granted access? - apps/client/src/app/pages/resources/markets/resources-markets.component.html - 2 + apps/client/src/app/components/access-table/access-table.component.ts + 79 - - Resources + + Cash Balance - apps/client/src/app/app.component.html - 64 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 47 - apps/client/src/app/components/header/header.component.html - 82 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - apps/client/src/app/components/header/header.component.html - 287 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity - apps/client/src/app/pages/resources/overview/resources-overview.component.html - 4 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 58 - - About + + Activities - apps/client/src/app/app.component.html - 70 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 - apps/client/src/app/components/header/header.component.html - 117 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 92 - apps/client/src/app/components/header/header.component.html - 360 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - - - Blog - apps/client/src/app/app.component.html - 73 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 205 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 45 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 184 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 184 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 224 - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 184 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Platform - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 196 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 67 - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Cash Balances - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Transfer Cash Balance - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Name - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 253 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 89 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 287 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 22 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 46 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 22 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html - 167 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 139 - apps/client/src/app/pages/blog/blog-page.html - 5 + libs/ui/src/lib/activities-table/activities-table.component.html + 138 - - - Changelog - apps/client/src/app/app.component.html - 77 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 16 - - - Features - apps/client/src/app/app.component.html - 79 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Total - apps/client/src/app/components/header/header.component.html - 347 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 + + + Currency - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - - - Frequently Asked Questions (FAQ) - apps/client/src/app/app.component.html - 83 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 185 - apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 294 - - - License - apps/client/src/app/app.component.html - 89 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 46 - apps/client/src/app/pages/about/license/license-page.html - 4 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - - - Pricing - apps/client/src/app/app.component.html - 99 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 145 - apps/client/src/app/components/header/header.component.html - 99 + libs/ui/src/lib/activities-table/activities-table.component.html + 276 + + + Value - apps/client/src/app/components/header/header.component.html - 299 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/components/header/header.component.html - 375 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 287 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - - - Privacy Policy - apps/client/src/app/app.component.html - 105 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 205 - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 208 - - - Community - apps/client/src/app/app.component.html - 130 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 211 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 85 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + libs/ui/src/lib/activities-table/activities-table.component.html + 257 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + libs/ui/src/lib/activities-table/activities-table.component.html + 293 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 102 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 25 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 106 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 102 + + + Edit - apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 268 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 67 - apps/client/src/app/pages/features/features-page.html - 276 + libs/ui/src/lib/activities-table/activities-table.component.html + 430 - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + + Delete - apps/client/src/app/app.component.html - 221 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 289 - - - Alias - apps/client/src/app/components/access-table/access-table.component.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 290 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - - - Grantee - apps/client/src/app/components/access-table/access-table.component.html - 11 + apps/client/src/app/components/admin-overview/admin-overview.html + 129 - - - Type - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 85 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 78 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 15 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 libs/ui/src/lib/activities-table/activities-table.component.html - 161 + 457 - - - Details - apps/client/src/app/components/access-table/access-table.component.html - 33 + libs/ui/src/lib/benchmark/benchmark.component.html + 169 - - Revoke + + Do you really want to delete this account? - apps/client/src/app/components/access-table/access-table.component.html - 75 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 107 - - Do you really want to revoke this granted access? - - apps/client/src/app/components/access-table/access-table.component.ts - 79 - - - - Cash Balance - - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 47 - - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 136 - + + Asset Profile - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 - - Equity + + Historical Market Data - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 - - - Activities - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 63 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 85 + + + Symbol - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 92 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 46 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 119 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 75 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 205 - - - apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 - - - apps/client/src/app/components/admin-users/admin-users.html - 135 + 153 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 39 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 - - - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + 308 - - Platform + + Data Source - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 67 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 55 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 86 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 106 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 163 - - - Cash Balances - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 155 - - Transfer Cash Balance - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 - + + Attempts - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 83 - - Name + + Created - apps/client/src/app/components/accounts-table/accounts-table.component.html - 43 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 92 + + + Finished - apps/client/src/app/components/admin-market-data/admin-market-data.html - 89 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 101 + + + Status - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 287 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 110 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 + + + Delete Jobs - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 15 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 151 + + + View Data - apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 166 + + + View Stacktrace - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 173 + + + Delete Job - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 15 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 180 + + + Details for - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 2 + + + Date apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + 161 - libs/ui/src/lib/activities-table/activities-table.component.html - 138 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - libs/ui/src/lib/benchmark/benchmark.component.html - 4 + libs/ui/src/lib/activities-table/activities-table.component.html + 170 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 6 + + + Market Price - libs/ui/src/lib/top-holdings/top-holdings.component.html - 16 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 133 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 88 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 109 - - - Total - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 26 - - Currency - - apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 - + + Cancel apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + 146 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 294 + 544 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 46 + 56 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 38 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - libs/ui/src/lib/activities-table/activities-table.component.html - 276 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 15 - - - Value - apps/client/src/app/components/accounts-table/accounts-table.component.html - 171 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 206 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 53 + 65 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + 338 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 48 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 46 + + + Save - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 551 - libs/ui/src/lib/activities-table/activities-table.component.html - 257 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 63 - libs/ui/src/lib/activities-table/activities-table.component.html - 293 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 45 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 25 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 22 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 102 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 135 - - - Edit - apps/client/src/app/components/accounts-table/accounts-table.component.html - 278 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 268 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 345 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 48 + + + Currencies - libs/ui/src/lib/activities-table/activities-table.component.html - 430 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 86 - - Delete + + ETFs without Countries - apps/client/src/app/components/accounts-table/accounts-table.component.html - 289 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 91 + + + ETFs without Sectors - apps/client/src/app/components/admin-market-data/admin-market-data.html - 290 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 96 + + + Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Filter by... - apps/client/src/app/components/admin-overview/admin-overview.html - 129 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 330 + + + Asset Class - apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 115 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 - libs/ui/src/lib/activities-table/activities-table.component.html - 457 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 235 - libs/ui/src/lib/benchmark/benchmark.component.html - 155 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 290 - - - Do you really want to delete this account? - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 107 + libs/ui/src/lib/assistant/assistant.html + 205 - - Asset Profile + + Asset Sub Class - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 124 - - - Historical Market Data - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 223 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 85 + 317 - - - Symbol - apps/client/src/app/components/admin-jobs/admin-jobs.html - 46 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 244 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 + + + First Activity apps/client/src/app/components/admin-market-data/admin-market-data.html - 75 + 148 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 153 + 196 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 39 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 212 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 - - Data Source + + Activities Count - apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 157 + + + Historical Data apps/client/src/app/components/admin-market-data/admin-market-data.html - 106 + 166 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 163 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 44 + + + Sectors Count - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 175 - - Attempts + + Countries Count - apps/client/src/app/components/admin-jobs/admin-jobs.html - 83 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 184 - - Created + + Gather Recent Historical Market Data - apps/client/src/app/components/admin-jobs/admin-jobs.html - 92 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - Finished + + Gather All Historical Market Data - apps/client/src/app/components/admin-jobs/admin-jobs.html - 101 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - Status + + Gather Profile Data - apps/client/src/app/components/admin-jobs/admin-jobs.html - 110 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 235 - - - Delete Jobs - apps/client/src/app/components/admin-jobs/admin-jobs.html - 151 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 44 - - View Data + + Oops! Could not parse historical data. - apps/client/src/app/components/admin-jobs/admin-jobs.html - 166 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 - - View Stacktrace + + Refresh - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 17 - - Delete Job + + Gather Historical Market Data - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - Details for + + Import - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 2 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - - - Date - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 71 + + + Sector - libs/ui/src/lib/activities-table/activities-table.component.html - 170 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 240 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 6 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 261 - - Market Price + + Country - apps/client/src/app/components/admin-market-data/admin-market-data.html - 133 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 251 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + apps/client/src/app/components/admin-users/admin-users.html + 77 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 26 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 271 - - Cancel + + Sectors apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 146 + 257 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 544 + 484 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 56 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 277 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + apps/client/src/app/pages/public/public-page.html + 106 + + + Countries - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 267 - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 495 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 289 + + + Benchmark - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Symbol Mapping - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 65 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 + + + Scraper Configuration - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 377 + + + Note - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 48 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 520 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 78 - - - Save - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 551 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 275 + + + Add Asset Profile apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 63 - - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + 7 + + + Search - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 32 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 22 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + Name, symbol or ISIN - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 135 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 29 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 10 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + 124 + + + Do you really want to delete this coupon? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 142 - - Currencies + + Do you really want to delete this system message? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 86 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 - - ETFs without Countries + + Do you really want to flush the cache? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 179 - - ETFs without Sectors + + Please set your system message: - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 199 - - Do you really want to delete this asset profile? + + Version - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - Filter by... + + User Count - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 330 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 - - Asset Class + + Activity Count - apps/client/src/app/components/admin-market-data/admin-market-data.html - 115 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 + + + per User - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 214 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + Add Currency - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 304 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 22 + + + User Signup - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Read-only Mode - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + apps/client/src/app/components/admin-overview/admin-overview.html + 48 + + + System Message - libs/ui/src/lib/assistant/assistant.html - 168 + apps/client/src/app/components/admin-overview/admin-overview.html + 72 - - Asset Sub Class + + Set Message - apps/client/src/app/components/admin-market-data/admin-market-data.html - 124 + apps/client/src/app/components/admin-overview/admin-overview.html + 94 + + + Coupons - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 223 + apps/client/src/app/components/admin-overview/admin-overview.html + 102 + + + Add - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 317 + apps/client/src/app/components/admin-overview/admin-overview.html + 162 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 - - First Activity - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 148 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 - - - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 - - - - Activities Count - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 157 - - - - Historical Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 166 - - - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 - - - - Sectors Count - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 - - - - Countries Count - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 184 - - - - Gather Recent Historical Market Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 - - - - Gather All Historical Market Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 - - - - Gather Profile Data - - apps/client/src/app/components/admin-market-data/admin-market-data.html - 235 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 44 - - - - Oops! Could not parse historical data. - - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 - - - - Refresh - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 17 - - - - Gather Historical Market Data - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 - - - - Import - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 153 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 - - - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 - - - - Sector - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 240 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 - - - - Country - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 251 - - - apps/client/src/app/components/admin-users/admin-users.html - 77 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 - - - - Sectors - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 257 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 484 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 106 - - - - Countries - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 495 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 - - - - Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 - - - - Symbol Mapping - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 352 - - - - Scraper Configuration - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 377 - - - - Note - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 520 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 - - - - Add Asset Profile - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 - - - - Search - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Name, symbol or ISIN - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 29 - - - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 10 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 - - - - Do you really want to delete this coupon? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 - - - - Do you really want to delete this system message? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 - - - - Do you really want to flush the cache? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 - - - - Please set your system message: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 - - - - Version + + Flush Cache apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - User Count - - apps/client/src/app/components/admin-overview/admin-overview.html - 13 - - - - Activity Count - - apps/client/src/app/components/admin-overview/admin-overview.html - 19 - - - - per User - - apps/client/src/app/components/admin-overview/admin-overview.html - 28 - - - - Add Currency - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 22 - - - - User Signup - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - - - Read-only Mode - - apps/client/src/app/components/admin-overview/admin-overview.html - 48 - - - - System Message - - apps/client/src/app/components/admin-overview/admin-overview.html - 72 - - - - Set Message - - apps/client/src/app/components/admin-overview/admin-overview.html - 94 - - - - Coupons - - apps/client/src/app/components/admin-overview/admin-overview.html - 102 - - - - Add - - apps/client/src/app/components/admin-overview/admin-overview.html - 162 - - - libs/ui/src/lib/account-balances/account-balances.component.html - 93 - - - - Housekeeping - - apps/client/src/app/components/admin-overview/admin-overview.html - 170 - - - - Flush Cache - - apps/client/src/app/components/admin-overview/admin-overview.html - 174 + 186 - + Add Platform apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 + 8 @@ -1882,7 +1582,7 @@ apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 + 38 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1893,7 +1593,7 @@ Accounts apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 + 52 apps/client/src/app/components/admin-users/admin-users.html @@ -1901,15 +1601,15 @@ apps/client/src/app/components/header/header.component.html - 54 + 58 apps/client/src/app/components/header/header.component.html - 259 + 268 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 + 368 apps/client/src/app/pages/accounts/accounts-page.html @@ -1941,14 +1641,14 @@ Platforms apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 Tags apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -1959,11 +1659,11 @@ 16 - + Add Tag apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2065,22 +1765,22 @@ Portfolio apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 Benchmark apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 @@ -2094,65 +1794,69 @@ Overview apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 Portfolio apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 Admin Control apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 Me apps/client/src/app/components/header/header.component.html - 207 + 213 User apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 My Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 About Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2163,7 +1867,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2174,25 +1878,33 @@ Get started apps/client/src/app/components/header/header.component.html - 418 + 432 Sign in - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 Oops! Incorrect Security Token. apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2212,6 +1924,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2223,6 +1939,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2234,6 +1954,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -2295,14 +2019,14 @@ Setup accounts apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 Add activity apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2336,6 +2060,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -2352,8 +2084,8 @@ or - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2377,7 +2109,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2426,7 +2158,7 @@ Investment apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2444,7 +2176,7 @@ Fees apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2562,7 +2294,7 @@ Dividend apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2574,7 +2306,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 @@ -2595,32 +2327,32 @@ Average Unit Price apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 Minimum Price apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 Maximum Price apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 Quantity apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2631,7 +2363,7 @@ Report Data Glitch apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -2656,11 +2388,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -2675,11 +2407,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -2690,11 +2422,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -2705,11 +2437,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -2720,7 +2452,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -2731,11 +2463,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -2760,7 +2492,7 @@ Upgrade Plan apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -2772,7 +2504,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -2783,7 +2515,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -2794,7 +2526,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -2805,7 +2537,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -2816,7 +2548,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -2827,7 +2559,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -2848,35 +2580,35 @@ Granted Access apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 Please enter your coupon code. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 Could not redeem coupon code apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 Coupon code has been redeemed apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 Reload apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -2887,7 +2619,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -3067,18 +2799,18 @@ This feature is currently unavailable. apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 Please try again later. apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3089,7 +2821,7 @@ Oops! Something went wrong. apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3100,11 +2832,11 @@ Okay apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3114,49 +2846,33 @@ About - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 Changelog - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 Privacy Policy - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -3183,8 +2899,8 @@ Accounts - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -3239,79 +2955,59 @@ Admin Control - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Market Data - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Settings - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 Users - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 Overview apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Blog - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -3330,14 +3026,14 @@ Frequently Asked Questions (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Frequently Asked Questions (FAQ) @@ -3357,8 +3053,8 @@ Features - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -3473,54 +3169,42 @@ Holdings - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 Summary - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 Markets - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -3541,7 +3225,7 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 14 + 97 @@ -3566,7 +3250,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -3577,7 +3261,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -3893,12 +3577,8 @@ Activities - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 128 @@ -3973,7 +3653,7 @@ libs/ui/src/lib/assistant/assistant.html - 109 + 144 @@ -3987,7 +3667,7 @@ Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + 214 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3998,7 +3678,7 @@ Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + 262 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4062,7 +3742,7 @@ libs/ui/src/lib/assistant/assistant.html - 129 + 166 @@ -4118,8 +3798,8 @@ 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + libs/common/src/lib/routes/routes.ts + 133 @@ -4241,7 +3921,7 @@ libs/ui/src/lib/benchmark/benchmark.component.html - 188 + 202 libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -4272,12 +3952,8 @@ Analysis - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 - - - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 138 @@ -4410,2827 +4086,3151 @@ 79 - apps/client/src/app/components/home-holdings/home-holdings.html - 4 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 + + + apps/client/src/app/pages/public/public-page.html + 70 + + + + Pricing + + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 + + + libs/common/src/lib/routes/routes.ts + 271 + + + + Pricing Plans + + apps/client/src/app/pages/pricing/pricing-page.html + 4 + + + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + + apps/client/src/app/pages/pricing/pricing-page.html + 6 + + + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + + apps/client/src/app/pages/pricing/pricing-page.html + 12 + + + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + + apps/client/src/app/pages/pricing/pricing-page.html + 24 + + + + Unlimited Transactions + + apps/client/src/app/pages/pricing/pricing-page.html + 31 + + + apps/client/src/app/pages/pricing/pricing-page.html + 120 + + + apps/client/src/app/pages/pricing/pricing-page.html + 192 + + + + Unlimited Accounts + + apps/client/src/app/pages/pricing/pricing-page.html + 35 + + + apps/client/src/app/pages/pricing/pricing-page.html + 124 + + + apps/client/src/app/pages/pricing/pricing-page.html + 196 + + + + Portfolio Performance + + apps/client/src/app/pages/pricing/pricing-page.html + 39 + + + apps/client/src/app/pages/pricing/pricing-page.html + 128 + + + apps/client/src/app/pages/pricing/pricing-page.html + 200 + + + + Data Import and Export + + apps/client/src/app/pages/pricing/pricing-page.html + 59 + + + apps/client/src/app/pages/pricing/pricing-page.html + 132 + + + apps/client/src/app/pages/pricing/pricing-page.html + 220 + + + + Community Support + + apps/client/src/app/pages/pricing/pricing-page.html + 76 + + + + Self-hosted, update manually. + + apps/client/src/app/pages/pricing/pricing-page.html + 80 + + + + Free + + apps/client/src/app/pages/pricing/pricing-page.html + 81 + + + apps/client/src/app/pages/pricing/pricing-page.html + 144 + + + + For new investors who are just getting started with trading. + + apps/client/src/app/pages/pricing/pricing-page.html + 114 + + + + Fully managed Ghostfolio cloud offering. + + apps/client/src/app/pages/pricing/pricing-page.html + 143 + + + apps/client/src/app/pages/pricing/pricing-page.html + 269 + + + + For ambitious investors who need the full picture of their financial assets. + + apps/client/src/app/pages/pricing/pricing-page.html + 185 + + + + Email and Chat Support + + apps/client/src/app/pages/pricing/pricing-page.html + 265 + + + + Renew Plan + + apps/client/src/app/components/header/header.component.html + 191 + + + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 + + + apps/client/src/app/pages/pricing/pricing-page.html + 296 + + + + One-time payment, no auto-renewal. + + apps/client/src/app/pages/pricing/pricing-page.html + 302 + + + + Get Started + + apps/client/src/app/pages/landing/landing-page.html + 446 + + + + It’s free. + + apps/client/src/app/pages/pricing/pricing-page.html + 352 + + + + Hello, has shared a Portfolio with you! + + apps/client/src/app/pages/public/public-page.html + 4 + + + + Currencies + + apps/client/src/app/pages/public/public-page.html + 88 + + + + Continents + + apps/client/src/app/pages/public/public-page.html + 124 + + + + Ghostfolio empowers you to keep track of your wealth. + + apps/client/src/app/pages/public/public-page.html + 215 + + + + Registration + + libs/common/src/lib/routes/routes.ts + 281 + + + + Continue with Internet Identity + + apps/client/src/app/pages/register/register-page.html + 42 + + + + Continue with Google + + apps/client/src/app/pages/register/register-page.html + 53 + + + + Copy to clipboard + + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 88 + + + + Personal Finance Tools + + libs/common/src/lib/routes/routes.ts + 329 + + + open-source-alternative-to + kebab-case - apps/client/src/app/pages/public/public-page.html - 70 + libs/common/src/lib/routes/routes.ts + 320 - libs/ui/src/lib/assistant/assistant.html - 44 + libs/common/src/lib/routes/routes.ts + 324 - - Pricing + + Discover Open Source Alternatives for Personal Finance Tools - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 4 - - Pricing Plans + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - apps/client/src/app/pages/pricing/pricing-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. - apps/client/src/app/pages/pricing/pricing-page.html - 6 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + + Open Source Alternative to - apps/client/src/app/pages/pricing/pricing-page.html - 26 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + + The Open Source Alternative to - apps/client/src/app/pages/pricing/pricing-page.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 - - Unlimited Transactions + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - apps/client/src/app/pages/pricing/pricing-page.html - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - apps/client/src/app/pages/pricing/pricing-page.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - apps/client/src/app/pages/pricing/pricing-page.html - 206 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 - - Unlimited Accounts + + Ghostfolio vs comparison table - apps/client/src/app/pages/pricing/pricing-page.html - 49 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + Founded - apps/client/src/app/pages/pricing/pricing-page.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 + + + Origin - apps/client/src/app/pages/pricing/pricing-page.html - 210 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 - - Portfolio Performance + + Region - apps/client/src/app/pages/pricing/pricing-page.html - 53 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 87 + + + Available in - apps/client/src/app/pages/pricing/pricing-page.html - 142 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 108 + + + ✅ Yes - apps/client/src/app/pages/pricing/pricing-page.html - 214 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 - - - Data Import and Export - apps/client/src/app/pages/pricing/pricing-page.html - 73 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/pricing/pricing-page.html - 146 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 179 - apps/client/src/app/pages/pricing/pricing-page.html - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 196 - - - Community Support - apps/client/src/app/pages/pricing/pricing-page.html - 90 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 218 - - - Self-hosted, update manually. - apps/client/src/app/pages/pricing/pricing-page.html - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 235 - - - Free - apps/client/src/app/pages/pricing/pricing-page.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 257 - apps/client/src/app/pages/pricing/pricing-page.html - 158 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 274 - - For new investors who are just getting started with trading. + + ❌ No - apps/client/src/app/pages/pricing/pricing-page.html - 128 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 147 - - - Fully managed Ghostfolio cloud offering. - apps/client/src/app/pages/pricing/pricing-page.html - 157 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 - apps/client/src/app/pages/pricing/pricing-page.html - 283 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 186 - - - For ambitious investors who need the full picture of their financial assets. - apps/client/src/app/pages/pricing/pricing-page.html - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 203 - - - Email and Chat Support - apps/client/src/app/pages/pricing/pricing-page.html - 279 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 225 - - - Renew Plan - apps/client/src/app/components/header/header.component.html - 185 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 242 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 264 - apps/client/src/app/pages/pricing/pricing-page.html - 310 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 281 - - One-time payment, no auto-renewal. + + Self-Hosting - apps/client/src/app/pages/pricing/pricing-page.html - 316 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 170 - - Get Started + + Use anonymously - apps/client/src/app/pages/landing/landing-page.html - 446 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 - - It’s free. + + Free Plan - apps/client/src/app/pages/pricing/pricing-page.html - 345 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 - - Hello, has shared a Portfolio with you! + + Starting from - apps/client/src/app/pages/public/public-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - - - Currencies - apps/client/src/app/pages/public/public-page.html - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 - - Continents + + year - apps/client/src/app/pages/public/public-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 - - Ghostfolio empowers you to keep track of your wealth. + + Notes - apps/client/src/app/pages/public/public-page.html - 215 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 302 - - Registration + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 - - Continue with Internet Identity + + Ready to take your investments to the next level? - apps/client/src/app/pages/register/register-page.html - 42 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 - - Continue with Google + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - apps/client/src/app/pages/register/register-page.html - 53 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 328 - - Copy to clipboard + + Get Started - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 - + Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 351 - - open-source-alternative-to + + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + libs/ui/src/lib/i18n.ts + 93 - - Open Source Alternative to + + Global - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - - - Discover Open Source Alternatives for Personal Finance Tools - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 + libs/ui/src/lib/i18n.ts + 16 - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + + Resources - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + libs/common/src/lib/routes/routes.ts + 332 - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. + + Guides - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 16 + apps/client/src/app/pages/resources/guides/resources-guides.component.html + 4 - - Open Source Alternative to + + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + apps/client/src/app/pages/resources/glossary/resources-glossary.component.html + 4 - - The Open Source Alternative to + + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + libs/common/src/lib/routes/routes.ts + 31 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + libs/common/src/lib/routes/routes.ts + 26 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 34 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + Oops, authentication has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 - - Ghostfolio vs comparison table + + Try again - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 - - Founded + + Go back to Home Page - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 77 + apps/client/src/app/pages/webauthn/webauthn-page.html + 33 - - Origin + + Do you really want to delete this account balance? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 82 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 - - Region + + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 87 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - - - Available in - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 108 + libs/ui/src/lib/activities-table/activities-table.component.html + 371 - - ✅ Yes + + Import Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 140 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 157 + libs/ui/src/lib/activities-table/activities-table.component.html + 383 + + + Export Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 179 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 196 + libs/ui/src/lib/activities-table/activities-table.component.html + 396 + + + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 218 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 235 + libs/ui/src/lib/activities-table/activities-table.component.html + 409 + + + Draft - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 257 + libs/ui/src/lib/activities-table/activities-table.component.html + 145 + + + Clone - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 274 + libs/ui/src/lib/activities-table/activities-table.component.html + 436 - - ❌ No + + Export Draft as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 147 + libs/ui/src/lib/activities-table/activities-table.component.html + 446 + + + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 164 + libs/ui/src/lib/activities-table/activities-table.component.ts + 229 + + + Asset Profiles - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 186 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 + + + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 203 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 225 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 242 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 + + + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 264 + libs/ui/src/lib/benchmark/benchmark.component.html + 110 + + + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 281 + libs/ui/src/lib/benchmark/benchmark.component.html + 112 - - Self-Hosting + + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 170 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 - - Use anonymously + + Savings Rate per Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 209 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 - - Free Plan + + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 248 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 - - Starting from + + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 - - year + + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 370 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + libs/ui/src/lib/i18n.ts + 38 - - Notes + + Savings - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 302 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 380 - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + + Allocation - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - - - Ready to take your investments to the next level? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 40 - - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 328 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 116 - - Get Started + + Show all - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 - - Personal Finance Tools + + Account - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 351 + libs/ui/src/lib/i18n.ts + 4 - - Switzerland + + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class libs/ui/src/lib/i18n.ts - 93 + 6 - - Global + + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + libs/ui/src/lib/i18n.ts + 7 + + + Core libs/ui/src/lib/i18n.ts - 16 + 10 - - Resources + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/ui/src/lib/i18n.ts + 12 - - Guides + + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/guides/resources-guides.component.html - 4 + libs/ui/src/lib/i18n.ts + 13 - - Glossary + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - apps/client/src/app/pages/resources/glossary/resources-glossary.component.html - 4 + libs/ui/src/lib/i18n.ts + 14 - - Membership + + Emergency Fund - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + libs/ui/src/lib/i18n.ts + 15 + + + Grant - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 17 - - Access + + Higher Risk - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + libs/ui/src/lib/i18n.ts + 18 + + + This activity already exists. - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 19 - - My Ghostfolio + + Japan - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/i18n.ts + 86 - - Oops, authentication has failed. + + Lower Risk - apps/client/src/app/pages/webauthn/webauthn-page.html - 19 + libs/ui/src/lib/i18n.ts + 20 - - Try again + + Month - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/i18n.ts + 21 - - Go back to Home Page + + Months - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 22 - - Do you really want to delete this account balance? + + Other - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + libs/ui/src/lib/i18n.ts + 23 - - - Import Activities - libs/ui/src/lib/activities-table/activities-table.component.html - 9 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 400 + + + Preset - libs/ui/src/lib/activities-table/activities-table.component.html - 371 + libs/ui/src/lib/i18n.ts + 25 - - Import Dividends + + Retirement Provision - libs/ui/src/lib/activities-table/activities-table.component.html - 29 + libs/ui/src/lib/i18n.ts + 26 + + + Satellite - libs/ui/src/lib/activities-table/activities-table.component.html - 383 + libs/ui/src/lib/i18n.ts + 27 - - Export Activities + + Symbol - libs/ui/src/lib/activities-table/activities-table.component.html - 41 + libs/ui/src/lib/i18n.ts + 28 + + + Tag - libs/ui/src/lib/activities-table/activities-table.component.html - 396 + libs/ui/src/lib/i18n.ts + 29 - - Export Drafts as ICS + + Year - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + libs/ui/src/lib/i18n.ts + 30 + + + Years - libs/ui/src/lib/activities-table/activities-table.component.html - 409 + libs/ui/src/lib/i18n.ts + 31 - - Draft + + Buy - libs/ui/src/lib/activities-table/activities-table.component.html - 145 + libs/ui/src/lib/i18n.ts + 35 - - Clone + + Fee - libs/ui/src/lib/activities-table/activities-table.component.html - 436 + libs/ui/src/lib/i18n.ts + 37 - - Export Draft as ICS + + Valuable - libs/ui/src/lib/activities-table/activities-table.component.html - 446 + libs/ui/src/lib/i18n.ts + 39 - - Do you really want to delete this activity? + + Liability - libs/ui/src/lib/activities-table/activities-table.component.ts - 229 + libs/ui/src/lib/i18n.ts + 40 - - Find holding... + + Sell - libs/ui/src/lib/assistant/assistant.component.ts - 143 + libs/ui/src/lib/i18n.ts + 41 - - No entries... + + Cash - libs/ui/src/lib/assistant/assistant.html - 62 + libs/ui/src/lib/i18n.ts + 44 + + + Commodity - libs/ui/src/lib/assistant/assistant.html - 85 + libs/ui/src/lib/i18n.ts + 45 - - Asset Profiles + + Equity - libs/ui/src/lib/assistant/assistant.html - 67 + libs/ui/src/lib/i18n.ts + 46 - - 50-Day Trend + + Fixed Income - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + libs/ui/src/lib/i18n.ts + 47 - - 200-Day Trend + + Real Estate - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + libs/ui/src/lib/i18n.ts + 49 - - Last All Time High + + Bond - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + libs/ui/src/lib/i18n.ts + 52 - - Change from All Time High + + Cryptocurrency - libs/ui/src/lib/benchmark/benchmark.component.html - 96 + libs/ui/src/lib/i18n.ts + 53 - - from ATH + + ETF - libs/ui/src/lib/benchmark/benchmark.component.html - 98 + libs/ui/src/lib/i18n.ts + 54 - - Market data provided by + + Mutual Fund - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 55 - - Savings Rate per Month + + Precious Metal - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 56 - - Annual Interest Rate + + Private Equity - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 57 - - Retirement Date + + Stock - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 58 - - Projected Total Amount + + Africa - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 57 + libs/ui/src/lib/i18n.ts + 65 - - Interest + + Asia - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 370 + libs/ui/src/lib/i18n.ts + 66 + + + Europe libs/ui/src/lib/i18n.ts - 38 + 67 - - Savings + + North America - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 380 + libs/ui/src/lib/i18n.ts + 68 - - Allocation + + Oceania - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/i18n.ts + 69 + + + South America - libs/ui/src/lib/top-holdings/top-holdings.component.html - 40 + libs/ui/src/lib/i18n.ts + 70 + + + Extreme Fear - libs/ui/src/lib/top-holdings/top-holdings.component.html - 116 + libs/ui/src/lib/i18n.ts + 100 - - Show all + + Extreme Greed - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/i18n.ts + 101 - - Account + + Neutral libs/ui/src/lib/i18n.ts - 4 + 104 - - Asia-Pacific + + Membership - libs/ui/src/lib/i18n.ts - 5 + libs/ui/src/lib/membership-card/membership-card.component.html + 37 - - Asset Class + + Valid until - libs/ui/src/lib/i18n.ts - 6 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 74 + + + libs/ui/src/lib/membership-card/membership-card.component.html + 42 - - Asset Sub Class + + Time to add your first activity. - libs/ui/src/lib/i18n.ts - 7 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Core + + No data available - libs/ui/src/lib/i18n.ts - 10 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 402 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 415 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily + + If a translation is missing, kindly support us in extending it here. - libs/ui/src/lib/i18n.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 - - Switch to Ghostfolio Premium easily + + Date Range - libs/ui/src/lib/i18n.ts - 13 + libs/ui/src/lib/assistant/assistant.html + 130 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily + + The current market price is - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 - - Emergency Fund + + Test - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 - - Grant + + Oops! Could not grant access. - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - Higher Risk + + Restricted view - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - This activity already exists. - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Japan + + Permission - libs/ui/src/lib/i18n.ts - 86 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - Lower Risk - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - Month + + Private - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Months + + Job Queue - libs/ui/src/lib/i18n.ts - 22 + libs/common/src/lib/routes/routes.ts + 46 - - Other + + Market data is delayed for - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 + + + Absolute Currency Performance - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Preset + + Absolute Net Performance - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - Retirement Provision + + Absolute Asset Performance - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Satellite + + Investment - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Symbol - libs/ui/src/lib/i18n.ts - 28 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 - - - Tag - libs/ui/src/lib/i18n.ts - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Year + + Asset Performance - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Years + + Net Performance - libs/ui/src/lib/i18n.ts - 31 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - Buy + + Currency Performance - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Fee + + Year to date - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Valuable + + Week to date - libs/ui/src/lib/i18n.ts - 39 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Liability + + Month to date - libs/ui/src/lib/i18n.ts - 40 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Sell + + MTD - libs/ui/src/lib/i18n.ts - 41 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Cash + + WTD - libs/ui/src/lib/i18n.ts - 44 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Commodity + + Oops! A data provider is experiencing the hiccups. - libs/ui/src/lib/i18n.ts - 45 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Equity + + View - libs/ui/src/lib/i18n.ts - 46 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Fixed Income - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Real Estate + + Reset Filters - libs/ui/src/lib/i18n.ts - 49 + libs/ui/src/lib/assistant/assistant.html + 224 - - Bond + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Cryptocurrency + + year - libs/ui/src/lib/i18n.ts - 53 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - ETF + + years - libs/ui/src/lib/i18n.ts - 54 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Mutual Fund + + Apply Filters - libs/ui/src/lib/i18n.ts - 55 + libs/ui/src/lib/assistant/assistant.html + 234 - - Precious Metal + + self-hosting + kebab-case - libs/ui/src/lib/i18n.ts - 56 + libs/common/src/lib/routes/routes.ts + 243 - - - Private Equity - libs/ui/src/lib/i18n.ts - 57 + libs/common/src/lib/routes/routes.ts + 246 - - Stock + + Self-Hosting - libs/ui/src/lib/i18n.ts - 58 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - Africa - libs/ui/src/lib/i18n.ts - 65 + libs/common/src/lib/routes/routes.ts + 248 - - Asia + + Data Gathering - libs/ui/src/lib/i18n.ts - 66 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Europe - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - North America + + General - libs/ui/src/lib/i18n.ts - 68 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Oceania + + Cloud - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - South America - libs/ui/src/lib/i18n.ts - 70 + libs/common/src/lib/routes/routes.ts + 240 - - Extreme Fear + + Oops! It looks like you’re making too many requests. Please slow down a bit. - libs/ui/src/lib/i18n.ts - 100 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - Extreme Greed + + My Account - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Neutral + + Closed - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Membership + + Active - libs/ui/src/lib/membership-card/membership-card.component.html + apps/client/src/app/components/home-holdings/home-holdings.component.ts 37 - - Valid until - - apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 - + + Activity - libs/ui/src/lib/membership-card/membership-card.component.html - 42 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 - - Time to add your first activity. + + Dividend Yield - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - No data available + + Execute Job - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 + + + This action is not allowed. - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - If a translation is missing, kindly support us in extending it here. + + Priority - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 - - Date Range + + Liquidity - libs/ui/src/lib/assistant/assistant.html - 95 + libs/ui/src/lib/i18n.ts + 48 - - The current market price is + + Buy and sell - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + libs/ui/src/lib/i18n.ts + 8 - - Test + + {VAR_PLURAL, plural, =1 {activity} other {activities}} - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - Oops! Could not grant access. + + Delete Activities - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Restricted view + + Internationalization - apps/client/src/app/components/access-table/access-table.component.html - 26 + libs/common/src/lib/routes/routes.ts + 119 + + + Close Account - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 - - Permission + + Do you really want to close your Ghostfolio account? - apps/client/src/app/components/access-table/access-table.component.html - 18 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + Danger Zone - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Private + + Approximation based on the top holdings of each ETF - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Job Queue + + By ETF Holding - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 + + + Join now or check out the example account - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/pages/landing/landing-page.html + 434 - - Market data is delayed for + + Oops! There was an error setting up biometric authentication. - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Absolute Currency Performance + + Show more - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Absolute Net Performance + + Do you really want to delete these profiles? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Absolute Asset Performance + + Delete Profiles - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Investment + + Oops! Could not delete profiles. - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 56 + + + Benchmarks - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 + + + Chart - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Asset Performance + + Table - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 - - Net Performance + + Would you like to refine your personal investment strategy? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html + apps/client/src/app/pages/public/public-page.html 211 - - Currency Performance + + Wealth - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - Year to date + + Community - libs/ui/src/lib/assistant/assistant.component.ts - 230 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - Week to date + + Thailand - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 94 - - Month to date + + India - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 84 - - MTD + + Austria - libs/ui/src/lib/assistant/assistant.component.ts - 226 + libs/ui/src/lib/i18n.ts + 75 - - WTD + + Poland - libs/ui/src/lib/assistant/assistant.component.ts - 222 + libs/ui/src/lib/i18n.ts + 89 - - Oops! A data provider is experiencing the hiccups. + + Italy - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + libs/ui/src/lib/i18n.ts + 85 - - View - - apps/client/src/app/components/access-table/access-table.component.html - 23 - + + User Experience - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - Reset Filters + + App - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + + Tool - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - year + + Investor - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - years + + Wealth Management - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - Apply Filters + + Canada - libs/ui/src/lib/assistant/assistant.html - 197 + libs/ui/src/lib/i18n.ts + 79 - - self-hosting + + New Zealand - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/ui/src/lib/i18n.ts + 88 - - FAQ - - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 - + + Netherlands - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 87 - - Self-Hosting + + Alternative - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 + + + Family Office - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - Data Gathering + + Personal Finance - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 + + + Software - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - General + + Romania - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 90 - - Cloud + + Germany - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + libs/ui/src/lib/i18n.ts + 83 + + + United States - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 97 - - Oops! It looks like you’re making too many requests. Please slow down a bit. + + Budgeting - apps/client/src/app/core/http-response.interceptor.ts - 103 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - My Account + + Belgium - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 76 - - Closed + + Open Source - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - Active + + Czech Republic - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 80 - - Activity + + Australia - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 74 - - Dividend Yield + + South Africa - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 92 - - Execute Job + + Bulgaria - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 78 - - This action is not allowed. + + Privacy - apps/client/src/app/core/http-response.interceptor.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - Priority + + Finland - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 81 - - Liquidity + + France libs/ui/src/lib/i18n.ts - 48 + 82 - - Buy and sell + + Error - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} + + Cancel - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + libs/ui/src/lib/i18n.ts + 9 - - Delete Activities + + Yes - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + libs/ui/src/lib/i18n.ts + 32 - - Internationalization + + Inactive - apps/client/src/app/app-routing.module.ts - 88 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Close Account + + Close - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + libs/ui/src/lib/i18n.ts + 11 - - Do you really want to close your Ghostfolio account? + + Activate - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + apps/client/src/app/components/rule/rule.component.html + 74 - - Danger Zone + + Deactivate - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + apps/client/src/app/components/rule/rule.component.html + 72 - - Approximation based on the top holdings of each ETF + + Threshold Max - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - By ETF Holding + + Customize - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/rule/rule.component.html + 67 - - Join now or check out the example account + + Portfolio Snapshot - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - Oops! There was an error setting up biometric authentication. + + Threshold Min - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Show more + + Performance with currency effect Performance - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Do you really want to delete these profiles? + + Copy link to clipboard - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Delete Profiles + + Change with currency effect Change - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Oops! Could not delete profiles. + + Close - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Benchmarks + + No auto-renewal. - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Chart + + From the beginning - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/pages/public/public-page.html + 60 - - Table + + This year - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 42 - - Would you like to refine your personal investment strategy? + + Today apps/client/src/app/pages/public/public-page.html - 211 + 24 - - Wealth + + offers a free plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Community + + offers a free plan - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Thailand + + is not Open Source Software - libs/ui/src/lib/i18n.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - India + + does not offer a free plan - libs/ui/src/lib/i18n.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Austria + + can be self-hosted - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Poland + + cannot be self-hosted - libs/ui/src/lib/i18n.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Italy + + does not offer a free plan - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - User Experience + + can be self-hosted - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - App + + can be used anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Tool + + cannot be used anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Investor + + is Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Wealth Management + + is not Open Source Software - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Canada + + cannot be used anonymously - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - New Zealand + + cannot be self-hosted - libs/ui/src/lib/i18n.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Netherlands + + is Open Source Software - libs/ui/src/lib/i18n.ts - 87 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - Alternative + + can be used anonymously - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - Family Office + + This page has been archived. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Personal Finance + + Oops! Invalid currency. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - Software + + Oops! Could not find any assets. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Romania + + Ukraine libs/ui/src/lib/i18n.ts - 90 + 95 - - Germany + + Set API key - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - United States + + Get access to 80’000+ tickers from over 50 exchanges libs/ui/src/lib/i18n.ts - 97 + 24 - - Budgeting + + Data Providers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Belgium + + Join now - libs/ui/src/lib/i18n.ts - 76 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Open Source + + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - Czech Republic - libs/ui/src/lib/i18n.ts - 80 + libs/common/src/lib/routes/routes.ts + 293 - - Australia + + glossary + kebab-case - libs/ui/src/lib/i18n.ts - 74 + libs/common/src/lib/routes/routes.ts + 288 - - - South Africa - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 291 - - Bulgaria + + Guides - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Privacy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + libs/common/src/lib/routes/routes.ts + 301 - - Finland + + guides + kebab-case - libs/ui/src/lib/i18n.ts - 81 + libs/common/src/lib/routes/routes.ts + 296 + + + libs/common/src/lib/routes/routes.ts + 299 - - France + + Threshold range - libs/ui/src/lib/i18n.ts - 82 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - Error + + Economic Market Cluster Risks - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Cancel + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Yes + + Please enter your Ghostfolio API key: - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Inactive + + of - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Close + + Do you really want to delete the API key? - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Activate + + Remove API key - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Deactivate + + daily requests - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Threshold Max + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - Customize + + API Key - apps/client/src/app/components/rule/rule.component.html - 67 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Portfolio Snapshot + + Tag - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + libs/ui/src/lib/assistant/assistant.html + 194 - - Threshold Min + + API Requests Today - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Performance with currency effect Performance + + Could not generate an API key - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Copy link to clipboard + + Do you really want to generate a new API key? - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Change with currency effect Change + + Ghostfolio Premium Data Provider API Key - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Close + + Set this API key in your self-hosted environment: - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - No auto-renewal. + + rules align with your portfolio. - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - From the beginning + + out of - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - This year + + Save - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - Today + + Asset Class Cluster Risks - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - offers a free plan + + Received Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - offers a free plan + + Me - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - is not Open Source Software + + Please enter your Ghostfolio API key. - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - does not offer a free plan + + AI prompt has been copied to the clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - can be self-hosted + + Link has been copied to the clipboard - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - cannot be self-hosted + + Regional Market Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - does not offer a free plan + + Mode - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - can be self-hosted + + Default Market Price - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - can be used anonymously + + Selector - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - cannot be used anonymously + + Instant - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - is Open Source Software + + Lazy - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - is not Open Source Software + + HTTP Request Headers - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - cannot be used anonymously + + real-time - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be self-hosted + + end of day - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - is Open Source Software + + Open Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - can be used anonymously + + Create - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - This page has been archived. + + Market Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - Oops! Invalid currency. + + Change - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - Oops! Could not find any assets. + + Performance - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Ukraine - libs/ui/src/lib/i18n.ts - 95 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Set API key + + Copy AI prompt to clipboard for analysis - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Get access to 80’000+ tickers from over 50 exchanges + + Singapore libs/ui/src/lib/i18n.ts - 24 + 91 - - Data Providers + + Armenia - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + libs/ui/src/lib/i18n.ts + 73 - - Join now + + British Virgin Islands - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 77 - - Glossary + + Copy portfolio data to clipboard for AI prompt - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 + + + I understand that if I lose my security token, I cannot recover my account - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 28 - - glossary - snake-case + + Please keep your security token safe. If you lose it, you will not be able to recover your account. - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - Guides + + Continue - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Terms and Conditions - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - guides - snake-case + + Do you really want to generate a new security token for this user? - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 + + + Security token - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 28 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - - - Threshold range - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Economic Market Cluster Risks + + Generate Security Token - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + + United Kingdom - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + libs/ui/src/lib/i18n.ts + 96 - - Please enter your Ghostfolio API key: + + Terms of Service - apps/client/src/app/pages/api/api-page.component.ts - 41 + libs/common/src/lib/routes/routes.ts + 217 - - of + + terms-of-service + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + libs/common/src/lib/routes/routes.ts + 212 - - - Do you really want to delete the API key? - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 215 - - I have an API key + + Terms of Service - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - Remove API key + + Terms of Service - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + apps/client/src/app/app.component.html + 112 - - daily requests + + and I agree to the Terms of Service. - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + + () is already in use. - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - API Key + + An error occurred while updating to (). - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Tag + + Apply - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - API Requests Today + + with API access for - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Could not generate an API key + + Data Gathering is off - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - Do you really want to generate a new API key? + + Performance Calculation - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - Ghostfolio Premium Data Provider API Key + + someone - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Set this API key in your self-hosted environment: + + Add asset to watchlist - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - rules align with your portfolio. + + Watchlist - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + libs/common/src/lib/routes/routes.ts + 110 - - out of + + Watchlist - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Save - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/pages/features/features-page.html + 197 - - Asset Class Cluster Risks + + Do you really want to delete this item? - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - Received Access + + Log out - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + apps/client/src/app/components/header/header.component.html + 329 - - Me + + Calculations are based on delayed market data and may not be displayed in real-time. - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Please enter your Ghostfolio API key. - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + apps/client/src/app/components/markets/markets.html + 52 - - AI prompt has been copied to the clipboard + + changelog + kebab-case - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + libs/common/src/lib/routes/routes.ts + 180 - - - Link has been copied to the clipboard - apps/client/src/app/components/access-table/access-table.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 183 - - Early Access + + Sync Demo User Account - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Regional Market Cluster Risks + + Demo user account has been synced. - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Mode + + Name - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Default Market Price + + Emergency Fund: Set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Selector + + No emergency fund has been set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - Instant + + An emergency fund has been set up - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - Lazy + + Fee Ratio - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - HTTP Request Headers + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - real-time + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - end of day + + Find holding or page... - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Open Duck.ai + + Quick Links - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + libs/ui/src/lib/assistant/assistant.html + 43 - - Create + + Asset Profiles - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/assistant/assistant.html + 99 - - Market Data + + Live Demo - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/common/src/lib/routes/routes.ts + 231 - - Change + + Open Source Alternative to - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/common/src/lib/routes/routes.ts + 326 - - Performance + + Single Account - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + apps/client/src/app/pages/i18n/i18n-page.html + 24 + + + Your net worth is managed by a single account - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - Copy AI prompt to clipboard for analysis + + Your net worth is managed by ${accountsLength} accounts - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Singapore + + Holdings - libs/ui/src/lib/i18n.ts - 91 + libs/ui/src/lib/assistant/assistant.html + 69 - - Armenia + + personal-finance-tools + kebab-case - libs/ui/src/lib/i18n.ts - 73 + libs/common/src/lib/routes/routes.ts + 312 - - - British Virgin Islands - libs/ui/src/lib/i18n.ts - 77 + libs/common/src/lib/routes/routes.ts + 315 - - - Copy portfolio data to clipboard for AI prompt - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 323 - - I understand that if I lose my security token, I cannot recover my account + + markets + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 304 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 307 - - Here is your security token. It is only visible once, please store and keep it in a safe place. + + Get Access - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Continue + + new - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms and Conditions + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + apps/client/src/app/components/admin-settings/admin-settings.component.html 15 - - Do you really want to generate a new security token for this user? + + Learn more - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - Security token + + Limited Offer! - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - Generate Security Token + + Get extra - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/pages/pricing/pricing-page.html + 313 - - United Kingdom + + Unavailable - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 - - Terms of Service + + Available - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + new - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - terms-of-service - snake-case + + Investment - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/pages/i18n/i18n-page.html + 15 + + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/pages/i18n/i18n-page.html + 19 + + + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - Terms of Service + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - Terms of Service + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - and I agree to the Terms of Service. + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - () is already in use. + + Fixed Income - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - An error occurred while updating to (). + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Apply + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - with API access for + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off + + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist + + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/home/home-page.component.ts - 53 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist + + start + kebab-case - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/features/features-page.html - 197 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access + + Generate - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Do you really want to delete this item? + + Do you really want to generate a new security token? - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Log out + + Cryptocurrencies - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 55 + + + + Stocks + + apps/client/src/app/components/markets/markets.component.ts + 54 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 12cbd3ed0..a4a44cd55 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2,2021 +2,1721 @@ - + about 关于 - snake-case + kebab-case - apps/client/src/app/app.component.ts - 65 - - - apps/client/src/app/app.component.ts - 67 + libs/common/src/lib/routes/routes.ts + 176 - apps/client/src/app/app.component.ts - 71 + libs/common/src/lib/routes/routes.ts + 177 - apps/client/src/app/app.component.ts - 75 + libs/common/src/lib/routes/routes.ts + 182 - apps/client/src/app/app.component.ts - 79 + libs/common/src/lib/routes/routes.ts + 190 - apps/client/src/app/components/header/header.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 198 - apps/client/src/app/components/header/header.component.ts - 87 + libs/common/src/lib/routes/routes.ts + 206 - apps/client/src/app/core/paths.ts - 2 + libs/common/src/lib/routes/routes.ts + 214 + + + faq + 常见问题 + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 46 + libs/common/src/lib/routes/routes.ts + 234 - apps/client/src/app/pages/about/about-page.component.ts - 51 + libs/common/src/lib/routes/routes.ts + 235 - apps/client/src/app/pages/about/about-page.component.ts - 56 + libs/common/src/lib/routes/routes.ts + 239 - apps/client/src/app/pages/about/about-page.component.ts - 65 + libs/common/src/lib/routes/routes.ts + 245 + + + features + 功能 + kebab-case - apps/client/src/app/pages/about/about-page.component.ts - 72 + libs/common/src/lib/routes/routes.ts + 254 - apps/client/src/app/pages/about/about-page.component.ts - 84 + libs/common/src/lib/routes/routes.ts + 255 + + + license + 许可证 + kebab-case - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.component.ts - 13 + libs/common/src/lib/routes/routes.ts + 188 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 191 + + + markets + 市场 + kebab-case - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 14 + libs/common/src/lib/routes/routes.ts + 259 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 260 + + + pricing + 价钱 + kebab-case - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 269 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.component.ts - 12 + libs/common/src/lib/routes/routes.ts + 270 + + + privacy-policy + 隐私政策 + kebab-case - apps/client/src/app/pages/landing/landing-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 204 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 33 + libs/common/src/lib/routes/routes.ts + 207 + + + register + 注册 + kebab-case - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 19 + libs/common/src/lib/routes/routes.ts + 279 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 22 + libs/common/src/lib/routes/routes.ts + 280 - - faq - 常见问题 - snake-case + + resources + 资源 + kebab-case - apps/client/src/app/app.component.ts - 82 + libs/common/src/lib/routes/routes.ts + 284 - apps/client/src/app/core/paths.ts - 3 + libs/common/src/lib/routes/routes.ts + 285 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + libs/common/src/lib/routes/routes.ts + 290 - apps/client/src/app/pages/faq/faq-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 298 - apps/client/src/app/pages/faq/faq-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 306 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + libs/common/src/lib/routes/routes.ts + 314 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 15 + libs/common/src/lib/routes/routes.ts + 322 - - features - 功能 - snake-case - - apps/client/src/app/app.component.ts - 83 - + + You are using the Live Demo. + 您正在使用现场演示。 - apps/client/src/app/components/header/header.component.ts - 83 + apps/client/src/app/app.component.html + 12 + + + Create Account + 创建账户 - apps/client/src/app/components/header/header.component.ts - 88 + apps/client/src/app/app.component.html + 13 - apps/client/src/app/core/paths.ts - 4 + apps/client/src/app/pages/register/register-page.html + 27 - apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 2 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 14 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 101 + + + Personal Finance + 个人财务 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 12 + apps/client/src/app/app.component.html + 57 + + + Markets + 市场 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 12 + apps/client/src/app/app.component.html + 61 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.component.ts - 12 + apps/client/src/app/components/header/header.component.html + 408 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 17 + apps/client/src/app/components/home-market/home-market.html + 2 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 14 + apps/client/src/app/components/markets/markets.html + 2 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts - 13 + apps/client/src/app/pages/resources/markets/resources-markets.component.html + 2 + + + Resources + 资源 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 14 + apps/client/src/app/app.component.html + 64 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 18 + apps/client/src/app/components/header/header.component.html + 88 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 43 + apps/client/src/app/components/header/header.component.html + 301 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 23 + apps/client/src/app/pages/resources/overview/resources-overview.component.html + 4 - - license - 许可证 - snake-case + + About + 关于 - apps/client/src/app/app.component.ts - 72 + apps/client/src/app/app.component.html + 70 - apps/client/src/app/core/paths.ts - 5 + apps/client/src/app/components/header/header.component.html + 123 - apps/client/src/app/pages/about/about-page.component.ts - 56 + apps/client/src/app/components/header/header.component.html + 374 - - markets - 市场 - snake-case - - apps/client/src/app/app.component.ts - 84 - + + Blog + 博客 - apps/client/src/app/components/header/header.component.ts - 84 + apps/client/src/app/app.component.html + 73 - apps/client/src/app/components/header/header.component.ts - 89 + apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html + 204 - apps/client/src/app/core/paths.ts - 6 + apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html + 184 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 12 + apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html + 184 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.component.ts - 18 + apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html + 184 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 18 + apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html + 209 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 32 + apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html + 196 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 35 + apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html + 181 - - - pricing - 价钱 - snake-case - apps/client/src/app/app.component.ts - 85 + apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html + 141 - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 80 + apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html + 168 - apps/client/src/app/components/header/header.component.ts - 85 + apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html + 178 - apps/client/src/app/components/header/header.component.ts - 90 + apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html + 202 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts - 29 + apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html + 253 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 39 + apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html + 233 - apps/client/src/app/core/http-response.interceptor.ts - 77 + apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html + 243 - apps/client/src/app/core/paths.ts - 7 + apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html + 154 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html + 273 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html + 183 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.component.ts - 12 + apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html + 148 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html + 270 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts - 15 + apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html + 189 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.component.ts - 13 + apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html + 167 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts - 15 - - - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.component.ts - 15 + apps/client/src/app/pages/blog/blog-page.html + 5 + + + Changelog + 变更日志 - apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts - 17 + apps/client/src/app/app.component.html + 77 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 17 + apps/client/src/app/pages/about/changelog/changelog-page.html + 4 + + + Features + 功能 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts - 14 + apps/client/src/app/app.component.html + 79 - libs/ui/src/lib/membership-card/membership-card.component.ts - 30 + apps/client/src/app/components/header/header.component.html + 361 - libs/ui/src/lib/premium-indicator/premium-indicator.component.ts - 21 + apps/client/src/app/pages/features/features-page.html + 5 - - privacy-policy - 隐私政策 - snake-case + + Frequently Asked Questions (FAQ) + 常见问题 (FAQ) - apps/client/src/app/app.component.ts - 76 + apps/client/src/app/app.component.html + 83 - apps/client/src/app/core/paths.ts - 8 + apps/client/src/app/pages/about/overview/about-overview-page.html + 156 + + + License + 许可证 - apps/client/src/app/pages/about/about-page.component.ts - 65 + apps/client/src/app/app.component.html + 89 - - - register - 注册 - snake-case - apps/client/src/app/app.component.ts - 86 + apps/client/src/app/pages/about/license/license-page.html + 4 + + + Pricing + 价钱 - apps/client/src/app/components/header/header.component.ts - 91 + apps/client/src/app/app.component.html + 99 - apps/client/src/app/core/auth.guard.ts - 55 + apps/client/src/app/components/header/header.component.html + 105 - apps/client/src/app/core/paths.ts - 9 + apps/client/src/app/components/header/header.component.html + 313 - apps/client/src/app/pages/faq/saas/saas-page.component.ts - 19 + apps/client/src/app/components/header/header.component.html + 389 - apps/client/src/app/pages/features/features-page.component.ts - 28 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 287 + + + Privacy Policy + 隐私政策 - apps/client/src/app/pages/landing/landing-page.component.ts - 28 + apps/client/src/app/app.component.html + 105 - apps/client/src/app/pages/pricing/pricing-page.component.ts - 44 + apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html + 4 - - resources - 资源 - snake-case + + Community + 社区 - apps/client/src/app/app.component.ts - 87 + apps/client/src/app/app.component.html + 130 - apps/client/src/app/components/header/header.component.ts - 86 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 85 - apps/client/src/app/components/header/header.component.ts - 92 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 - apps/client/src/app/core/paths.ts - 10 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 94 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 98 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 102 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.component.ts - 12 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 106 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 110 - apps/client/src/app/pages/features/features-page.component.ts - 29 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 114 - apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts - 17 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 118 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 22 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 123 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 31 + apps/client/src/app/pages/features/features-page.html + 276 + + + The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. + 交易损失的风险可能很大。不建议将短期内可能需要的资金进行投资。 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 40 + apps/client/src/app/app.component.html + 221 + + + Alias + 别名 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 15 + apps/client/src/app/components/access-table/access-table.component.html + 4 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 25 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 - - You are using the Live Demo. - 您正在使用现场演示。 + + Grantee + 受赠者 - apps/client/src/app/app.component.html - 12 + apps/client/src/app/components/access-table/access-table.component.html + 11 - - Create Account - 创建账户 + + Type + 类型 - apps/client/src/app/app.component.html - 13 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - apps/client/src/app/pages/register/register-page.html - 27 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 2 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 15 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 101 + libs/ui/src/lib/activities-table/activities-table.component.html + 161 - - Personal Finance - 个人财务 + + Details + 细节 - apps/client/src/app/app.component.html - 57 + apps/client/src/app/components/access-table/access-table.component.html + 33 - - Markets - 市场 + + Revoke + 撤销 - apps/client/src/app/app.component.html - 61 + apps/client/src/app/components/access-table/access-table.component.html + 75 + + + Do you really want to revoke this granted access? + 您真的要撤销此授予的访问权限吗? - apps/client/src/app/components/header/header.component.html - 394 + apps/client/src/app/components/access-table/access-table.component.ts + 79 + + + Cash Balance + 现金余额 - apps/client/src/app/components/home-market/home-market.html - 2 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 47 - apps/client/src/app/pages/resources/markets/resources-markets.component.html - 2 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 136 - - - Resources - 资源 - apps/client/src/app/app.component.html - 64 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 34 + + + Equity + 股权 - apps/client/src/app/components/header/header.component.html - 82 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 58 + + + Activities + 活动 - apps/client/src/app/components/header/header.component.html - 287 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 63 - apps/client/src/app/pages/resources/overview/resources-overview.component.html - 4 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 92 - - - About - 关于 - apps/client/src/app/app.component.html - 70 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 119 - apps/client/src/app/components/header/header.component.html - 117 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 205 - apps/client/src/app/components/header/header.component.html - 360 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 45 - - - Blog - 博客 - apps/client/src/app/app.component.html - 73 + apps/client/src/app/components/admin-users/admin-users.html + 135 - apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 204 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 224 - apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html - 184 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 335 - apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 184 + apps/client/src/app/pages/portfolio/activities/activities-page.html + 4 + + + Platform + 平台 - apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html - 184 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 67 - apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html - 209 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 86 - apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 196 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 48 + + + Cash Balances + 现金余额 - apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 181 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 124 + + + Transfer Cash Balance + 转移现金余额 - apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html - 141 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 10 - apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html - 168 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Name + 名称 - apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html - 178 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 43 - apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 202 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 89 - apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 253 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 287 - apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html - 233 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 22 - apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html - 243 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 15 - apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html - 154 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 46 - apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html - 273 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 22 - apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html - 181 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 15 - apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html - 148 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 15 - apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html - 270 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 139 - apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html - 187 + libs/ui/src/lib/activities-table/activities-table.component.html + 138 - apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html - 167 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 28 - apps/client/src/app/pages/blog/blog-page.html - 5 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 16 - - - Changelog - 变更日志 - apps/client/src/app/app.component.html - 77 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 88 + + + Total + 全部的 - apps/client/src/app/pages/about/changelog/changelog-page.html - 4 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 55 - - Features - 功能 + + Currency + 货币 - apps/client/src/app/app.component.html - 79 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 65 - apps/client/src/app/components/header/header.component.html - 347 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 185 - apps/client/src/app/pages/features/features-page.html - 5 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 294 - - - Frequently Asked Questions (FAQ) - 常见问题 (FAQ) - apps/client/src/app/app.component.html - 83 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 46 - apps/client/src/app/pages/about/overview/about-overview-page.html - 154 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 25 - - - License - 许可证 - apps/client/src/app/app.component.html - 89 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 145 - apps/client/src/app/pages/about/license/license-page.html - 4 + libs/ui/src/lib/activities-table/activities-table.component.html + 276 - - Pricing - 价钱 - - apps/client/src/app/app.component.html - 99 - + + Value + 价值 - apps/client/src/app/components/header/header.component.html - 99 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 171 - apps/client/src/app/components/header/header.component.html - 299 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 206 - apps/client/src/app/components/header/header.component.html - 375 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 53 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 287 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 205 - - - Privacy Policy - 隐私政策 - apps/client/src/app/app.component.html - 105 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 208 - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html - 4 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 211 - - - Community - 社区 - apps/client/src/app/app.component.html - 130 + libs/ui/src/lib/account-balances/account-balances.component.html + 34 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 85 + libs/ui/src/lib/activities-table/activities-table.component.html + 257 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + libs/ui/src/lib/activities-table/activities-table.component.html + 293 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 94 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 98 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 25 - apps/client/src/app/components/user-account-settings/user-account-settings.html + libs/ui/src/lib/top-holdings/top-holdings.component.html 102 + + + Edit + 编辑 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 106 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 278 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 110 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 268 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 114 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 74 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 67 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 123 - - - apps/client/src/app/pages/features/features-page.html - 276 + libs/ui/src/lib/activities-table/activities-table.component.html + 430 - - The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. - 交易损失的风险可能很大。不建议将短期内可能需要的资金进行投资。 + + Delete + 删除 - apps/client/src/app/app.component.html - 221 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 289 - - - Alias - 别名 - apps/client/src/app/components/access-table/access-table.component.html - 4 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 290 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 11 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 64 - - - Grantee - 受赠者 - apps/client/src/app/components/access-table/access-table.component.html - 11 + apps/client/src/app/components/admin-overview/admin-overview.html + 129 - - - Type - 类型 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 85 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 22 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 78 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 15 + libs/ui/src/lib/account-balances/account-balances.component.html + 80 libs/ui/src/lib/activities-table/activities-table.component.html - 161 + 457 - - - Details - 细节 - apps/client/src/app/components/access-table/access-table.component.html - 33 + libs/ui/src/lib/benchmark/benchmark.component.html + 169 - - Revoke - 撤销 + + Do you really want to delete this account? + 您确定要删除此账户吗? - apps/client/src/app/components/access-table/access-table.component.html - 75 + apps/client/src/app/components/accounts-table/accounts-table.component.ts + 107 - - Do you really want to revoke this granted access? - 您真的要撤销此授予的访问权限吗? + + Asset Profile + 资产概况 - apps/client/src/app/components/access-table/access-table.component.ts - 79 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 35 - - Cash Balance - 现金余额 + + Historical Market Data + 历史市场数据 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 47 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 37 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 136 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 85 + + + Symbol + 符号 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 34 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 46 - - - Equity - 股权 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 75 - - - Activities - 活动 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 63 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 153 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 92 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 39 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 119 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 308 + + + Data Source + 数据源 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 205 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 55 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 58 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 106 - apps/client/src/app/components/admin-users/admin-users.html - 135 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 163 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 209 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 155 + + + Attempts + 尝试次数 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 319 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 83 + + + Created + 创建 - apps/client/src/app/pages/portfolio/activities/activities-page.html - 4 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 92 - - Platform - 平台 + + Finished + 完成 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 67 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 101 + + + Status + 状态 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 86 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 110 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 48 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 92 - - Cash Balances - 现金余额 + + Delete Jobs + 删除作业 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 124 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 151 - - Transfer Cash Balance - 转移现金余额 + + View Data + 查看数据 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 10 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 166 + + + View Stacktrace + 查看堆栈跟踪 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 173 - - Name - 名称 + + Delete Job + 删除作业 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 43 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 180 + + + Details for + 详细信息 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 89 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 2 + + + Date + 日期 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 287 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 161 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 30 + libs/ui/src/lib/account-balances/account-balances.component.html + 12 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 15 + libs/ui/src/lib/activities-table/activities-table.component.html + 170 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 8 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 6 + + + Market Price + 市场价 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 30 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 133 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 15 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 109 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 15 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 26 + + + Cancel + 取消 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 138 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 146 - libs/ui/src/lib/activities-table/activities-table.component.html - 138 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 544 - libs/ui/src/lib/benchmark/benchmark.component.html - 4 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 56 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 28 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 38 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 16 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 25 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 88 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 15 - - - Total - 全部的 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 55 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 58 - - - Currency - 货币 - apps/client/src/app/components/accounts-table/accounts-table.component.html + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 103 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html 65 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 185 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 338 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 294 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 48 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html 46 + + + Save + 保存 - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 551 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 144 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 63 - libs/ui/src/lib/activities-table/activities-table.component.html - 276 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 45 - - - Value - 价值 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 171 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 32 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 206 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 22 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 53 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 135 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 204 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 65 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 207 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html + 110 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 210 + 345 - libs/ui/src/lib/account-balances/account-balances.component.html - 34 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html + 48 + + + Currencies + 货币 - libs/ui/src/lib/activities-table/activities-table.component.html - 257 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 86 + + + ETFs without Countries + 没有国家的 ETF - libs/ui/src/lib/activities-table/activities-table.component.html - 293 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 91 + + + ETFs without Sectors + 无行业类别的 ETF - libs/ui/src/lib/holdings-table/holdings-table.component.html - 74 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 96 + + + Do you really want to delete this asset profile? + 您确实要删除此资产配置文件吗? - libs/ui/src/lib/top-holdings/top-holdings.component.html - 25 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 37 + + + Filter by... + 过滤... - libs/ui/src/lib/top-holdings/top-holdings.component.html - 102 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 330 - - Edit - 编辑 + + Asset Class + 资产类别 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 278 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 115 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 268 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 214 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 304 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 85 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 235 - libs/ui/src/lib/activities-table/activities-table.component.html - 430 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 290 - - - Delete - 删除 - apps/client/src/app/components/accounts-table/accounts-table.component.html - 289 + libs/ui/src/lib/assistant/assistant.html + 205 + + + Asset Sub Class + 资产子类别 apps/client/src/app/components/admin-market-data/admin-market-data.html - 290 + 124 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 223 - apps/client/src/app/components/admin-overview/admin-overview.html - 129 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 317 - apps/client/src/app/components/admin-platform/admin-platform.component.html - 103 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 244 - apps/client/src/app/components/admin-tag/admin-tag.component.html - 96 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 306 + + + First Activity + 首笔交易 - libs/ui/src/lib/account-balances/account-balances.component.html - 80 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 148 - libs/ui/src/lib/activities-table/activities-table.component.html - 457 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 196 - libs/ui/src/lib/benchmark/benchmark.component.html - 155 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 212 - - - Do you really want to delete this account? - 您确定要删除此账户吗? - apps/client/src/app/components/accounts-table/accounts-table.component.ts - 107 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 50 - - Asset Profile - 资产概况 + + Activities Count + 活动计数 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 35 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 157 - - Historical Market Data - 历史市场数据 + + Historical Data + 历史数据 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 166 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 85 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 44 - - Symbol - 符号 - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 46 - + + Sectors Count + 行业数 apps/client/src/app/components/admin-market-data/admin-market-data.html - 75 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 153 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 39 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 289 + 175 - - Data Source - 数据源 - - apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 - + + Countries Count + 国家数 apps/client/src/app/components/admin-market-data/admin-market-data.html - 106 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 163 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 154 + 184 - - Attempts - 尝试次数 + + Gather Profile Data + 收集个人资料数据 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 83 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 235 - - - Created - 创建 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 92 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 44 - - Finished - 完成 + + Oops! Could not parse historical data. + 哎呀!无法解析历史数据。 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 101 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts + 262 - - Status - 状态 + + Refresh + 刷新 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 110 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 17 - - Delete Jobs - 删除作业 + + Import + 导入 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 151 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 153 - - - View Data - 查看数据 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 166 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 186 - - - View Stacktrace - 查看堆栈跟踪 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 173 + libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html + 71 - - Delete Job - 删除作业 + + Sector + 行业 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 180 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 240 - - - Details for - 详细信息 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 2 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 261 - - Date - 日期 + + Country + 国家 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 160 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 251 - libs/ui/src/lib/account-balances/account-balances.component.html - 12 + apps/client/src/app/components/admin-users/admin-users.html + 77 - libs/ui/src/lib/activities-table/activities-table.component.html - 170 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 271 + + + Sectors + 行业 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 6 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 257 - - - Market Price - 市场价 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 133 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 484 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 98 + 277 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 26 + apps/client/src/app/pages/public/public-page.html + 106 - - Cancel - 取消 + + Countries + 国家 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 146 + 267 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 544 + 495 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 56 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 289 + + + Benchmark + 基准 - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 42 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 346 + + + Symbol Mapping + 符号映射 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 25 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 352 + + + Scraper Configuration + 刮削配置 - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 377 + + + Note + 笔记 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 58 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 520 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 103 - - - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 65 + 78 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 334 - - - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 48 + 275 + + + Add Asset Profile + 添加资产概况 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 46 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 7 - - Save - 保存 + + Search + 搜索 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 551 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + Add Manually + 手动添加 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 63 + 19 + + + Name, symbol or ISIN + 名称、符号或 ISIN - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 49 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 117 - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 32 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 29 apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 22 + 10 - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 135 - - - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 65 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 110 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 124 + + + Do you really want to delete this coupon? + 您确实要删除此优惠券吗? - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 341 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 142 + + + Do you really want to delete this system message? + 您真的要删除这条系统消息吗? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html - 48 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 155 - - Currencies - 货币 + + Do you really want to flush the cache? + 您真的要刷新缓存吗? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 86 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 179 - - ETFs without Countries - 没有国家的 ETF + + Please set your system message: + 请设置您的系统消息: - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 199 - - ETFs without Sectors - 无行业类别的 ETF + + Version + 版本 - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - Do you really want to delete this asset profile? - 您确实要删除此资产配置文件吗? + + User Count + 用户数 - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 37 + apps/client/src/app/components/admin-overview/admin-overview.html + 13 - - Filter by... - 过滤... + + Activity Count + 活动计数 - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 330 + apps/client/src/app/components/admin-overview/admin-overview.html + 19 - - Asset Class - 资产类别 + + per User + 每位用户 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 115 + apps/client/src/app/components/admin-overview/admin-overview.html + 28 + + + Add Currency + 添加货币 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 214 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 22 + + + User Signup + 用户注册 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 304 + apps/client/src/app/components/admin-overview/admin-overview.html + 34 + + + Read-only Mode + 只读模式 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 216 + apps/client/src/app/components/admin-overview/admin-overview.html + 48 + + + System Message + 系统信息 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 287 + apps/client/src/app/components/admin-overview/admin-overview.html + 72 + + + Set Message + 设置留言 - libs/ui/src/lib/assistant/assistant.html - 168 + apps/client/src/app/components/admin-overview/admin-overview.html + 94 - - Asset Sub Class - 资产子类别 + + Coupons + 优惠券 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 124 + apps/client/src/app/components/admin-overview/admin-overview.html + 102 + + + Add + 添加 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 223 + apps/client/src/app/components/admin-overview/admin-overview.html + 162 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 317 + libs/ui/src/lib/account-balances/account-balances.component.html + 93 + + + Housekeeping + 家政 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 170 + + + Flush Cache + 刷新缓存 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 303 + apps/client/src/app/components/admin-overview/admin-overview.html + 186 - - First Activity - 首笔交易 + + Add Platform + 添加平台 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 148 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 8 + + + Url + 网址 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 196 + 455 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 197 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 507 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 50 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 38 - - - Activities Count - 活动计数 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 157 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 25 - - Historical Data - 历史数据 + + Accounts + 帐户 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 166 + apps/client/src/app/components/admin-platform/admin-platform.component.html + 52 - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 44 + apps/client/src/app/components/admin-users/admin-users.html + 114 - - - Sectors Count - 行业数 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 175 + apps/client/src/app/components/header/header.component.html + 58 - - - Countries Count - 国家数 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 184 + apps/client/src/app/components/header/header.component.html + 268 - - - Gather Profile Data - 收集个人资料数据 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 235 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 368 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 44 + apps/client/src/app/pages/accounts/accounts-page.html + 4 - - Oops! Could not parse historical data. - 哎呀!无法解析历史数据。 + + Do you really want to delete this platform? + 您真的要删除这个平台吗? - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts - 262 + apps/client/src/app/components/admin-platform/admin-platform.component.ts + 87 - - Refresh - 刷新 + + Update platform + 更新平台 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 17 - - - - Import - 导入 - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 153 - - - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 186 - - - libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html - 71 - - - - Sector - 行业 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 240 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 242 - - - - Country - 国家 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 251 - - - apps/client/src/app/components/admin-users/admin-users.html - 77 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 252 - - - - Sectors - 行业 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 257 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 484 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 258 - - - apps/client/src/app/pages/public/public-page.html - 106 - - - - Countries - 国家 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 267 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 495 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 270 - - - - Benchmark - 基准 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 346 - - - - Symbol Mapping - 符号映射 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 352 - - - - Scraper Configuration - 刮削配置 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 377 - - - - Note - 笔记 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 520 - - - apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 78 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 272 - - - - Add Asset Profile - 添加资产概况 - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 7 - - - - Search - 搜索 - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 - - - - Add Manually - 手动添加 - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 - - - - Name, symbol or ISIN - 名称、符号或 ISIN - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 - - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 29 - - - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 10 - - - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 - - - - Do you really want to delete this coupon? - 您确实要删除此优惠券吗? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 134 - - - - Do you really want to delete this system message? - 您真的要删除这条系统消息吗? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 147 - - - - Do you really want to flush the cache? - 您真的要刷新缓存吗? - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 171 - - - - Please set your system message: - 请设置您的系统消息: - - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 191 - - - - Version - 版本 - - apps/client/src/app/components/admin-overview/admin-overview.html - 7 - - - - User Count - 用户数 - - apps/client/src/app/components/admin-overview/admin-overview.html - 13 - - - - Activity Count - 活动计数 - - apps/client/src/app/components/admin-overview/admin-overview.html - 19 - - - - per User - 每位用户 - - apps/client/src/app/components/admin-overview/admin-overview.html - 28 - - - - Add Currency - 添加货币 - - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 22 - - - - User Signup - 用户注册 - - apps/client/src/app/components/admin-overview/admin-overview.html - 34 - - - - Read-only Mode - 只读模式 - - apps/client/src/app/components/admin-overview/admin-overview.html - 48 - - - - System Message - 系统信息 - - apps/client/src/app/components/admin-overview/admin-overview.html - 72 - - - - Set Message - 设置留言 - - apps/client/src/app/components/admin-overview/admin-overview.html - 94 - - - - Coupons - 优惠券 - - apps/client/src/app/components/admin-overview/admin-overview.html - 102 - - - - Add - 添加 - - apps/client/src/app/components/admin-overview/admin-overview.html - 162 - - - libs/ui/src/lib/account-balances/account-balances.component.html - 93 - - - - Housekeeping - 家政 - - apps/client/src/app/components/admin-overview/admin-overview.html - 170 - - - - Flush Cache - 刷新缓存 - - apps/client/src/app/components/admin-overview/admin-overview.html - 174 - - - - Add Platform - 添加平台 - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 11 - - - - Url - 网址 - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 455 - - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 507 - - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 51 - - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 25 - - - - Accounts - 帐户 - - apps/client/src/app/components/admin-platform/admin-platform.component.html - 65 - - - apps/client/src/app/components/admin-users/admin-users.html - 114 - - - apps/client/src/app/components/header/header.component.html - 54 - - - apps/client/src/app/components/header/header.component.html - 259 - - - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 352 - - - apps/client/src/app/pages/accounts/accounts-page.html - 4 - - - - Do you really want to delete this platform? - 您真的要删除这个平台吗? - - apps/client/src/app/components/admin-platform/admin-platform.component.ts - 87 - - - - Update platform - 更新平台 - - apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html - 8 + apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html + 8 @@ -2032,7 +1732,7 @@ 平台 apps/client/src/app/components/admin-settings/admin-settings.component.html - 111 + 195 @@ -2040,7 +1740,7 @@ 标签 apps/client/src/app/components/admin-settings/admin-settings.component.html - 117 + 201 libs/ui/src/lib/tags-selector/tags-selector.component.html @@ -2051,12 +1751,12 @@ 16 - + Add Tag 添加标签 apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + 8 @@ -2172,15 +1872,15 @@ 投资组合 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 117 + 120 - apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 92 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 93 + libs/common/src/lib/routes/routes.ts + 151 @@ -2188,7 +1888,7 @@ 基准 apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts - 129 + 132 @@ -2204,11 +1904,15 @@ 概述 apps/client/src/app/components/header/header.component.html - 28 + 30 apps/client/src/app/components/header/header.component.html - 241 + 248 + + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 46 @@ -2216,11 +1920,11 @@ 投资组合 apps/client/src/app/components/header/header.component.html - 41 + 44 apps/client/src/app/components/header/header.component.html - 251 + 258 @@ -2228,11 +1932,11 @@ 管理控制 apps/client/src/app/components/header/header.component.html - 68 + 74 apps/client/src/app/components/header/header.component.html - 275 + 289 @@ -2240,7 +1944,7 @@ apps/client/src/app/components/header/header.component.html - 207 + 213 @@ -2248,11 +1952,11 @@ 用户 apps/client/src/app/components/admin-tag/admin-tag.component.html - 44 + 31 apps/client/src/app/components/header/header.component.html - 225 + 231 @@ -2260,7 +1964,7 @@ 我的 Ghostfolio apps/client/src/app/components/header/header.component.html - 266 + 277 @@ -2268,7 +1972,7 @@ 关于 Ghostfolio apps/client/src/app/components/header/header.component.html - 312 + 326 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2280,7 +1984,7 @@ 登入 apps/client/src/app/components/header/header.component.html - 408 + 422 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2292,19 +1996,23 @@ 开始使用 apps/client/src/app/components/header/header.component.html - 418 + 432 Sign in 登入 - apps/client/src/app/app-routing.module.ts - 150 + apps/client/src/app/components/header/header.component.ts + 237 - apps/client/src/app/components/header/header.component.ts - 231 + libs/common/src/lib/routes/routes.ts + 81 + + + libs/common/src/lib/routes/routes.ts + 157 @@ -2312,7 +2020,11 @@ 哎呀!安全令牌不正确。 apps/client/src/app/components/header/header.component.ts - 246 + 252 + + + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 129 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -2334,6 +2046,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 28 + + apps/client/src/app/components/markets/markets.component.ts + 49 + libs/ui/src/lib/i18n.ts 102 @@ -2346,6 +2062,10 @@ apps/client/src/app/components/home-market/home-market.component.ts 29 + + apps/client/src/app/components/markets/markets.component.ts + 50 + libs/ui/src/lib/i18n.ts 103 @@ -2358,6 +2078,10 @@ apps/client/src/app/components/home-market/home-market.html 7 + + apps/client/src/app/components/markets/markets.html + 17 + Welcome to Ghostfolio @@ -2428,7 +2152,7 @@ 设置帐户 apps/client/src/app/components/home-overview/home-overview.html - 44 + 48 @@ -2436,7 +2160,7 @@ 添加活动 apps/client/src/app/components/home-overview/home-overview.html - 52 + 56 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2474,6 +2198,14 @@ apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 11 + + apps/client/src/app/components/user-account-access/user-account-access.html + 3 + + + apps/client/src/app/components/user-account-access/user-account-access.html + 15 + apps/client/src/app/components/user-account-settings/user-account-settings.html 279 @@ -2491,8 +2223,8 @@ or - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 32 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 30 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2516,7 +2248,7 @@ apps/client/src/app/pages/webauthn/webauthn-page.html - 29 + 30 @@ -2572,7 +2304,7 @@ 投资 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 152 + 165 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2592,7 +2324,7 @@ 费用 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 187 + 202 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2724,7 +2456,7 @@ 股息 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 165 + 180 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -2736,7 +2468,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 201 + 202 @@ -2760,7 +2492,7 @@ 平均单价 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 87 + 98 @@ -2768,7 +2500,7 @@ 最低价格 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 114 + 125 @@ -2776,7 +2508,7 @@ 最高价格 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 130 + 141 @@ -2784,11 +2516,11 @@ 数量 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 140 + 151 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 188 + 189 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2800,7 +2532,7 @@ 报告数据故障 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 409 + 423 @@ -2828,11 +2560,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 57 + 43 apps/client/src/app/pages/pricing/pricing-page.html - 218 + 204 @@ -2848,11 +2580,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 61 + 47 apps/client/src/app/pages/pricing/pricing-page.html - 222 + 208 @@ -2864,11 +2596,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 65 + 51 apps/client/src/app/pages/pricing/pricing-page.html - 226 + 212 @@ -2880,11 +2612,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 69 + 55 apps/client/src/app/pages/pricing/pricing-page.html - 230 + 216 @@ -2896,7 +2628,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 250 + 236 @@ -2908,11 +2640,11 @@ apps/client/src/app/pages/pricing/pricing-page.html - 85 + 71 apps/client/src/app/pages/pricing/pricing-page.html - 274 + 260 @@ -2940,7 +2672,7 @@ 升级计划 apps/client/src/app/components/header/header.component.html - 187 + 193 apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html @@ -2952,7 +2684,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 312 + 298 @@ -2964,7 +2696,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 220 + 340 @@ -2976,7 +2708,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 230 + 352 @@ -2988,7 +2720,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 234 + 362 @@ -3000,7 +2732,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 256 + 387 @@ -3012,7 +2744,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 259 + 393 @@ -3036,7 +2768,7 @@ 授予访问权限 apps/client/src/app/components/user-account-access/user-account-access.html - 7 + 57 @@ -3044,7 +2776,7 @@ 请输入您的优惠券代码。 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 201 + 202 @@ -3052,7 +2784,7 @@ 无法兑换优惠券代码 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 165 + 166 @@ -3060,7 +2792,7 @@ 优惠券代码已兑换 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 178 + 179 @@ -3068,7 +2800,7 @@ 重新加载 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 180 @@ -3080,7 +2812,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 296 + 282 @@ -3284,7 +3016,7 @@ 此功能目前无法使用。 apps/client/src/app/core/http-response.interceptor.ts - 54 + 55 @@ -3292,11 +3024,11 @@ 请稍后再试。 apps/client/src/app/core/http-response.interceptor.ts - 56 + 57 apps/client/src/app/core/http-response.interceptor.ts - 85 + 88 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3308,7 +3040,7 @@ 哎呀!出了些问题。 apps/client/src/app/core/http-response.interceptor.ts - 83 + 86 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3320,11 +3052,11 @@ 好的 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 140 + 141 apps/client/src/app/core/http-response.interceptor.ts - 86 + 89 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -3335,52 +3067,36 @@ About 关于 - apps/client/src/app/pages/about/about-page-routing.module.ts - 58 - - - apps/client/src/app/pages/about/about-page.component.ts - 45 + apps/client/src/app/pages/about/overview/about-overview-page.routes.ts + 12 - apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 220 Changelog 更新日志 - apps/client/src/app/pages/about/about-page.component.ts - 50 - - - apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 185 License 许可证 - apps/client/src/app/pages/about/about-page.component.ts - 55 - - - apps/client/src/app/pages/about/license/license-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 193 Privacy Policy 隐私政策 - apps/client/src/app/pages/about/about-page.component.ts - 64 - - - apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 209 @@ -3411,8 +3127,8 @@ Accounts 账户 - apps/client/src/app/pages/accounts/accounts-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 69 @@ -3475,52 +3191,36 @@ Admin Control 管理控制 - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 20 + libs/common/src/lib/routes/routes.ts + 64 Market Data 市场数据 - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 30 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 38 + libs/common/src/lib/routes/routes.ts + 51 Settings 设置 - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 35 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 33 - - - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 18 + libs/common/src/lib/routes/routes.ts + 34 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 36 + libs/common/src/lib/routes/routes.ts + 56 Users 用户 - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 40 - - - apps/client/src/app/pages/admin/admin-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 61 @@ -3528,31 +3228,27 @@ 概述 apps/client/src/app/pages/admin/admin-page.component.ts - 28 - - - apps/client/src/app/pages/home/home-page.component.ts - 38 + 29 apps/client/src/app/pages/resources/resources-page.component.ts - 17 + 20 - apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + libs/common/src/lib/routes/routes.ts + 113 - apps/client/src/app/pages/zen/zen-page.component.ts - 35 + libs/common/src/lib/routes/routes.ts + 170 Blog 博客 - apps/client/src/app/pages/blog/blog-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 225 @@ -3574,14 +3270,14 @@ Frequently Asked Questions (FAQ) 常见问题 (FAQ) - - apps/client/src/app/pages/faq/faq-page-routing.module.ts - 34 - apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts 13 + + libs/common/src/lib/routes/routes.ts + 251 + Frequently Asked Questions (FAQ) @@ -3603,8 +3299,8 @@ Features 功能 - apps/client/src/app/app-routing.module.ts - 74 + libs/common/src/lib/routes/routes.ts + 256 @@ -3735,56 +3431,44 @@ Holdings 持仓 - apps/client/src/app/pages/home/home-page-routing.module.ts - 24 - - - apps/client/src/app/pages/home/home-page-routing.module.ts - 29 - - - apps/client/src/app/pages/home/home-page.component.ts - 43 + libs/common/src/lib/routes/routes.ts + 90 - apps/client/src/app/pages/zen/zen-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 167 Summary 汇总 - apps/client/src/app/pages/home/home-page-routing.module.ts - 34 - - - apps/client/src/app/pages/home/home-page.component.ts - 48 + libs/common/src/lib/routes/routes.ts + 105 Markets 市场 - apps/client/src/app/pages/home/home-page-routing.module.ts - 39 + apps/client/src/app/pages/resources/resources-page.component.ts + 30 - apps/client/src/app/pages/home/home-page.component.ts - 58 + libs/common/src/lib/routes/routes.ts + 95 - apps/client/src/app/pages/markets/markets-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 100 - apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts - 10 + libs/common/src/lib/routes/routes.ts + 261 - apps/client/src/app/pages/resources/resources-page.component.ts - 27 + libs/common/src/lib/routes/routes.ts + 309 @@ -3808,7 +3492,7 @@ 开源财富管理软件 apps/client/src/app/pages/i18n/i18n-page.html - 14 + 97 @@ -3836,7 +3520,7 @@ apps/client/src/app/pages/pricing/pricing-page.html - 342 + 349 @@ -3848,7 +3532,7 @@ apps/client/src/app/pages/landing/landing-page.html - 451 + 452 @@ -4147,3855 +3831,4217 @@ 40 - apps/client/src/app/pages/open/open-page.html - 62 + apps/client/src/app/pages/open/open-page.html + 62 + + + + (Last 30 days) + (最近 30 天) + + apps/client/src/app/pages/open/open-page.html + 48 + + + apps/client/src/app/pages/open/open-page.html + 59 + + + + New Users + 新用户 + + apps/client/src/app/pages/open/open-page.html + 51 + + + + Users in Slack community + Slack 社区的用户 + + apps/client/src/app/pages/open/open-page.html + 75 + + + + Contributors on GitHub + GitHub 上的贡献者 + + apps/client/src/app/pages/open/open-page.html + 89 + + + + (Last 90 days) + (过去 90 天) + + apps/client/src/app/pages/open/open-page.html + 127 + + + + Uptime + 正常运行时间 + + apps/client/src/app/pages/open/open-page.html + 132 + + + + Activities + 活动 + + libs/common/src/lib/routes/routes.ts + 128 + + + + Do you really want to delete these activities? + 您确定要删除这些活动吗? + + libs/ui/src/lib/activities-table/activities-table.component.ts + 219 + + + + Update activity + 更新活动 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 10 + + + + Stocks, ETFs, bonds, cryptocurrencies, commodities + 股票、ETF、债券、加密货币、大宗商品 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 25 + + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 65 + + + + One-time fee, annual account fees + 一次性费用、年度账户费用 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 + + + + Distribution of corporate earnings + 企业盈利分配 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 41 + + + + Revenue for lending out money + 放贷收入 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 49 + + + + Mortgages, personal loans, credit cards + 抵押贷款、个人贷款、信用卡 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 57 + + + + Luxury items, real estate, private companies + 奢侈品、房地产、私营公司 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 73 + + + + Account + 帐户 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 85 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 308 + + + libs/ui/src/lib/assistant/assistant.html + 144 + + + + Update Cash Balance + 更新现金余额 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 112 + + + + Unit Price + 单价 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 214 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 210 + + + + Fee + 费用 + + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 262 + + + libs/ui/src/lib/activities-table/activities-table.component.html + 234 + + + + Import Activities + 导入活动记录 + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 47 + + + + Import Dividends + 导入股息 + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 88 + + + + Importing data... + 正在导入数据... + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 126 + + + + Import has been completed + 导入已完成 + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 134 + + + + Validating data... + 验证数据... + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts + 242 + + + + Select Holding + 选择持仓 + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 20 + + + + Select File + 选择文件 + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 22 + + + + Holding + 持仓 + + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 32 + + + libs/ui/src/lib/assistant/assistant.html + 166 - - (Last 30 days) - (最近 30 天) + + Load Dividends + 加载股息 - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 68 + + + Choose or drop a file here + 在此处选择或放置文件 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 84 - - New Users - 新用户 + + The following file formats are supported: + 支持以下文件格式: - apps/client/src/app/pages/open/open-page.html - 51 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 90 - - Users in Slack community - Slack 社区的用户 + + Select Dividends + 选择股息 - apps/client/src/app/pages/open/open-page.html - 75 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 113 - - Contributors on GitHub - GitHub 上的贡献者 + + Select Activities + 选择活动 - apps/client/src/app/pages/open/open-page.html - 89 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 115 - - (Last 90 days) - (过去 90 天) + + Back + 后退 - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 144 - - - Uptime - 正常运行时间 - apps/client/src/app/pages/open/open-page.html - 132 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 178 - - Activities - 活动 + + Allocations + 分配 - apps/client/src/app/pages/portfolio/activities/activities-page-routing.module.ts + apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts 13 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 40 + libs/common/src/lib/routes/routes.ts + 133 - - Do you really want to delete these activities? - 您确定要删除这些活动吗? + + Allocations + 分配 - libs/ui/src/lib/activities-table/activities-table.component.ts - 219 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 4 - - Update activity - 更新活动 + + Proportion of Net Worth + 占净资产的比例 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 10 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 12 - - Stocks, ETFs, bonds, cryptocurrencies, commodities - 股票、ETF、债券、加密货币、大宗商品 + + By Platform + 按平台 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 25 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 44 + + + By Currency + 按货币 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 65 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 63 - - One-time fee, annual account fees - 一次性费用、年度账户费用 + + By Asset Class + 按资产类别 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 85 - - Distribution of corporate earnings - 企业盈利分配 + + By Holding + 通过持有 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 41 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 107 - - Revenue for lending out money - 放贷收入 + + By Sector + 按部门 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 49 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 130 - - Mortgages, personal loans, credit cards - 抵押贷款、个人贷款、信用卡 + + By Continent + 按大陆 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 153 - - Luxury items, real estate, private companies - 奢侈品、房地产、私营公司 + + By Market + 按市场 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 73 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 175 - - Account - 帐户 + + Regions + 区域 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 85 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 198 - libs/ui/src/lib/activities-table/activities-table.component.html - 308 + apps/client/src/app/pages/public/public-page.html + 143 + + + Developed Markets + 发达市场 - libs/ui/src/lib/assistant/assistant.html - 109 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 222 - - - Update Cash Balance - 更新现金余额 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + apps/client/src/app/pages/public/public-page.html + 160 - - Unit Price - 单价 + + Emerging Markets + 新兴市场 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 213 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 231 - libs/ui/src/lib/activities-table/activities-table.component.html - 210 + apps/client/src/app/pages/public/public-page.html + 169 - - Fee - 费用 + + Other Markets + 其他市场 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 259 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 240 - libs/ui/src/lib/activities-table/activities-table.component.html - 234 + apps/client/src/app/pages/public/public-page.html + 178 - - Import Activities - 导入活动记录 + + No data available + 无可用数据 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 47 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 250 - - - Import Dividends - 导入股息 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 88 + apps/client/src/app/pages/public/public-page.html + 188 + + + libs/ui/src/lib/benchmark/benchmark.component.html + 202 + + + libs/ui/src/lib/top-holdings/top-holdings.component.html + 181 + + + + By Account + 按帐户 + + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 286 - - Importing data... - 正在导入数据... + + By ETF Provider + 按 ETF 提供商 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 126 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 306 - - Import has been completed - 导入已完成 + + By Country + 按国家/地区 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 134 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 264 - - Validating data... - 验证数据... + + Analysis + 分析 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts - 242 + libs/common/src/lib/routes/routes.ts + 138 - - Select Holding - 选择持仓 + + Dividend + 股息 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 20 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 51 - - - Select File - 选择文件 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 22 + libs/ui/src/lib/i18n.ts + 36 - - Holding - 持仓 + + Deposit + 订金 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 32 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 360 + + + Monthly + 每月 - libs/ui/src/lib/assistant/assistant.html - 129 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 66 - - Load Dividends - 加载股息 + + Yearly + 每年 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 68 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 67 - - Choose or drop a file here - 在此处选择或放置文件 + + Analysis + 分析 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 84 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 2 - - The following file formats are supported: - 支持以下文件格式: + + Top + 顶部 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 90 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 239 - - Select Dividends - 选择股息 + + Bottom + 底部 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 113 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 288 - - Select Activities - 选择活动 + + Portfolio Evolution + 投资组合演变 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 115 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 341 - - Back - 后退 + + Investment Timeline + 投资时间表 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 144 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 368 + + + Current Streak + 当前连胜 - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 178 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 389 - - Allocations - 分配 + + Longest Streak + 最长连续纪录 - apps/client/src/app/pages/portfolio/allocations/allocations-page-routing.module.ts - 13 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 398 + + + Dividend Timeline + 股息时间表 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 45 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 425 - - Allocations - 分配 + + FIRE + 财务独立 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html + apps/client/src/app/pages/portfolio/fire/fire-page.html 4 - - Proportion of Net Worth - 占净资产的比例 + + Calculator + 计算器 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 12 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 7 - - By Platform - 按平台 + + 4% Rule + 4%规则 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 44 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 40 - - By Currency - 按货币 + + Currency Cluster Risks + 货币集群风险 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 63 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 93 - - By Asset Class - 按资产类别 + + Account Cluster Risks + 账户集群风险 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 85 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 141 - - By Holding - 通过持有 + + Holdings + 持仓 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 107 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 79 - - - By Sector - 按部门 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 130 + apps/client/src/app/components/home-holdings/home-holdings.html + 4 - - - By Continent - 按大陆 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 153 + apps/client/src/app/pages/public/public-page.html + 70 - - By Market - 按市场 + + Pricing + 价钱 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 175 + apps/client/src/app/pages/pricing/pricing-page-routing.module.ts + 13 + + + libs/common/src/lib/routes/routes.ts + 271 - - Regions - 区域 + + Pricing Plans + 定价计划 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 198 + apps/client/src/app/pages/pricing/pricing-page.html + 4 + + + Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. + 我们的官方 Ghostfolio Premium 云产品是最简单的入门方法。由于它节省了时间,这对于大多数人来说将是最佳选择。收入用于支付托管基础设施的成本和资助持续开发。 - apps/client/src/app/pages/public/public-page.html - 143 + apps/client/src/app/pages/pricing/pricing-page.html + 6 - - Developed Markets - 发达市场 + + If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. + 如果你希望在自己的基础设施上运行 Ghostfolio,请查看源代码和进一步的说明GitHub - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 222 + apps/client/src/app/pages/pricing/pricing-page.html + 12 + + + For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. + 适合喜欢在自己的基础设施上运行 Ghostfolio 的精通技术的投资者。 - apps/client/src/app/pages/public/public-page.html - 160 + apps/client/src/app/pages/pricing/pricing-page.html + 24 - - Emerging Markets - 新兴市场 + + Unlimited Transactions + 无限交易 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 231 + apps/client/src/app/pages/pricing/pricing-page.html + 31 - apps/client/src/app/pages/public/public-page.html - 169 + apps/client/src/app/pages/pricing/pricing-page.html + 120 + + + apps/client/src/app/pages/pricing/pricing-page.html + 192 - - Other Markets - 其他市场 + + Unlimited Accounts + 无限账户 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 240 + apps/client/src/app/pages/pricing/pricing-page.html + 35 - apps/client/src/app/pages/public/public-page.html - 178 + apps/client/src/app/pages/pricing/pricing-page.html + 124 - - - No data available - 无可用数据 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 250 + apps/client/src/app/pages/pricing/pricing-page.html + 196 + + + Portfolio Performance + 投资组合表现 - apps/client/src/app/pages/public/public-page.html - 188 + apps/client/src/app/pages/pricing/pricing-page.html + 39 - libs/ui/src/lib/benchmark/benchmark.component.html - 188 + apps/client/src/app/pages/pricing/pricing-page.html + 128 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 181 + apps/client/src/app/pages/pricing/pricing-page.html + 200 - - By Account - 按帐户 + + Data Import and Export + 数据导入与导出 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 286 + apps/client/src/app/pages/pricing/pricing-page.html + 59 - - - By ETF Provider - 按 ETF 提供商 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 306 + apps/client/src/app/pages/pricing/pricing-page.html + 132 - - - By Country - 按国家/地区 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 264 + apps/client/src/app/pages/pricing/pricing-page.html + 220 - - Analysis - 分析 + + Community Support + 社区支持 - apps/client/src/app/pages/portfolio/analysis/analysis-page-routing.module.ts - 13 + apps/client/src/app/pages/pricing/pricing-page.html + 76 + + + Self-hosted, update manually. + 自托管,手动更新。 - apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 35 + apps/client/src/app/pages/pricing/pricing-page.html + 80 - - Dividend - 股息 + + Free + 自由的 - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 51 + apps/client/src/app/pages/pricing/pricing-page.html + 81 - libs/ui/src/lib/i18n.ts - 36 + apps/client/src/app/pages/pricing/pricing-page.html + 144 - - Deposit - 订金 + + For new investors who are just getting started with trading. + 适合刚开始交易的新投资者。 - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 360 + apps/client/src/app/pages/pricing/pricing-page.html + 114 - - Monthly - 每月 + + Fully managed Ghostfolio cloud offering. + 完全托管的 Ghostfolio 云产品。 - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 66 + apps/client/src/app/pages/pricing/pricing-page.html + 143 - - - Yearly - 每年 - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 67 + apps/client/src/app/pages/pricing/pricing-page.html + 269 - - Analysis - 分析 + + For ambitious investors who need the full picture of their financial assets. + 适合需要全面了解其金融资产的雄心勃勃的投资者。 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 2 + apps/client/src/app/pages/pricing/pricing-page.html + 185 - - Top - 顶部 + + Email and Chat Support + 电子邮件和聊天支持 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 239 + apps/client/src/app/pages/pricing/pricing-page.html + 265 - - Bottom - 底部 + + Renew Plan + 更新计划 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 288 + apps/client/src/app/components/header/header.component.html + 191 - - - Portfolio Evolution - 投资组合演变 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 341 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 - - - Investment Timeline - 投资时间表 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 368 + apps/client/src/app/pages/pricing/pricing-page.html + 296 - - Current Streak - 当前连胜 + + One-time payment, no auto-renewal. + 一次性付款,无自动续订。 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 389 + apps/client/src/app/pages/pricing/pricing-page.html + 302 - - Longest Streak - 最长连续纪录 + + Get Started + 开始使用 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 398 + apps/client/src/app/pages/landing/landing-page.html + 446 - - Dividend Timeline - 股息时间表 + + It’s free. + 免费。 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 425 + apps/client/src/app/pages/pricing/pricing-page.html + 352 - - FIRE - 财务独立 + + Hello, has shared a Portfolio with you! + 你好,分享了一个投资组合给你! - apps/client/src/app/pages/portfolio/fire/fire-page.html + apps/client/src/app/pages/public/public-page.html 4 - - Calculator - 计算器 + + Currencies + 货币 - apps/client/src/app/pages/portfolio/fire/fire-page.html - 7 + apps/client/src/app/pages/public/public-page.html + 88 + + + + Continents + 大陆 + + apps/client/src/app/pages/public/public-page.html + 124 - - 4% Rule - 4%规则 + + Ghostfolio empowers you to keep track of your wealth. + Ghostfolio 使您能够跟踪您的财富。 - apps/client/src/app/pages/portfolio/fire/fire-page.html - 40 + apps/client/src/app/pages/public/public-page.html + 215 - - Currency Cluster Risks - 货币集群风险 + + Registration + 注册 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 93 + libs/common/src/lib/routes/routes.ts + 281 - - Account Cluster Risks - 账户集群风险 + + Continue with Internet Identity + 继续互联网身份 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 141 + apps/client/src/app/pages/register/register-page.html + 42 - - Holdings - 持仓 + + Continue with Google + 继续使用谷歌 - apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 79 + apps/client/src/app/pages/register/register-page.html + 53 + + + Copy to clipboard + 复制到剪贴板 - apps/client/src/app/components/home-holdings/home-holdings.html - 4 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 88 + + + Personal Finance Tools + 个人理财工具 - apps/client/src/app/pages/public/public-page.html - 70 + libs/common/src/lib/routes/routes.ts + 329 + + + open-source-alternative-to + 开源替代方案 + kebab-case - libs/ui/src/lib/assistant/assistant.html - 44 + libs/common/src/lib/routes/routes.ts + 320 - - - Pricing - 价钱 - apps/client/src/app/pages/pricing/pricing-page-routing.module.ts - 13 + libs/common/src/lib/routes/routes.ts + 324 - - Pricing Plans - 定价计划 + + Discover Open Source Alternatives for Personal Finance Tools + 发现个人理财工具的开源替代品 - apps/client/src/app/pages/pricing/pricing-page.html + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 4 - - Our official Ghostfolio Premium cloud offering is the easiest way to get started. Due to the time it saves, this will be the best option for most people. Revenue is used to cover the costs of the hosting infrastructure and to fund ongoing development. - 我们的官方 Ghostfolio Premium 云产品是最简单的入门方法。由于它节省了时间,这对于大多数人来说将是最佳选择。收入用于支付托管基础设施的成本和资助持续开发。 + + This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. + 此概述页面包含与开源替代方案相比的精选个人理财工具集合Ghostfolio。如果您重视透明度、数据隐私和社区协作,Ghostfolio 提供了一个绝佳的机会来控制您的财务管理。 - apps/client/src/app/pages/pricing/pricing-page.html - 6 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 8 - - If you prefer to run Ghostfolio on your own infrastructure, please find the source code and further instructions on GitHub. - 如果你希望在自己的基础设施上运行 Ghostfolio,请查看源代码和进一步的说明GitHub + + Explore the links below to compare a variety of personal finance tools with Ghostfolio. + 浏览下面的链接,将各种个人理财工具与 Ghostfolio 进行比较。 - apps/client/src/app/pages/pricing/pricing-page.html - 26 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 16 - - For tech-savvy investors who prefer to run Ghostfolio on their own infrastructure. - 适合喜欢在自己的基础设施上运行 Ghostfolio 的精通技术的投资者。 + + Open Source Alternative to + 的开源替代品 - apps/client/src/app/pages/pricing/pricing-page.html - 38 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + 42 - - Unlimited Transactions - 无限交易 + + The Open Source Alternative to + 开源替代方案 - apps/client/src/app/pages/pricing/pricing-page.html - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 8 + + + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. + 您是否正在寻找开源替代方案幽灵作品集是一个强大的投资组合管理工具,为个人提供一个全面的平台来跟踪、分析和优化他们的投资。无论您是经验丰富的投资者还是刚刚起步的投资者,Ghostfolio 都提供直观的用户界面和广泛的功能帮助您做出明智的决定并掌控您的财务未来。 - apps/client/src/app/pages/pricing/pricing-page.html - 134 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 18 + + + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. + Ghostfolio 是一款开源软件 (OSS),提供了一种经济高效的替代方案使其特别适合预算紧张的个人,例如追求财务独立,提前退休(FIRE) 。通过利用开发者社区和个人理财爱好者的集体努力,Ghostfolio 不断增强其功能、安全性和用户体验。 - apps/client/src/app/pages/pricing/pricing-page.html - 206 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 32 - - Unlimited Accounts - 无限账户 + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + 让我们更深入地了解 Ghostfolio 与下面的比较表可帮助您全面了解 Ghostfolio 相对于其他产品的定位。我们将探讨功能、数据隐私、定价等各个方面,让您根据个人需求做出明智的选择。 - apps/client/src/app/pages/pricing/pricing-page.html - 49 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 43 + + + Ghostfolio vs comparison table + Ghostfolio vs比较表 - apps/client/src/app/pages/pricing/pricing-page.html - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 54 + + + Founded + 成立 - apps/client/src/app/pages/pricing/pricing-page.html - 210 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 77 - - Portfolio Performance - 投资组合表现 + + Origin + 来源 - apps/client/src/app/pages/pricing/pricing-page.html - 53 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 82 + + + Region + 地区 - apps/client/src/app/pages/pricing/pricing-page.html - 142 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 87 + + + Available in + 可用于 - apps/client/src/app/pages/pricing/pricing-page.html - 214 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 108 - - Data Import and Export - 数据导入与导出 + + ✅ Yes + ✅ 是的 - apps/client/src/app/pages/pricing/pricing-page.html - 73 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 140 - apps/client/src/app/pages/pricing/pricing-page.html - 146 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 157 - apps/client/src/app/pages/pricing/pricing-page.html - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 179 - - - Community Support - 社区支持 - apps/client/src/app/pages/pricing/pricing-page.html - 90 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 196 - - - Self-hosted, update manually. - 自托管,手动更新。 - apps/client/src/app/pages/pricing/pricing-page.html - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 218 - - - Free - 自由的 - apps/client/src/app/pages/pricing/pricing-page.html - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 235 - apps/client/src/app/pages/pricing/pricing-page.html - 158 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 257 - - - For new investors who are just getting started with trading. - 适合刚开始交易的新投资者。 - apps/client/src/app/pages/pricing/pricing-page.html - 128 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 274 - - Fully managed Ghostfolio cloud offering. - 完全托管的 Ghostfolio 云产品。 + + ❌ No + ❌ 没有 - apps/client/src/app/pages/pricing/pricing-page.html - 157 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 147 - apps/client/src/app/pages/pricing/pricing-page.html - 283 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 164 - - - For ambitious investors who need the full picture of their financial assets. - 适合需要全面了解其金融资产的雄心勃勃的投资者。 - apps/client/src/app/pages/pricing/pricing-page.html - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 186 - - - Email and Chat Support - 电子邮件和聊天支持 - apps/client/src/app/pages/pricing/pricing-page.html - 279 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 203 - - - Renew Plan - 更新计划 - apps/client/src/app/components/header/header.component.html - 185 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 225 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 242 - apps/client/src/app/pages/pricing/pricing-page.html - 310 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 264 - - - One-time payment, no auto-renewal. - 一次性付款,无自动续订。 - apps/client/src/app/pages/pricing/pricing-page.html - 316 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 281 - - Get Started - 开始使用 + + Self-Hosting + 自托管 - apps/client/src/app/pages/landing/landing-page.html - 446 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 170 - - It’s free. - 免费。 + + Use anonymously + 匿名使用 - apps/client/src/app/pages/pricing/pricing-page.html - 345 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 209 - - Hello, has shared a Portfolio with you! - 你好,分享了一个投资组合给你! + + Free Plan + 免费计划 - apps/client/src/app/pages/public/public-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 248 - - Currencies - 货币 + + Starting from + 从...开始 - apps/client/src/app/pages/public/public-page.html - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 289 - - - Continents - 大陆 - apps/client/src/app/pages/public/public-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 294 - - Ghostfolio empowers you to keep track of your wealth. - Ghostfolio 使您能够跟踪您的财富。 + + year + - apps/client/src/app/pages/public/public-page.html - 215 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 290 - - - Registration - 注册 - apps/client/src/app/pages/register/register-page-routing.module.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 296 - - Continue with Internet Identity - 继续互联网身份 + + Notes + 笔记 - apps/client/src/app/pages/register/register-page.html - 42 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 302 - - Continue with Google - 继续使用谷歌 + + Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. + 请注意,在 Ghostfolio 与的比较表中提供的信息基于我们的独立研究和分析。该网站不隶属于或比较中提到的任何其他产品。随着个人理财工具格局的不断发展,直接从相应的产品页面验证任何具体的细节或变化至关重要。数据需要刷新吗?帮助我们在GitHub 上维护准确的数据。 - apps/client/src/app/pages/register/register-page.html - 53 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 311 - - Copy to clipboard - 复制到剪贴板 + + Ready to take your investments to the next level? + 准备好将您的投资提升到新的高度了吗? - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 324 - - Personal Finance Tools - 个人理财工具 + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + 使用 Ghostfolio 轻松跟踪、分析和可视化您的财富。 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 328 - - open-source-alternative-to - 开源替代方案 + + Get Started + 开始使用 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 333 + + + Personal Finance Tools + 个人理财工具 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 351 - - Open Source Alternative to - 开源替代方案 + + Switzerland + 瑞士 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 57 - - - Discover Open Source Alternatives for Personal Finance Tools - 发现个人理财工具的开源替代品 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 4 + libs/ui/src/lib/i18n.ts + 93 - - This overview page features a curated collection of personal finance tools compared to the open source alternative Ghostfolio. If you value transparency, data privacy, and community collaboration, Ghostfolio provides an excellent opportunity to take control of your financial management. - 此概述页面包含与开源替代方案相比的精选个人理财工具集合Ghostfolio。如果您重视透明度、数据隐私和社区协作,Ghostfolio 提供了一个绝佳的机会来控制您的财务管理。 + + Global + 全球的 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 58 - - - Explore the links below to compare a variety of personal finance tools with Ghostfolio. - 浏览下面的链接,将各种个人理财工具与 Ghostfolio 进行比较。 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html + libs/ui/src/lib/i18n.ts 16 - - Open Source Alternative to - 开源替代品 + + Resources + 资源 - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html - 42 + libs/common/src/lib/routes/routes.ts + 332 - - The Open Source Alternative to - 开源替代方案 + + Guides + 指南 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 8 + apps/client/src/app/pages/resources/guides/resources-guides.component.html + 4 - - Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. - 您是否正在寻找开源替代方案幽灵作品集是一个强大的投资组合管理工具,为个人提供一个全面的平台来跟踪、分析和优化他们的投资。无论您是经验丰富的投资者还是刚刚起步的投资者,Ghostfolio 都提供直观的用户界面和广泛的功能帮助您做出明智的决定并掌控您的财务未来。 + + Glossary + 词汇表 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 18 + apps/client/src/app/pages/resources/glossary/resources-glossary.component.html + 4 - - Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. - Ghostfolio 是一款开源软件 (OSS),提供了一种经济高效的替代方案使其特别适合预算紧张的个人,例如追求财务独立,提前退休(FIRE) 。通过利用开发者社区和个人理财爱好者的集体努力,Ghostfolio 不断增强其功能、安全性和用户体验。 + + Membership + 会员资格 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 32 + libs/common/src/lib/routes/routes.ts + 31 - - Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - 让我们更深入地了解 Ghostfolio 与下面的比较表可帮助您全面了解 Ghostfolio 相对于其他产品的定位。我们将探讨功能、数据隐私、定价等各个方面,让您根据个人需求做出明智的选择。 + + Access + 使用权 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 43 + libs/common/src/lib/routes/routes.ts + 26 - - Ghostfolio vs comparison table - Ghostfolio vs比较表 + + My Ghostfolio + 我的 Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 54 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 34 - - Founded - 成立 + + Oops, authentication has failed. + 糟糕,身份验证失败。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 77 + apps/client/src/app/pages/webauthn/webauthn-page.html + 19 - - Origin - 来源 + + Try again + 再试一次 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 82 + apps/client/src/app/pages/webauthn/webauthn-page.html + 27 - - Region - 地区 + + Go back to Home Page + 返回首页 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 87 + apps/client/src/app/pages/webauthn/webauthn-page.html + 33 - - Available in - 可用于 + + Do you really want to delete this account balance? + 您确实要删除该帐户余额吗? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 108 + libs/ui/src/lib/account-balances/account-balances.component.ts + 110 - - ✅ Yes - ✅ 是的 + + Import Activities + 导入活动记录 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 140 + libs/ui/src/lib/activities-table/activities-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 157 + libs/ui/src/lib/activities-table/activities-table.component.html + 371 + + + Import Dividends + 导入股息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 179 + libs/ui/src/lib/activities-table/activities-table.component.html + 29 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 196 + libs/ui/src/lib/activities-table/activities-table.component.html + 383 + + + Export Activities + 导出活动记录 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 218 + libs/ui/src/lib/activities-table/activities-table.component.html + 41 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 235 + libs/ui/src/lib/activities-table/activities-table.component.html + 396 + + + Export Drafts as ICS + 将汇票导出为 ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 257 + libs/ui/src/lib/activities-table/activities-table.component.html + 54 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 274 + libs/ui/src/lib/activities-table/activities-table.component.html + 409 - - ❌ No - ❌ 没有 + + Draft + 草稿 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 147 + libs/ui/src/lib/activities-table/activities-table.component.html + 145 + + + Clone + 克隆 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 164 + libs/ui/src/lib/activities-table/activities-table.component.html + 436 + + + Export Draft as ICS + 将汇票导出为 ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 186 + libs/ui/src/lib/activities-table/activities-table.component.html + 446 + + + Do you really want to delete this activity? + 您确实要删除此活动吗? - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 203 + libs/ui/src/lib/activities-table/activities-table.component.ts + 229 + + + Asset Profiles + 资产概况 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 225 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 106 + + + 50-Day Trend + 50 天趋势 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 242 + libs/ui/src/lib/benchmark/benchmark.component.html + 25 + + + 200-Day Trend + 200天趋势 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 264 + libs/ui/src/lib/benchmark/benchmark.component.html + 54 + + + Last All Time High + 上次历史最高纪录 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 281 + libs/ui/src/lib/benchmark/benchmark.component.html + 83 - - Self-Hosting - 自托管 + + Change from All Time High + 较历史最高纪录涨跌 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 170 + libs/ui/src/lib/benchmark/benchmark.component.html + 110 - - Use anonymously - 匿名使用 + + from ATH + 来自 ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 209 + libs/ui/src/lib/benchmark/benchmark.component.html + 112 - - Free Plan - 免费计划 + + Market data provided by + 市场数据提供者 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 248 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 - - Starting from - 从...开始 + + Savings Rate per Month + 每月储蓄率 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 289 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate + 年利率 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 294 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 - - year - + + Retirement Date + 退休日期 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 290 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount + 预计总额 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 296 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 57 - - Notes - 笔记 + + Interest + 利息 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 302 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 370 - - - Please note that the information provided in the Ghostfolio vs comparison table is based on our independent research and analysis. This website is not affiliated with 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 GitHub. - 请注意,在 Ghostfolio 与的比较表中提供的信息基于我们的独立研究和分析。该网站不隶属于或比较中提到的任何其他产品。随着个人理财工具格局的不断发展,直接从相应的产品页面验证任何具体的细节或变化至关重要。数据需要刷新吗?帮助我们在GitHub 上维护准确的数据。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 311 + libs/ui/src/lib/i18n.ts + 38 - - Ready to take your investments to the next level? - 准备好将您的投资提升到新的高度了吗? + + Savings + 储蓄 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 324 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 380 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - 使用 Ghostfolio 轻松跟踪、分析和可视化您的财富。 + + Allocation + 分配 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 328 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - - - Get Started - 开始使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 333 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 40 - - - Personal Finance Tools - 个人理财工具 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 351 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 116 - - Switzerland - 瑞士 + + Show all + 显示所有 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 58 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 197 + + + Account + 帐户 libs/ui/src/lib/i18n.ts - 93 + 4 - - Global - 全球的 + + Asia-Pacific + 亚太 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 59 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class + 资产类别 libs/ui/src/lib/i18n.ts - 16 + 6 - - Resources - 资源 + + Asset Sub Class + 资产子类别 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 50 + libs/ui/src/lib/i18n.ts + 7 - - Guides - 指南 + + Core + 核心 - apps/client/src/app/pages/resources/guides/resources-guides.component.html - 4 + libs/ui/src/lib/i18n.ts + 10 - - Glossary - 词汇表 + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + 轻松切换到 Ghostfolio Premium 或 Ghostfolio Open Source - apps/client/src/app/pages/resources/glossary/resources-glossary.component.html - 4 + libs/ui/src/lib/i18n.ts + 12 - - Membership - 会员资格 + + Switch to Ghostfolio Premium easily + 轻松切换到 Ghostfolio Premium - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 23 + libs/ui/src/lib/i18n.ts + 13 + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + 轻松切换到 Ghostfolio Open Source 或 Ghostfolio Basic - apps/client/src/app/pages/user-account/user-account-page.component.ts - 41 + libs/ui/src/lib/i18n.ts + 14 - - Access - 使用权 + + Emergency Fund + 应急基金 - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 28 + libs/ui/src/lib/i18n.ts + 15 + + + Grant + 授予 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + libs/ui/src/lib/i18n.ts + 17 - - My Ghostfolio - 我的 Ghostfolio + + Higher Risk + 风险较高 - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 33 + libs/ui/src/lib/i18n.ts + 18 - - Oops, authentication has failed. - 糟糕,身份验证失败。 + + This activity already exists. + 这项活动已经存在。 - apps/client/src/app/pages/webauthn/webauthn-page.html + libs/ui/src/lib/i18n.ts 19 - - Try again - 再试一次 + + Japan + 日本 - apps/client/src/app/pages/webauthn/webauthn-page.html - 27 + libs/ui/src/lib/i18n.ts + 86 - - Go back to Home Page - 返回首页 + + Lower Risk + 降低风险 - apps/client/src/app/pages/webauthn/webauthn-page.html - 31 + libs/ui/src/lib/i18n.ts + 20 - - Do you really want to delete this account balance? - 您确实要删除该帐户余额吗? + + Month + - libs/ui/src/lib/account-balances/account-balances.component.ts - 109 + libs/ui/src/lib/i18n.ts + 21 - - Import Activities - 导入活动记录 + + Months + 几个月 - libs/ui/src/lib/activities-table/activities-table.component.html - 9 + libs/ui/src/lib/i18n.ts + 22 + + + Other + 其他 - libs/ui/src/lib/activities-table/activities-table.component.html - 371 + libs/ui/src/lib/i18n.ts + 23 - - - Import Dividends - 导入股息 - libs/ui/src/lib/activities-table/activities-table.component.html - 29 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 400 + + + Preset + 预设 - libs/ui/src/lib/activities-table/activities-table.component.html - 383 + libs/ui/src/lib/i18n.ts + 25 - - Export Activities - 导出活动记录 + + Retirement Provision + 退休金 - libs/ui/src/lib/activities-table/activities-table.component.html - 41 + libs/ui/src/lib/i18n.ts + 26 + + + Satellite + 卫星 - libs/ui/src/lib/activities-table/activities-table.component.html - 396 + libs/ui/src/lib/i18n.ts + 27 - - Export Drafts as ICS - 将汇票导出为 ICS + + Symbol + 符号 - libs/ui/src/lib/activities-table/activities-table.component.html - 54 + libs/ui/src/lib/i18n.ts + 28 + + + Tag + 标签 - libs/ui/src/lib/activities-table/activities-table.component.html - 409 + libs/ui/src/lib/i18n.ts + 29 - - Draft - 草稿 + + Year + - libs/ui/src/lib/activities-table/activities-table.component.html - 145 + libs/ui/src/lib/i18n.ts + 30 - - Clone - 克隆 + + Years + - libs/ui/src/lib/activities-table/activities-table.component.html - 436 + libs/ui/src/lib/i18n.ts + 31 - - Export Draft as ICS - 将汇票导出为 ICS + + Buy + 买入 - libs/ui/src/lib/activities-table/activities-table.component.html - 446 + libs/ui/src/lib/i18n.ts + 35 - - Do you really want to delete this activity? - 您确实要删除此活动吗? + + Fee + 费用 - libs/ui/src/lib/activities-table/activities-table.component.ts - 229 + libs/ui/src/lib/i18n.ts + 37 - - Find holding... - 查找持有... + + Valuable + 贵重物品 - libs/ui/src/lib/assistant/assistant.component.ts - 143 + libs/ui/src/lib/i18n.ts + 39 - - No entries... - 没有条目... + + Liability + 负债 - libs/ui/src/lib/assistant/assistant.html - 62 + libs/ui/src/lib/i18n.ts + 40 + + + Sell + 卖出 - libs/ui/src/lib/assistant/assistant.html - 85 + libs/ui/src/lib/i18n.ts + 41 - - Asset Profiles - 资产概况 + + Cash + 现金 - libs/ui/src/lib/assistant/assistant.html - 67 + libs/ui/src/lib/i18n.ts + 44 - - 50-Day Trend - 50 天趋势 + + Commodity + 商品 - libs/ui/src/lib/benchmark/benchmark.component.html - 16 + libs/ui/src/lib/i18n.ts + 45 - - 200-Day Trend - 200天趋势 + + Equity + 股权 - libs/ui/src/lib/benchmark/benchmark.component.html - 45 + libs/ui/src/lib/i18n.ts + 46 - - Last All Time High - 上次历史最高纪录 + + Fixed Income + 固定收益 - libs/ui/src/lib/benchmark/benchmark.component.html - 74 + libs/ui/src/lib/i18n.ts + 47 - - Change from All Time High - 较历史最高纪录涨跌 + + Real Estate + 房地产 - libs/ui/src/lib/benchmark/benchmark.component.html - 96 + libs/ui/src/lib/i18n.ts + 49 - - from ATH - 来自 ATH + + Bond + 债券 - libs/ui/src/lib/benchmark/benchmark.component.html - 98 + libs/ui/src/lib/i18n.ts + 52 - - Market data provided by - 市场数据提供者 + + Cryptocurrency + 加密货币 - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + libs/ui/src/lib/i18n.ts + 53 - - Savings Rate per Month - 每月储蓄率 + + ETF + 交易所交易基金 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + libs/ui/src/lib/i18n.ts + 54 - - Annual Interest Rate - 年利率 + + Mutual Fund + 共同基金 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/i18n.ts + 55 - - Retirement Date - 退休日期 + + Precious Metal + 贵金属 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/i18n.ts + 56 - - Projected Total Amount - 预计总额 + + Private Equity + 私募股权 - libs/ui/src/lib/fire-calculator/fire-calculator.component.html + libs/ui/src/lib/i18n.ts 57 - - Interest - 利息 + + Stock + 股票 - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 370 + libs/ui/src/lib/i18n.ts + 58 + + + Africa + 非洲 libs/ui/src/lib/i18n.ts - 38 + 65 - - Savings - 储蓄 + + Asia + 亚洲 - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 380 + libs/ui/src/lib/i18n.ts + 66 - - Allocation - 分配 + + Europe + 欧洲 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/i18n.ts + 67 + + + North America + 北美 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 40 + libs/ui/src/lib/i18n.ts + 68 + + + Oceania + 大洋洲 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 116 + libs/ui/src/lib/i18n.ts + 69 - - Show all - 显示所有 + + South America + 南美洲 - libs/ui/src/lib/holdings-table/holdings-table.component.html - 197 + libs/ui/src/lib/i18n.ts + 70 - - Account - 帐户 + + Extreme Fear + 极度恐惧 libs/ui/src/lib/i18n.ts - 4 + 100 - - Asia-Pacific - 亚太 + + Extreme Greed + 极度贪婪 libs/ui/src/lib/i18n.ts - 5 + 101 - - Asset Class - 资产类别 + + Neutral + 中性的 libs/ui/src/lib/i18n.ts - 6 + 104 - - Asset Sub Class - 资产子类别 + + Membership + 会员资格 - libs/ui/src/lib/i18n.ts - 7 + libs/ui/src/lib/membership-card/membership-card.component.html + 37 - - Core - 核心 + + Valid until + 有效期至 - libs/ui/src/lib/i18n.ts - 10 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 74 + + + libs/ui/src/lib/membership-card/membership-card.component.html + 42 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - 轻松切换到 Ghostfolio Premium 或 Ghostfolio Open Source + + Time to add your first activity. + 是时候添加您的第一个活动了。 - libs/ui/src/lib/i18n.ts + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html 12 - - Switch to Ghostfolio Premium easily - 轻松切换到 Ghostfolio Premium + + No data available + 无可用数据 + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 402 + + + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 415 + + + + If a translation is missing, kindly support us in extending it here. + 如果翻译缺失,欢迎在这里进行扩展。 - libs/ui/src/lib/i18n.ts - 13 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 58 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - 轻松切换到 Ghostfolio Open Source 或 Ghostfolio Basic + + Date Range + 日期范围 - libs/ui/src/lib/i18n.ts - 14 + libs/ui/src/lib/assistant/assistant.html + 130 - - Emergency Fund - 应急基金 + + The current market price is + 当前市场价格为 - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 545 - - Grant - 授予 + + Test + 测试 - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 473 - - Higher Risk - 风险较高 + + Oops! Could not grant access. + 哎呀!无法授予访问权限。 - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts + 91 - - This activity already exists. - 这项活动已经存在。 + + Restricted view + 视野受限 - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/components/access-table/access-table.component.html + 26 - - - Japan - 日本 - libs/ui/src/lib/i18n.ts - 86 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 34 - - Lower Risk - 降低风险 + + Permission + 权限 - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/components/access-table/access-table.component.html + 18 - - - Month - - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 32 - - Months - 几个月 + + Private + 私人的 - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 - - Other - 其他 + + Job Queue + 作业队列 - libs/ui/src/lib/i18n.ts - 23 + libs/common/src/lib/routes/routes.ts + 46 + + + Market data is delayed for + 市场数据延迟 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts + 87 - - Preset - 预设 + + Absolute Currency Performance + 绝对货币表现 - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 145 - - Retirement Provision - 退休金 + + Absolute Net Performance + 绝对净性能 - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 192 - - Satellite - 卫星 + + Absolute Asset Performance + 绝对资产绩效 - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 102 - - Symbol - 符号 + + Investment + 投资 - libs/ui/src/lib/i18n.ts - 28 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 56 - - - Tag - 标签 - libs/ui/src/lib/i18n.ts - 29 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 72 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 86 - - Year - + + Asset Performance + 资产绩效 - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 123 - - Years - + + Net Performance + 净绩效 - libs/ui/src/lib/i18n.ts - 31 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 211 - - Buy - 买入 + + Currency Performance + 货币表现 - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 169 - - Fee - 费用 + + Year to date + 今年迄今为止 - libs/ui/src/lib/i18n.ts - 37 + libs/ui/src/lib/assistant/assistant.component.ts + 352 - - Valuable - 贵重物品 + + Week to date + 本周至今 - libs/ui/src/lib/i18n.ts - 39 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Liability - 负债 + + Month to date + 本月至今 - libs/ui/src/lib/i18n.ts - 40 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Sell - 卖出 + + MTD + 最大输运量 - libs/ui/src/lib/i18n.ts - 41 + libs/ui/src/lib/assistant/assistant.component.ts + 348 - - Cash - 现金 + + WTD + 世界贸易组织 - libs/ui/src/lib/i18n.ts - 44 + libs/ui/src/lib/assistant/assistant.component.ts + 344 - - Commodity - 商品 + + Oops! A data provider is experiencing the hiccups. + 哎呀!数据提供商遇到了问题。 - libs/ui/src/lib/i18n.ts - 45 + apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html + 8 - - Equity - 股权 + + View + 查看 - libs/ui/src/lib/i18n.ts - 46 + apps/client/src/app/components/access-table/access-table.component.html + 23 - - - Fixed Income - 固定收益 - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 36 - - Real Estate - 房地产 + + Reset Filters + 重置过滤器 - libs/ui/src/lib/i18n.ts - 49 + libs/ui/src/lib/assistant/assistant.html + 224 - - Bond - 债券 + + If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. + 如果你今天退休,你可以领取每年或者每月,根据您的总资产提款率为4%。 - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 67 - - Cryptocurrency - 加密货币 + + year + - libs/ui/src/lib/i18n.ts - 53 + libs/ui/src/lib/assistant/assistant.component.ts + 362 - - ETF - 交易所交易基金 + + years + - libs/ui/src/lib/i18n.ts - 54 + libs/ui/src/lib/assistant/assistant.component.ts + 387 - - Mutual Fund - 共同基金 + + Apply Filters + 应用过滤器 - libs/ui/src/lib/i18n.ts - 55 + libs/ui/src/lib/assistant/assistant.html + 234 - - Precious Metal - 贵金属 + + self-hosting + 自托管 + kebab-case - libs/ui/src/lib/i18n.ts - 56 + libs/common/src/lib/routes/routes.ts + 243 - - - Private Equity - 私募股权 - libs/ui/src/lib/i18n.ts - 57 + libs/common/src/lib/routes/routes.ts + 246 - - Stock - 股票 + + Self-Hosting + 自托管 - libs/ui/src/lib/i18n.ts - 58 + apps/client/src/app/pages/faq/faq-page.component.ts + 49 - - - Africa - 非洲 - libs/ui/src/lib/i18n.ts - 65 + libs/common/src/lib/routes/routes.ts + 248 - - Asia - 亚洲 + + Data Gathering + 数据收集 - libs/ui/src/lib/i18n.ts - 66 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 541 - - - Europe - 欧洲 - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/components/admin-overview/admin-overview.html + 60 - - North America - 北美 + + General + 一般的 - libs/ui/src/lib/i18n.ts - 68 + apps/client/src/app/pages/faq/faq-page.component.ts + 38 - - Oceania - 大洋洲 + + Cloud + - libs/ui/src/lib/i18n.ts - 69 + apps/client/src/app/pages/faq/faq-page.component.ts + 43 - - - South America - 南美洲 - libs/ui/src/lib/i18n.ts - 70 + libs/common/src/lib/routes/routes.ts + 240 - - Extreme Fear - 极度恐惧 + + Oops! It looks like you’re making too many requests. Please slow down a bit. + 哎呀!看来您提出了太多要求。请慢一点。 - libs/ui/src/lib/i18n.ts - 100 + apps/client/src/app/core/http-response.interceptor.ts + 106 - - Extreme Greed - 极度贪婪 + + My Account + 我的账户 - libs/ui/src/lib/i18n.ts - 101 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Neutral - 中性的 + + Closed + 已关闭 - libs/ui/src/lib/i18n.ts - 104 + apps/client/src/app/components/home-holdings/home-holdings.component.ts + 38 - - Membership - 会员资格 + + Active + 活跃 - libs/ui/src/lib/membership-card/membership-card.component.html + apps/client/src/app/components/home-holdings/home-holdings.component.ts 37 - - Valid until - 有效期至 + + Activity + 活动 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 34 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 222 + + + Dividend Yield + 股息收益率 - libs/ui/src/lib/membership-card/membership-card.component.html - 42 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 190 - - Time to add your first activity. - 是时候添加您的第一个活动了。 + + Execute Job + 执行作业 - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 176 - - No data available - 无可用数据 + + Priority + 优先级 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 64 + + + This action is not allowed. + 不允许执行此操作。 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + apps/client/src/app/core/http-response.interceptor.ts + 67 - - If a translation is missing, kindly support us in extending it here. - 如果翻译缺失,欢迎在这里进行扩展。 + + Liquidity + 流动性 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 58 + libs/ui/src/lib/i18n.ts + 48 - - Date Range - 日期范围 + + {VAR_PLURAL, plural, =1 {activity} other {activities}} + {VAR_PLURAL, plural, =1 {活动} other {活动}} - libs/ui/src/lib/assistant/assistant.html - 95 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 14 - - The current market price is - 当前市场价格为 + + Buy and sell + 买入和卖出 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 536 + libs/ui/src/lib/i18n.ts + 8 - - Test - 测试 + + Delete Activities + 删除活动 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 473 + libs/ui/src/lib/activities-table/activities-table.component.html + 67 - - Oops! Could not grant access. - 哎呀!无法授予访问权限。 + + Internationalization + 国际化 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts - 91 + libs/common/src/lib/routes/routes.ts + 119 - - Restricted view - 视野受限 + + Do you really want to close your Ghostfolio account? + 您确定要关闭您的 Ghostfolio 账户吗? - apps/client/src/app/components/access-table/access-table.component.html - 26 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 174 + + + Danger Zone + 危险区域 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 34 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 272 - - Permission - 权限 + + Close Account + 关闭账户 - apps/client/src/app/components/access-table/access-table.component.html - 18 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 307 + + + By ETF Holding + 按 ETF 持仓 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 333 - - Private - 私人的 + + Approximation based on the top holdings of each ETF + 基于每个 ETF 的主要持仓的近似值 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + apps/client/src/app/pages/portfolio/allocations/allocations-page.html + 340 - - Job Queue - 作业队列 + + Join now or check out the example account + 立即加入 或查看示例账户 - apps/client/src/app/pages/admin/admin-page-routing.module.ts - 25 + apps/client/src/app/pages/landing/landing-page.html + 434 + + + Oops! There was an error setting up biometric authentication. + 哎呀!设置生物识别认证时发生错误。 - apps/client/src/app/pages/admin/admin-page.component.ts - 43 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 302 - - Market data is delayed for - 市场数据延迟 + + Show more + 显示更多 - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts - 87 + libs/ui/src/lib/top-holdings/top-holdings.component.html + 174 - - Absolute Currency Performance - 绝对货币表现 + + Benchmarks + 基准 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 145 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 81 - - Absolute Net Performance - 绝对净性能 + + Delete Profiles + 删除配置文件 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 192 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 243 - - Absolute Asset Performance - 绝对资产绩效 + + Do you really want to delete these profiles? + 您确定要删除这些配置文件吗? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 102 + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts + 68 - - Investment - 投资 + + Oops! Could not delete profiles. + 哎呀!无法删除配置文件。 - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 56 + + + Table + 表格 - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 72 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 87 + apps/client/src/app/components/home-holdings/home-holdings.html + 16 - - Asset Performance - 资产绩效 + + Chart + 图表 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 123 + apps/client/src/app/components/home-holdings/home-holdings.html + 19 - - Net Performance - 净绩效 + + Would you like to refine your personal investment strategy? + 您想 优化 您的 个人投资策略吗? - apps/client/src/app/pages/portfolio/analysis/analysis-page.html + apps/client/src/app/pages/public/public-page.html 211 - - Currency Performance - 货币表现 + + Alternative + 另类 - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 80 - - Year to date - 今年迄今为止 + + App + 应用 - libs/ui/src/lib/assistant/assistant.component.ts - 230 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 81 - - Week to date - 本周至今 + + Budgeting + 预算管理 - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 82 - - Month to date - 本月至今 + + Community + 社区 - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 83 - - MTD - 最大输运量 + + Family Office + 家族办公室 - libs/ui/src/lib/assistant/assistant.component.ts - 226 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 84 - - WTD - 世界贸易组织 + + Investor + 投资者 - libs/ui/src/lib/assistant/assistant.component.ts - 222 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 87 - - Oops! A data provider is experiencing the hiccups. - 哎呀!数据提供商遇到了问题。 + + Open Source + 开源 - apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 88 - - View - 查看 - - apps/client/src/app/components/access-table/access-table.component.html - 23 - + + Personal Finance + 个人理财 - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 36 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 90 - - Reset Filters - 重置过滤器 + + Privacy + 隐私 - libs/ui/src/lib/assistant/assistant.html - 187 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 91 - - If you retire today, you would be able to withdraw per year or per month, based on your total assets of and a withdrawal rate of 4%. - 如果你今天退休,你可以领取每年或者每月,根据您的总资产提款率为4%。 - - apps/client/src/app/pages/portfolio/fire/fire-page.html - 67 + + Software + 软件 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 93 - - year - + + Tool + 工具 - libs/ui/src/lib/assistant/assistant.component.ts - 234 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 94 - - years - + + User Experience + 用户体验 - libs/ui/src/lib/assistant/assistant.component.ts - 256 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 95 - - Apply Filters - 应用过滤器 + + Wealth + 财富 - libs/ui/src/lib/assistant/assistant.html - 197 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 96 - - self-hosting - 自托管 + + Wealth Management + 财富管理 - apps/client/src/app/pages/faq/faq-page.component.ts - 49 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts + 97 - - FAQ - 常见问题 + + Australia + 澳大利亚 - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 74 + + + Austria + 奥地利 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 75 - - Self-Hosting - 自托管 + + Belgium + 比利时 - apps/client/src/app/pages/faq/faq-page.component.ts - 48 + libs/ui/src/lib/i18n.ts + 76 + + + Bulgaria + 保加利亚 - apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 78 - - Data Gathering - 数据收集 + + Canada + 加拿大 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 541 + libs/ui/src/lib/i18n.ts + 79 + + + Czech Republic + 捷克共和国 - apps/client/src/app/components/admin-overview/admin-overview.html - 60 + libs/ui/src/lib/i18n.ts + 80 - - General - 一般的 + + Finland + 芬兰 - apps/client/src/app/pages/faq/faq-page.component.ts - 37 + libs/ui/src/lib/i18n.ts + 81 - - Cloud - + + France + 法国 - apps/client/src/app/pages/faq/faq-page.component.ts - 42 + libs/ui/src/lib/i18n.ts + 82 + + + Germany + 德国 - apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts - 13 + libs/ui/src/lib/i18n.ts + 83 - - Oops! It looks like you’re making too many requests. Please slow down a bit. - 哎呀!看来您提出了太多要求。请慢一点。 + + India + 印度 - apps/client/src/app/core/http-response.interceptor.ts - 103 + libs/ui/src/lib/i18n.ts + 84 - - My Account - 我的账户 + + Italy + 意大利 - apps/client/src/app/pages/i18n/i18n-page.html - 13 + libs/ui/src/lib/i18n.ts + 85 - - Closed - 已关闭 + + Netherlands + 荷兰 - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 37 + libs/ui/src/lib/i18n.ts + 87 - - Active - 活跃 + + New Zealand + 新西兰 - apps/client/src/app/components/home-holdings/home-holdings.component.ts - 36 + libs/ui/src/lib/i18n.ts + 88 - - Activity - 活动 + + Poland + 波兰 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 207 + libs/ui/src/lib/i18n.ts + 89 - - Dividend Yield - 股息收益率 + + Romania + 罗马尼亚 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 175 + libs/ui/src/lib/i18n.ts + 90 - - Execute Job - 执行作业 + + South Africa + 南非 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 176 + libs/ui/src/lib/i18n.ts + 92 - - Priority - 优先级 + + Thailand + 泰国 - apps/client/src/app/components/admin-jobs/admin-jobs.html - 64 + libs/ui/src/lib/i18n.ts + 94 - - This action is not allowed. - 不允许执行此操作。 + + United States + 美国 - apps/client/src/app/core/http-response.interceptor.ts - 64 + libs/ui/src/lib/i18n.ts + 97 - - Liquidity - 流动性 + + Error + 错误 - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 536 - - {VAR_PLURAL, plural, =1 {activity} other {activities}} - {VAR_PLURAL, plural, =1 {活动} other {活动}} + + Deactivate + 停用 - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 14 + apps/client/src/app/components/rule/rule.component.html + 72 - - Buy and sell - 买入和卖出 + + Activate + 激活 - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/components/rule/rule.component.html + 74 - - Delete Activities - 删除活动 + + Inactive + 非活跃 - libs/ui/src/lib/activities-table/activities-table.component.html - 67 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 232 - - Internationalization - 国际化 + + Cancel + 取消 + + libs/ui/src/lib/i18n.ts + 9 + + + + Close + 关闭 - apps/client/src/app/app-routing.module.ts - 88 + libs/ui/src/lib/i18n.ts + 11 - - Do you really want to close your Ghostfolio account? - 您确定要关闭您的 Ghostfolio 账户吗? + + Yes + - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 174 + libs/ui/src/lib/i18n.ts + 32 - - Danger Zone - 危险区域 + + Copy link to clipboard + 复制链接到剪贴板 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 272 + apps/client/src/app/components/access-table/access-table.component.html + 70 - - Close Account - 关闭账户 + + Portfolio Snapshot + 投资组合快照 - apps/client/src/app/components/user-account-settings/user-account-settings.html - 307 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 39 - - By ETF Holding - 按 ETF 持仓 + + Change with currency effect Change + 含货币影响的涨跌 涨跌 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 333 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 61 - - Approximation based on the top holdings of each ETF - 基于每个 ETF 的主要持仓的近似值 + + Performance with currency effect Performance + 含货币影响的表现 表现 - apps/client/src/app/pages/portfolio/allocations/allocations-page.html - 340 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 80 - - Join now or check out the example account - 立即加入 或查看示例账户 + + Threshold Min + 最小阈值 - apps/client/src/app/pages/landing/landing-page.html - 434 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 54 - - Oops! There was an error setting up biometric authentication. - 哎呀!设置生物识别认证时发生错误。 + + Threshold Max + 最大阈值 - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 302 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 92 - - Show more - 显示更多 + + Close + 自定义 - libs/ui/src/lib/top-holdings/top-holdings.component.html - 174 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 129 - - Benchmarks - 基准 + + Customize + 自定义 - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 81 + apps/client/src/app/components/rule/rule.component.html + 67 - - Delete Profiles - 删除配置文件 + + No auto-renewal. + 不自动续订。 - apps/client/src/app/components/admin-market-data/admin-market-data.html - 243 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 70 - - Do you really want to delete these profiles? - 您确定要删除这些配置文件吗? + + Today + 今天 - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 68 + apps/client/src/app/pages/public/public-page.html + 24 - - Oops! Could not delete profiles. - 哎呀!无法删除配置文件。 + + This year + 今年 - apps/client/src/app/components/admin-market-data/admin-market-data.service.ts - 56 + apps/client/src/app/pages/public/public-page.html + 42 - - Table - 表格 + + From the beginning + 从头开始 - apps/client/src/app/components/home-holdings/home-holdings.html - 16 + apps/client/src/app/pages/public/public-page.html + 60 - - Chart - 图表 + + Oops! Invalid currency. + 哎呀!无效的货币。 - apps/client/src/app/components/home-holdings/home-holdings.html - 19 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 49 - - Would you like to refine your personal investment strategy? - 您想 优化 您的 个人投资策略吗? + + This page has been archived. + 此页面已存档。 - apps/client/src/app/pages/public/public-page.html - 211 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 14 - - Alternative - 另类 + + is Open Source Software + 是开源软件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 139 - - App - 应用 + + is not Open Source Software + 不是开源软件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 146 - - Budgeting - 预算管理 + + is Open Source Software + 是开源软件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 83 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 156 - - Community - 社区 + + is not Open Source Software + 不是开源软件 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 163 - - Family Office - 家族办公室 + + can be self-hosted + 可以自托管 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 178 - - Investor - 投资者 + + cannot be self-hosted + 无法自托管 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 88 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 185 - - Open Source - 开源 + + can be self-hosted + 可以自托管 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 195 - - Personal Finance - 个人理财 + + cannot be self-hosted + 无法自托管 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 202 - - Privacy - 隐私 + + can be used anonymously + 可以匿名使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 92 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 217 - - Software - 软件 + + cannot be used anonymously + 无法匿名使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 94 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 224 - - Tool - 工具 + + can be used anonymously + 可以匿名使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 95 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 234 - - User Experience - 用户体验 + + cannot be used anonymously + 无法匿名使用 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 96 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 241 - - Wealth - 财富 + + offers a free plan + 提供免费计划 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 97 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 256 - - Wealth Management - 财富管理 + + does not offer a free plan + 不提供免费计划 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts - 98 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 263 - - Australia - 澳大利亚 + + offers a free plan + 提供免费计划 - libs/ui/src/lib/i18n.ts - 74 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 273 - - Austria - 奥地利 + + does not offer a free plan + 不提供免费计划 - libs/ui/src/lib/i18n.ts - 75 + apps/client/src/app/pages/resources/personal-finance-tools/product-page.html + 280 - - Belgium - 比利时 + + Oops! Could not find any assets. + 哎呀!找不到任何资产。 - libs/ui/src/lib/i18n.ts - 76 + libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html + 40 - - Bulgaria - 保加利亚 + + Data Providers + 数据提供者 - libs/ui/src/lib/i18n.ts - 78 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 4 - - Canada - 加拿大 + + Set API key + 设置 API 密钥 - libs/ui/src/lib/i18n.ts - 79 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 171 - - Czech Republic - 捷克共和国 + + Get access to 80’000+ tickers from over 50 exchanges + 获取来自 50 多个交易所的 80,000+ 股票代码访问权限 libs/ui/src/lib/i18n.ts - 80 + 24 - - Finland - 芬兰 + + Ukraine + 乌克兰 libs/ui/src/lib/i18n.ts - 81 + 95 - - France - 法国 + + Join now + 立即加入 - libs/ui/src/lib/i18n.ts - 82 + apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html + 110 - - Germany - 德国 + + Glossary + 词汇表 - libs/ui/src/lib/i18n.ts - 83 + apps/client/src/app/pages/resources/resources-page.component.ts + 35 - - - India - 印度 - libs/ui/src/lib/i18n.ts - 84 + libs/common/src/lib/routes/routes.ts + 293 - - Italy - 意大利 + + Guides + 指南 - libs/ui/src/lib/i18n.ts - 85 + apps/client/src/app/pages/resources/resources-page.component.ts + 24 - - - Netherlands - 荷兰 - libs/ui/src/lib/i18n.ts - 87 + libs/common/src/lib/routes/routes.ts + 301 - - New Zealand - 新西兰 + + guides + 指南 + kebab-case - libs/ui/src/lib/i18n.ts - 88 + libs/common/src/lib/routes/routes.ts + 296 - - - Poland - 波兰 - libs/ui/src/lib/i18n.ts - 89 + libs/common/src/lib/routes/routes.ts + 299 - - Romania - 罗马尼亚 + + glossary + 词汇表 + kebab-case - libs/ui/src/lib/i18n.ts - 90 + libs/common/src/lib/routes/routes.ts + 288 - - - South Africa - 南非 - libs/ui/src/lib/i18n.ts - 92 + libs/common/src/lib/routes/routes.ts + 291 - - Thailand - 泰国 + + Threshold range + 阈值范围 - libs/ui/src/lib/i18n.ts - 94 + apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html + 9 - - United States - 美国 + + Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. + Ghostfolio X-ray 使用静态分析来发现您投资组合中的潜在问题和风险。调整以下规则并设置自定义阈值,使其与您的个人投资策略保持一致。 - libs/ui/src/lib/i18n.ts - 97 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 5 - - Error - 错误 + + Economic Market Cluster Risks + 经济市场集群风险 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 527 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 165 - - Deactivate - 停用 + + of + - apps/client/src/app/components/rule/rule.component.html - 72 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 135 - - Activate - 激活 + + daily requests + 每日请求 - apps/client/src/app/components/rule/rule.component.html - 74 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 137 - - Inactive - 非活跃 + + Remove API key + 移除 API 密钥 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 232 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 161 - - Cancel - 取消 + + Do you really want to delete the API key? + 您确定要删除此 API 密钥吗? - libs/ui/src/lib/i18n.ts - 9 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 94 - - Close - 关闭 - - libs/ui/src/lib/i18n.ts - 11 + + Please enter your Ghostfolio API key: + 请输入您的 Ghostfolio API 密钥: + + apps/client/src/app/pages/api/api-page.component.ts + 41 - - Yes - + + API Requests Today + 今日 API 请求数 - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/components/admin-users/admin-users.html + 178 - - Copy link to clipboard - 复制链接到剪贴板 + + Could not generate an API key + 无法生成 API 密钥 - apps/client/src/app/components/access-table/access-table.component.html - 70 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 128 - - Portfolio Snapshot - 投资组合快照 + + Set this API key in your self-hosted environment: + 在您的自托管环境中设置此 API 密钥: - apps/client/src/app/components/admin-jobs/admin-jobs.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 143 - - Change with currency effect Change - 含货币影响的涨跌 涨跌 + + Ghostfolio Premium Data Provider API Key + Ghostfolio Premium 数据提供者 API 密钥 - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 50 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 146 - - Performance with currency effect Performance - 含货币影响的表现 表现 + + Do you really want to generate a new API key? + 您确定要生成新的 API 密钥吗? - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 69 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 151 - - Threshold Min - 最小阈值 + + Tag + 标签 - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 54 + libs/ui/src/lib/assistant/assistant.html + 194 - - Threshold Max - 最大阈值 + + API Key + API 密钥 - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 92 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 - - Close - 自定义 + + Generate Ghostfolio Premium Data Provider API key for self-hosted environments... + 为自托管环境生成 Ghostfolio Premium 数据提供者 API 密钥... - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 129 + libs/ui/src/lib/membership-card/membership-card.component.html + 26 - - Customize - 自定义 + + out of + / - apps/client/src/app/components/rule/rule.component.html - 67 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 56 - - No auto-renewal. - 不自动续订。 + + rules align with your portfolio. + 条规则与您的投资组合一致。 - apps/client/src/app/components/user-account-membership/user-account-membership.html - 70 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 58 - - Today - 今天 + + Save + 保存 - apps/client/src/app/pages/public/public-page.html - 24 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts + 62 - - This year - 今年 + + Asset Class Cluster Risks + 资产类别集群风险 - apps/client/src/app/pages/public/public-page.html - 42 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 117 - - From the beginning - 从头开始 + + Me + - apps/client/src/app/pages/public/public-page.html - 60 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 187 - - Oops! Invalid currency. - 哎呀!无效的货币。 + + Received Access + 已获得访问权限 - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 49 + apps/client/src/app/components/user-account-access/user-account-access.html + 53 - - This page has been archived. - 此页面已存档。 + + Please enter your Ghostfolio API key. + 请输入您的 Ghostfolio API 密钥。 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 14 + apps/client/src/app/components/admin-settings/admin-settings.component.ts + 113 - - is Open Source Software - 是开源软件 + + AI prompt has been copied to the clipboard + AI 提示已复制到剪贴板 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 139 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 173 - - is not Open Source Software - 不是开源软件 + + Link has been copied to the clipboard + 链接已复制到剪贴板 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 146 + apps/client/src/app/components/access-table/access-table.component.ts + 65 - - is Open Source Software - 是开源软件 + + Regional Market Cluster Risks + 区域市场集群风险 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 156 + apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html + 189 - - is not Open Source Software - 不是开源软件 + + Lazy + 延迟 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 163 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be self-hosted - 可以自托管 + + Instant + 即时 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 178 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be self-hosted - 无法自托管 + + Default Market Price + 默认市场价格 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 185 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 386 - - can be self-hosted - 可以自托管 + + Mode + 模式 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 195 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 423 - - cannot be self-hosted - 无法自托管 + + Selector + 选择器 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 202 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 439 - - can be used anonymously - 可以匿名使用 + + HTTP Request Headers + HTTP 请求标头 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 217 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 399 - - cannot be used anonymously - 无法匿名使用 + + end of day + 收盘 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 224 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 140 - - can be used anonymously - 可以匿名使用 + + real-time + 实时 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 234 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 144 - - cannot be used anonymously - 无法匿名使用 + + Open Duck.ai + 打开 Duck.ai - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 241 + apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts + 174 - - offers a free plan - 提供免费计划 + + Create + 创建 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 256 + libs/ui/src/lib/tags-selector/tags-selector.component.html + 50 - - does not offer a free plan - 不提供免费计划 + + Market Data + 市场数据 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 263 + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 390 - - offers a free plan - 提供免费计划 + + Change + 涨跌 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 273 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - does not offer a free plan - 不提供免费计划 + + Performance + 表现 - apps/client/src/app/pages/resources/personal-finance-tools/product-page.html - 280 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 365 - - - Oops! Could not find any assets. - 哎呀!找不到任何资产。 - libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html - 40 + libs/ui/src/lib/treemap-chart/treemap-chart.component.ts + 378 - - Data Providers - 数据提供者 + + Copy portfolio data to clipboard for AI prompt + 复制投资组合数据到剪贴板以供 AI 提示使用 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 4 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 42 - - Set API key - 设置 API 密钥 + + Copy AI prompt to clipboard for analysis + 复制 AI 提示到剪贴板进行分析 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 87 + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 67 - - Get access to 80’000+ tickers from over 50 exchanges - 获取来自 50 多个交易所的 80,000+ 股票代码访问权限 + + Armenia + 亚美尼亚 libs/ui/src/lib/i18n.ts - 24 + 73 - - Ukraine - 乌克兰 + + British Virgin Islands + 英属维尔京群岛 libs/ui/src/lib/i18n.ts - 95 + 77 - - Join now - 立即加入 + + Singapore + 新加坡 - apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html - 110 + libs/ui/src/lib/i18n.ts + 91 - - Glossary - 词汇表 - - apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts - 10 - + + Terms and Conditions + 条款和条件 - apps/client/src/app/pages/resources/resources-page.component.ts - 32 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 15 - - Guides - 指南 - - apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts - 10 - + + Please keep your security token safe. If you lose it, you will not be able to recover your account. + 请妥善保管您的安全令牌。如果您丢失它,将无法恢复您的账户。 - apps/client/src/app/pages/resources/resources-page.component.ts - 22 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 18 - - guides - 指南 - snake-case - - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 23 - + + I understand that if I lose my security token, I cannot recover my account + 我理解如果我丢失了安全令牌,将无法恢复我的账户 - apps/client/src/app/pages/resources/resources-page-routing.module.ts + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 28 - - glossary - 词汇表 - snake-case + + Continue + 继续 - apps/client/src/app/pages/resources/overview/resources-overview.component.ts - 41 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 57 + + + Here is your security token. It is only visible once, please store and keep it in a safe place. + 这是您的安全令牌。它仅显示一次,请妥善保管。 - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 21 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 67 - - Threshold range - 阈值范围 + + Security token + 安全令牌 - apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html - 9 + apps/client/src/app/components/admin-users/admin-users.component.ts + 163 - - - Ghostfolio X-ray uses static analysis to uncover potential issues and risks in your portfolio. Adjust the rules below and set custom thresholds to align with your personal investment strategy. - Ghostfolio X-ray 使用静态分析来发现您投资组合中的潜在问题和风险。调整以下规则并设置自定义阈值,使其与您的个人投资策略保持一致。 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 5 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 145 - - Economic Market Cluster Risks - 经济市场集群风险 + + Do you really want to generate a new security token for this user? + 您确定要为此用户生成新的安全令牌吗? - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 165 + apps/client/src/app/components/admin-users/admin-users.component.ts + 168 - - of - + + Generate Security Token + 生成安全令牌 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 44 + apps/client/src/app/components/admin-users/admin-users.html + 249 - - daily requests - 每日请求 + + United Kingdom + 英国 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 46 + libs/ui/src/lib/i18n.ts + 96 - - Remove API key - 移除 API 密钥 + + Terms of Service + 服务条款 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 76 + apps/client/src/app/app.component.html + 112 - - Do you really want to delete the API key? - 您确定要删除此 API 密钥吗? + + terms-of-service + 服务条款 + kebab-case - apps/client/src/app/components/admin-settings/admin-settings.component.ts - 103 + libs/common/src/lib/routes/routes.ts + 212 + + + libs/common/src/lib/routes/routes.ts + 215 - - Please enter your Ghostfolio API key: - 请输入您的 Ghostfolio API 密钥: + + Terms of Service + 服务条款 - apps/client/src/app/pages/api/api-page.component.ts - 41 + libs/common/src/lib/routes/routes.ts + 217 - - I have an API key - 我有一个 API 密钥 + + Terms of Service + 服务条款 - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 39 + apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html + 4 - - API Requests Today - 今日 API 请求数 + + and I agree to the Terms of Service. + 我同意 服务条款 - apps/client/src/app/components/admin-users/admin-users.html - 178 + apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html + 34 - - Could not generate an API key - 无法生成 API 密钥 + + () is already in use. + () 已在使用中。 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 127 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 472 - - Set this API key in your self-hosted environment: - 在您的自托管环境中设置此 API 密钥: + + An error occurred while updating to (). + 在更新到 () 时发生错误。 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 142 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 480 - - Ghostfolio Premium Data Provider API Key - Ghostfolio Premium 数据提供者 API 密钥 + + Apply + 应用 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 145 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 138 - - Do you really want to generate a new API key? - 您确定要生成新的 API 密钥吗? + + with API access for + 包含 API 访问权限,适用于 - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 150 + apps/client/src/app/pages/pricing/pricing-page.html + 252 - - Tag - 标签 + + Gather Recent Historical Market Data + 收集近期历史市场数据 - libs/ui/src/lib/assistant/assistant.html - 157 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 226 - - API Key - API 密钥 + + Gather All Historical Market Data + 收集所有历史市场数据 - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 231 - - Generate Ghostfolio Premium Data Provider API key for self-hosted environments... - 为自托管环境生成 Ghostfolio Premium 数据提供者 API 密钥... + + Gather Historical Market Data + 收集历史市场数据 - libs/ui/src/lib/membership-card/membership-card.component.html - 26 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 29 - - out of - / + + Data Gathering is off + 数据收集已关闭 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 56 + apps/client/src/app/components/admin-market-data/admin-market-data.html + 38 - - rules align with your portfolio. - 条规则与您的投资组合一致。 + + Performance Calculation + 绩效计算 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 58 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 31 - - Save - 保存 + + someone + 某人 - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts - 62 + apps/client/src/app/pages/public/public-page.component.ts + 33 - - Asset Class Cluster Risks - 资产类别集群风险 + + Add asset to watchlist + 添加资产到关注列表 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 117 + apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html + 7 - - Me - + + Watchlist + 关注列表 - apps/client/src/app/components/user-account-access/user-account-access.component.ts - 135 + apps/client/src/app/components/home-watchlist/home-watchlist.html + 4 - - - Received Access - 已获得访问权限 - apps/client/src/app/components/user-account-access/user-account-access.html - 3 + apps/client/src/app/pages/features/features-page.html + 197 - - Please enter your Ghostfolio API key. - 请输入您的 Ghostfolio API 密钥。 + + Watchlist + 关注列表 - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.component.ts - 57 + libs/common/src/lib/routes/routes.ts + 110 - - AI prompt has been copied to the clipboard - AI 提示已复制到剪贴板 + + Do you really want to delete this item? + 您确定要删除此项目吗? - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 173 + libs/ui/src/lib/benchmark/benchmark.component.ts + 132 - - Link has been copied to the clipboard - 链接已复制到剪贴板 + + Log out + 登出 - apps/client/src/app/components/access-table/access-table.component.ts - 65 + apps/client/src/app/components/header/header.component.html + 329 - - Early Access - 抢先体验 + + Calculations are based on delayed market data and may not be displayed in real-time. + 计算基于延迟的市场数据,可能无法实时显示。 - apps/client/src/app/components/admin-settings/admin-settings.component.html - 27 + apps/client/src/app/components/home-market/home-market.html + 43 - - - Regional Market Cluster Risks - 区域市场集群风险 - apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html - 189 + apps/client/src/app/components/markets/markets.html + 52 - - Lazy - 延迟 + + changelog + 变更日志 + kebab-case - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + libs/common/src/lib/routes/routes.ts + 180 + + + libs/common/src/lib/routes/routes.ts + 183 - - Instant - 即时 + + Demo user account has been synced. + 演示用户账户已同步。 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 223 - - Default Market Price - 默认市场价格 + + Sync Demo User Account + 同步演示用户账户 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 386 + apps/client/src/app/components/admin-overview/admin-overview.html + 181 - - Mode - 模式 + + Emergency Fund: Set up + 应急资金:设置 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 423 + apps/client/src/app/pages/i18n/i18n-page.html + 81 - - Selector - 选择器 + + No emergency fund has been set up + 未设置应急资金 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 439 + apps/client/src/app/pages/i18n/i18n-page.html + 82 - - HTTP Request Headers - HTTP 请求标头 + + An emergency fund has been set up + 已设置应急资金 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 399 + apps/client/src/app/pages/i18n/i18n-page.html + 85 - - end of day - 收盘 + + Fee Ratio + 费率 - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 88 - - real-time - 实时 + + The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + 费用超过了您初始投资的 ${thresholdMax}% (${feeRatio}%) - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 142 + apps/client/src/app/pages/i18n/i18n-page.html + 89 - - Open Duck.ai - 打开 Duck.ai + + The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) + 费用未超过您初始投资的 ${thresholdMax}% (${feeRatio}%) - apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 174 + apps/client/src/app/pages/i18n/i18n-page.html + 93 - - Create - 创建 + + Name + 名称 - libs/ui/src/lib/tags-selector/tags-selector.component.html - 50 + libs/ui/src/lib/benchmark/benchmark.component.html + 11 - - Market Data - 市场数据 + + Find holding or page... + 查找持仓或页面... - apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 374 + libs/ui/src/lib/assistant/assistant.component.ts + 155 - - Change - 涨跌 + + Quick Links + 快速链接 - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 43 - - Performance - 表现 + + Asset Profiles + 资产概况 - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + libs/ui/src/lib/assistant/assistant.html + 99 + + + Live Demo + Live Demo - libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + libs/common/src/lib/routes/routes.ts + 231 - - Copy portfolio data to clipboard for AI prompt - 复制投资组合数据到剪贴板以供 AI 提示使用 + + Open Source Alternative to + Open Source Alternative to - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 42 + libs/common/src/lib/routes/routes.ts + 326 - - Copy AI prompt to clipboard for analysis - 复制 AI 提示到剪贴板进行分析 + + Single Account + Single Account - apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 67 + apps/client/src/app/pages/i18n/i18n-page.html + 24 - - Armenia - 亚美尼亚 + + Your net worth is managed by a single account + Your net worth is managed by a single account - libs/ui/src/lib/i18n.ts - 73 + apps/client/src/app/pages/i18n/i18n-page.html + 25 - - British Virgin Islands - 英属维尔京群岛 + + Your net worth is managed by ${accountsLength} accounts + Your net worth is managed by ${accountsLength} accounts - libs/ui/src/lib/i18n.ts - 77 + apps/client/src/app/pages/i18n/i18n-page.html + 28 - - Singapore - 新加坡 + + Holdings + Holdings - libs/ui/src/lib/i18n.ts - 91 + libs/ui/src/lib/assistant/assistant.html + 69 - - Terms and Conditions - 条款和条件 + + personal-finance-tools + personal-finance-tools + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 15 + libs/common/src/lib/routes/routes.ts + 312 - - - Please keep your security token safe. If you lose it, you will not be able to recover your account. - 请妥善保管您的安全令牌。如果您丢失它,将无法恢复您的账户。 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 18 + libs/common/src/lib/routes/routes.ts + 315 - - - I understand that if I lose my security token, I cannot recover my account - 我理解如果我丢失了安全令牌,将无法恢复我的账户 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 28 + libs/common/src/lib/routes/routes.ts + 323 - - Continue - 继续 + + markets + markets + kebab-case - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 57 + libs/common/src/lib/routes/routes.ts + 304 - - - Here is your security token. It is only visible once, please store and keep it in a safe place. - 这是您的安全令牌。它仅显示一次,请妥善保管。 - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 67 + libs/common/src/lib/routes/routes.ts + 307 - - Security token - 安全令牌 + + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. + Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide. - apps/client/src/app/components/admin-users/admin-users.component.ts - 163 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 15 - - Do you really want to generate a new security token for this user? - 您确定要为此用户生成新的安全令牌吗? + + Get Access + Get Access - apps/client/src/app/components/admin-users/admin-users.component.ts - 168 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 27 - - Generate Security Token - 生成安全令牌 + + Learn more + Learn more - apps/client/src/app/components/admin-users/admin-users.html - 249 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 38 - - United Kingdom - 英国 + + new + new - libs/ui/src/lib/i18n.ts - 96 + apps/client/src/app/components/admin-settings/admin-settings.component.html + 67 - - Terms of Service - 服务条款 + + Limited Offer! + Limited Offer! - apps/client/src/app/app.component.html - 112 + apps/client/src/app/pages/pricing/pricing-page.html + 311 - - terms-of-service - 服务条款 - snake-case + + Get extra + Get extra - apps/client/src/app/app.component.ts - 80 + apps/client/src/app/pages/pricing/pricing-page.html + 313 + + + Available + Available - apps/client/src/app/core/paths.ts - 11 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 3 + + + Unavailable + Unavailable - apps/client/src/app/pages/about/about-page.component.ts - 72 + apps/client/src/app/components/data-provider-status/data-provider-status.component.html + 5 + + + new + new - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts - 34 + apps/client/src/app/pages/admin/admin-page.component.ts + 37 - - Terms of Service - 服务条款 + + Investment + Investment - apps/client/src/app/pages/about/about-page.component.ts - 71 + apps/client/src/app/pages/i18n/i18n-page.html + 14 + + + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page-routing.module.ts - 13 + apps/client/src/app/pages/i18n/i18n-page.html + 15 - - Terms of Service - 服务条款 + + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 19 - - and I agree to the Terms of Service. - 我同意 服务条款 + + Equity + Equity - apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 31 - - () is already in use. - () 已在使用中。 + + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 462 + apps/client/src/app/pages/i18n/i18n-page.html + 32 - - An error occurred while updating to (). - 在更新到 () 时发生错误。 + + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% + The equity contribution of your current investment (${equityValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 470 + apps/client/src/app/pages/i18n/i18n-page.html + 36 - - Apply - 应用 + + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The equity contribution of your current investment (${equityValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 138 + apps/client/src/app/pages/i18n/i18n-page.html + 40 - - with API access for - 包含 API 访问权限,适用于 + + Fixed Income + Fixed Income - apps/client/src/app/pages/pricing/pricing-page.html - 266 + apps/client/src/app/pages/i18n/i18n-page.html + 45 - - Gather Recent Historical Market Data - 收集近期历史市场数据 + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 226 + apps/client/src/app/pages/i18n/i18n-page.html + 46 - - Gather All Historical Market Data - 收集所有历史市场数据 + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - apps/client/src/app/components/admin-market-data/admin-market-data.html - 231 + apps/client/src/app/pages/i18n/i18n-page.html + 50 - - Gather Historical Market Data - 收集历史市场数据 + + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 29 + apps/client/src/app/pages/i18n/i18n-page.html + 55 - - Data Gathering is off - 数据收集已关闭 + + Investment: Base Currency + Investment: Base Currency - apps/client/src/app/components/admin-market-data/admin-market-data.html - 38 + apps/client/src/app/pages/i18n/i18n-page.html + 60 - - Performance Calculation - 绩效计算 + + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 31 + apps/client/src/app/pages/i18n/i18n-page.html + 63 - - someone - 某人 + + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - apps/client/src/app/pages/public/public-page.component.ts - 33 + apps/client/src/app/pages/i18n/i18n-page.html + 67 - - Add asset to watchlist - 添加资产到关注列表 + + Investment + Investment - apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.html - 7 + apps/client/src/app/pages/i18n/i18n-page.html + 71 - - Watchlist - 关注列表 + + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) + Over ${thresholdMax}% of your current investment is in ${currency} (${maxValueRatio}%) - apps/client/src/app/components/home-watchlist/home-watchlist.html - 4 + apps/client/src/app/pages/i18n/i18n-page.html + 72 + + + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% + The major part of your current investment is in ${currency} (${maxValueRatio}%) and does not exceed ${thresholdMax}% - apps/client/src/app/pages/features/features-page.html - 197 + apps/client/src/app/pages/i18n/i18n-page.html + 76 - - Watchlist - 关注列表 + + start + start + kebab-case - apps/client/src/app/pages/home/home-page-routing.module.ts - 44 + libs/common/src/lib/routes/routes.ts + 336 - apps/client/src/app/pages/home/home-page.component.ts - 53 + libs/common/src/lib/routes/routes.ts + 337 - - Get Early Access - 获取抢先体验 + + Do you really want to generate a new security token? + Do you really want to generate a new security token? - apps/client/src/app/components/admin-settings/ghostfolio-premium-api-dialog/ghostfolio-premium-api-dialog.html - 29 + apps/client/src/app/components/user-account-access/user-account-access.component.ts + 150 - - Do you really want to delete this item? - 您确定要删除此项目吗? + + Generate + Generate - libs/ui/src/lib/benchmark/benchmark.component.ts - 122 + apps/client/src/app/components/user-account-access/user-account-access.html + 43 - - Log out - 登出 + + Stocks + Stocks - apps/client/src/app/components/header/header.component.html - 315 + apps/client/src/app/components/markets/markets.component.ts + 54 + + + + Cryptocurrencies + Cryptocurrencies + + apps/client/src/app/components/markets/markets.component.ts + 55 diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index b4723d377..1975b02b3 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -414,6 +414,14 @@ ngx-skeleton-loader { } } +.mat-mdc-card { + .mat-mdc-card-title { + --mat-card-title-text-line-height: 1.2; + + margin-bottom: 0.5rem; + } +} + .mat-mdc-checkbox { label { margin-bottom: 0; diff --git a/apps/ui-e2e/project.json b/apps/ui-e2e/project.json index 4595b6c66..a5b4cf53a 100644 --- a/apps/ui-e2e/project.json +++ b/apps/ui-e2e/project.json @@ -3,13 +3,14 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "apps/ui-e2e/src", "projectType": "application", + "tags": [], + "implicitDependencies": ["ui"], "targets": { "e2e": { "executor": "@nx/cypress:cypress", "options": { "cypressConfig": "apps/ui-e2e/cypress.json", - "devServerTarget": "ui:storybook", - "tsConfig": "apps/ui-e2e/tsconfig.json" + "devServerTarget": "ui:storybook" }, "configurations": { "ci": { @@ -23,7 +24,5 @@ "lintFilePatterns": ["apps/ui-e2e/**/*.{js,ts}"] } } - }, - "tags": [], - "implicitDependencies": ["ui"] + } } diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 71cf6f2dc..440886903 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -9,4 +9,4 @@ echo "Seeding the database" npx prisma db seed echo "Starting the server" -node main +exec node main diff --git a/libs/common/src/lib/calculation-helper.ts b/libs/common/src/lib/calculation-helper.ts index 4292f2383..d67384a30 100644 --- a/libs/common/src/lib/calculation-helper.ts +++ b/libs/common/src/lib/calculation-helper.ts @@ -23,10 +23,14 @@ export function getAnnualizedPerformancePercent({ }): Big { if (isNumber(daysInMarket) && daysInMarket > 0) { const exponent = new Big(365).div(daysInMarket).toNumber(); + const growthFactor = Math.pow( + netPerformancePercentage.plus(1).toNumber(), + exponent + ); - return new Big( - Math.pow(netPerformancePercentage.plus(1).toNumber(), exponent) - ).minus(1); + if (!isNaN(growthFactor)) { + return new Big(growthFactor).minus(1); + } } return new Big(0); diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 06ff59bb7..4f3bbd77c 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -4,8 +4,12 @@ import ms from 'ms'; export const ghostfolioPrefix = 'GF'; export const ghostfolioScraperApiSymbolPrefix = `_${ghostfolioPrefix}_`; -export const ghostfolioFearAndGreedIndexDataSource = DataSource.RAPID_API; +export const ghostfolioFearAndGreedIndexDataSourceCryptocurrencies = + DataSource.MANUAL; +export const ghostfolioFearAndGreedIndexDataSourceStocks = DataSource.RAPID_API; export const ghostfolioFearAndGreedIndexSymbol = `${ghostfolioScraperApiSymbolPrefix}FEAR_AND_GREED_INDEX`; +export const ghostfolioFearAndGreedIndexSymbolCryptocurrencies = `${ghostfolioPrefix}_FEAR_AND_GREED_INDEX_CRYPTOCURRENCIES`; +export const ghostfolioFearAndGreedIndexSymbolStocks = `${ghostfolioPrefix}_FEAR_AND_GREED_INDEX_STOCKS`; export const locale = 'en-US'; @@ -76,8 +80,6 @@ export const DERIVED_CURRENCIES = [ } ]; -export const EMERGENCY_FUND_TAG_ID = '4452656d-9fa4-4bd0-ba38-70492e31d180'; - export const GATHER_ASSET_PROFILE_PROCESS_JOB_NAME = 'GATHER_ASSET_PROFILE'; export const GATHER_ASSET_PROFILE_PROCESS_JOB_OPTIONS: JobOptions = { attempts: 12, @@ -114,6 +116,7 @@ export const MAX_TOP_HOLDINGS = 50; export const NUMERICAL_PRECISION_THRESHOLD = 100000; export const PROPERTY_API_KEY_GHOSTFOLIO = 'API_KEY_GHOSTFOLIO'; +export const PROPERTY_API_KEY_OPENROUTER = 'API_KEY_OPENROUTER'; export const PROPERTY_BENCHMARKS = 'BENCHMARKS'; export const PROPERTY_BETTER_UPTIME_MONITOR_ID = 'BETTER_UPTIME_MONITOR_ID'; export const PROPERTY_COUNTRIES_OF_SUBSCRIBERS = 'COUNTRIES_OF_SUBSCRIBERS'; @@ -122,10 +125,12 @@ export const PROPERTY_CURRENCIES = 'CURRENCIES'; export const PROPERTY_DATA_SOURCE_MAPPING = 'DATA_SOURCE_MAPPING'; export const PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS = 'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS'; +export const PROPERTY_DEMO_ACCOUNT_ID = 'DEMO_ACCOUNT_ID'; export const PROPERTY_DEMO_USER_ID = 'DEMO_USER_ID'; export const PROPERTY_IS_DATA_GATHERING_ENABLED = 'IS_DATA_GATHERING_ENABLED'; export const PROPERTY_IS_READ_ONLY_MODE = 'IS_READ_ONLY_MODE'; export const PROPERTY_IS_USER_SIGNUP_ENABLED = 'IS_USER_SIGNUP_ENABLED'; +export const PROPERTY_OPENROUTER_MODEL = 'OPENROUTER_MODEL'; export const PROPERTY_SLACK_COMMUNITY_USERS = 'SLACK_COMMUNITY_USERS'; export const PROPERTY_STRIPE_CONFIG = 'STRIPE_CONFIG'; export const PROPERTY_SYSTEM_MESSAGE = 'SYSTEM_MESSAGE'; @@ -171,4 +176,7 @@ export const SUPPORTED_LANGUAGE_CODES = [ 'zh' ]; +export const TAG_ID_EMERGENCY_FUND = '4452656d-9fa4-4bd0-ba38-70492e31d180'; +export const TAG_ID_DEMO = 'efa08cb3-9b9d-4974-ac68-db13a19c4874'; + export const UNKNOWN_KEY = 'UNKNOWN'; diff --git a/libs/common/src/lib/interfaces/index.ts b/libs/common/src/lib/interfaces/index.ts index e401705fb..611a5c963 100644 --- a/libs/common/src/lib/interfaces/index.ts +++ b/libs/common/src/lib/interfaces/index.ts @@ -41,14 +41,17 @@ import type { AccountsResponse } from './responses/accounts-response.interface'; import type { AiPromptResponse } from './responses/ai-prompt-response.interface'; import type { ApiKeyResponse } from './responses/api-key-response.interface'; import type { BenchmarkResponse } from './responses/benchmark-response.interface'; +import type { DataEnhancerHealthResponse } from './responses/data-enhancer-health-response.interface'; import type { DataProviderGhostfolioAssetProfileResponse } from './responses/data-provider-ghostfolio-asset-profile-response.interface'; import type { DataProviderGhostfolioStatusResponse } from './responses/data-provider-ghostfolio-status-response.interface'; +import type { DataProviderHealthResponse } from './responses/data-provider-health-response.interface'; import type { DividendsResponse } from './responses/dividends-response.interface'; import type { ResponseError } from './responses/errors.interface'; import type { HistoricalResponse } from './responses/historical-response.interface'; import type { ImportResponse } from './responses/import-response.interface'; import type { LookupResponse } from './responses/lookup-response.interface'; import type { MarketDataDetailsResponse } from './responses/market-data-details-response.interface'; +import type { MarketDataOfMarketsResponse } from './responses/market-data-of-markets-response.interface'; import type { OAuthResponse } from './responses/oauth-response.interface'; import { PortfolioHoldingResponse } from './responses/portfolio-holding-response.interface'; import type { PortfolioHoldingsResponse } from './responses/portfolio-holdings-response.interface'; @@ -88,8 +91,10 @@ export { BenchmarkProperty, BenchmarkResponse, Coupon, + DataEnhancerHealthResponse, DataProviderGhostfolioAssetProfileResponse, DataProviderGhostfolioStatusResponse, + DataProviderHealthResponse, DataProviderInfo, DividendsResponse, EnhancedSymbolProfile, @@ -107,6 +112,7 @@ export { LookupItem, LookupResponse, MarketDataDetailsResponse, + MarketDataOfMarketsResponse, OAuthResponse, PortfolioChart, PortfolioDetails, diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts index 42496b228..419915a79 100644 --- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts @@ -1,6 +1,7 @@ import { PortfolioPerformance } from './portfolio-performance.interface'; export interface PortfolioSummary extends PortfolioPerformance { + activityCount: number; annualizedPerformancePercent: number; annualizedPerformancePercentWithCurrencyEffect: number; cash: number; @@ -19,9 +20,7 @@ export interface PortfolioSummary extends PortfolioPerformance { grossPerformance: number; grossPerformanceWithCurrencyEffect: number; interest: number; - items: number; liabilities: number; - ordersCount: number; totalBuy: number; totalSell: number; totalValueInBaseCurrency?: number; diff --git a/libs/common/src/lib/interfaces/responses/data-enhancer-health-response.interface.ts b/libs/common/src/lib/interfaces/responses/data-enhancer-health-response.interface.ts new file mode 100644 index 000000000..025f8e8be --- /dev/null +++ b/libs/common/src/lib/interfaces/responses/data-enhancer-health-response.interface.ts @@ -0,0 +1,3 @@ +export interface DataEnhancerHealthResponse { + status: string; +} diff --git a/libs/common/src/lib/interfaces/responses/data-provider-health-response.interface.ts b/libs/common/src/lib/interfaces/responses/data-provider-health-response.interface.ts new file mode 100644 index 000000000..a32d9b3c3 --- /dev/null +++ b/libs/common/src/lib/interfaces/responses/data-provider-health-response.interface.ts @@ -0,0 +1,3 @@ +export interface DataProviderHealthResponse { + status: string; +} diff --git a/libs/common/src/lib/interfaces/responses/market-data-of-markets-response.interface.ts b/libs/common/src/lib/interfaces/responses/market-data-of-markets-response.interface.ts new file mode 100644 index 000000000..aecfbb28b --- /dev/null +++ b/libs/common/src/lib/interfaces/responses/market-data-of-markets-response.interface.ts @@ -0,0 +1,8 @@ +import { SymbolItem } from '@ghostfolio/api/app/symbol/interfaces/symbol-item.interface'; + +export interface MarketDataOfMarketsResponse { + fearAndGreedIndex: { + CRYPTOCURRENCIES: SymbolItem; + STOCKS: SymbolItem; + }; +} diff --git a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts index b330e8baa..000460228 100644 --- a/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/portfolio-holding-response.interface.ts @@ -22,7 +22,7 @@ export interface PortfolioHoldingResponse { grossPerformancePercentWithCurrencyEffect: number; grossPerformanceWithCurrencyEffect: number; historicalData: HistoricalDataItem[]; - investment: number; + investmentInBaseCurrencyWithCurrencyEffect: number; marketPrice: number; marketPriceMax: number; marketPriceMin: number; diff --git a/libs/common/src/lib/interfaces/symbol-metrics.interface.ts b/libs/common/src/lib/interfaces/symbol-metrics.interface.ts index 24c1e1db4..c2b70a4bc 100644 --- a/libs/common/src/lib/interfaces/symbol-metrics.interface.ts +++ b/libs/common/src/lib/interfaces/symbol-metrics.interface.ts @@ -51,6 +51,4 @@ export interface SymbolMetrics { totalInvestmentWithCurrencyEffect: Big; totalLiabilities: Big; totalLiabilitiesInBaseCurrency: Big; - totalValuables: Big; - totalValuablesInBaseCurrency: Big; } diff --git a/libs/common/src/lib/interfaces/tab-configuration.interface.ts b/libs/common/src/lib/interfaces/tab-configuration.interface.ts index e475e3efc..7b18b26ec 100644 --- a/libs/common/src/lib/interfaces/tab-configuration.interface.ts +++ b/libs/common/src/lib/interfaces/tab-configuration.interface.ts @@ -1,6 +1,6 @@ export interface TabConfiguration { iconName: string; label: string; - path: string[]; + routerLink: string[]; showCondition?: boolean; } diff --git a/libs/common/src/lib/models/portfolio-snapshot.ts b/libs/common/src/lib/models/portfolio-snapshot.ts index e30585b82..6b13ca048 100644 --- a/libs/common/src/lib/models/portfolio-snapshot.ts +++ b/libs/common/src/lib/models/portfolio-snapshot.ts @@ -45,8 +45,4 @@ export class PortfolioSnapshot { @Transform(transformToBig, { toClassOnly: true }) @Type(() => Big) totalLiabilitiesWithCurrencyEffect: Big; - - @Transform(transformToBig, { toClassOnly: true }) - @Type(() => Big) - totalValuablesWithCurrencyEffect: Big; } diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 592167562..83ccdbb42 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -40,17 +40,20 @@ export const permissions = { impersonateAllUsers: 'impersonateAllUsers', readAiPrompt: 'readAiPrompt', readMarketData: 'readMarketData', + readMarketDataOfMarkets: 'readMarketDataOfMarkets', readMarketDataOfOwnAssetProfile: 'readMarketDataOfOwnAssetProfile', readPlatforms: 'readPlatforms', readTags: 'readTags', readWatchlist: 'readWatchlist', reportDataGlitch: 'reportDataGlitch', + syncDemoUserAccount: 'syncDemoUserAccount', toggleReadOnlyMode: 'toggleReadOnlyMode', updateAccount: 'updateAccount', updateAuthDevice: 'updateAuthDevice', updateMarketData: 'updateMarketData', updateMarketDataOfOwnAssetProfile: 'updateMarketDataOfOwnAssetProfile', updateOrder: 'updateOrder', + updateOwnAccessToken: 'updateOwnAccessToken', updatePlatform: 'updatePlatform', updateTag: 'updateTag', updateUserSettings: 'updateUserSettings', @@ -80,7 +83,6 @@ export function getPermissions(aRole: Role): string[] { permissions.deleteAccount, permissions.deleteAuthDevice, permissions.deleteOrder, - permissions.deleteOwnUser, permissions.deletePlatform, permissions.deleteTag, permissions.deleteUser, @@ -126,7 +128,6 @@ export function getPermissions(aRole: Role): string[] { permissions.deleteAccountBalance, permissions.deleteAuthDevice, permissions.deleteOrder, - permissions.deleteOwnUser, permissions.deleteWatchlistItem, permissions.readAiPrompt, permissions.readMarketDataOfOwnAssetProfile, @@ -184,7 +185,7 @@ export function hasReadRestrictedAccessPermission({ return false; } - const access = user.Access?.find(({ id }) => { + const access = user.accessesGet?.find(({ id }) => { return id === impersonationId; }); diff --git a/libs/common/src/lib/routes/interfaces/internal-route.interface.ts b/libs/common/src/lib/routes/interfaces/internal-route.interface.ts new file mode 100644 index 000000000..02f205979 --- /dev/null +++ b/libs/common/src/lib/routes/interfaces/internal-route.interface.ts @@ -0,0 +1,9 @@ +import { User } from '@ghostfolio/common/interfaces'; + +export interface InternalRoute { + excludeFromAssistant?: boolean | ((aUser: User) => boolean); + path: string; + routerLink: string[]; + subRoutes?: Record; + title: string; +} diff --git a/libs/common/src/lib/routes/interfaces/public-route.interface.ts b/libs/common/src/lib/routes/interfaces/public-route.interface.ts new file mode 100644 index 000000000..ad133200d --- /dev/null +++ b/libs/common/src/lib/routes/interfaces/public-route.interface.ts @@ -0,0 +1,7 @@ +export interface PublicRoute { + excludeFromSitemap?: boolean; + path: string; + routerLink: string[]; + subRoutes?: Record; + title?: string; +} diff --git a/libs/common/src/lib/routes/routes.ts b/libs/common/src/lib/routes/routes.ts new file mode 100644 index 000000000..9a75f0bc6 --- /dev/null +++ b/libs/common/src/lib/routes/routes.ts @@ -0,0 +1,339 @@ +import { User } from '@ghostfolio/common/interfaces'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; + +import { InternalRoute } from './interfaces/internal-route.interface'; +import { PublicRoute } from './interfaces/public-route.interface'; + +if (typeof window !== 'undefined') { + import('@angular/localize/init'); +} else { + (global as any).$localize = ( + messageParts: TemplateStringsArray, + ...expressions: any[] + ) => { + return String.raw({ raw: messageParts }, ...expressions); + }; +} + +export const internalRoutes: Record = { + account: { + path: 'account', + routerLink: ['/account'], + subRoutes: { + access: { + path: 'access', + routerLink: ['/account', 'access'], + title: $localize`Access` + }, + membership: { + path: 'membership', + routerLink: ['/account', 'membership'], + title: $localize`Membership` + } + }, + title: $localize`Settings` + }, + adminControl: { + excludeFromAssistant: (aUser: User) => { + return hasPermission(aUser?.permissions, permissions.accessAdminControl); + }, + path: 'admin', + routerLink: ['/admin'], + subRoutes: { + jobs: { + path: 'jobs', + routerLink: ['/admin', 'jobs'], + title: $localize`Job Queue` + }, + marketData: { + path: 'market-data', + routerLink: ['/admin', 'market-data'], + title: $localize`Market Data` + }, + settings: { + path: 'settings', + routerLink: ['/admin', 'settings'], + title: $localize`Settings` + }, + users: { + path: 'users', + routerLink: ['/admin', 'users'], + title: $localize`Users` + } + }, + title: $localize`Admin Control` + }, + accounts: { + path: 'accounts', + routerLink: ['/accounts'], + title: $localize`Accounts` + }, + api: { + excludeFromAssistant: true, + path: 'api', + routerLink: ['/api'], + title: 'Ghostfolio API' + }, + auth: { + excludeFromAssistant: true, + path: 'auth', + routerLink: ['/auth'], + title: $localize`Sign in` + }, + home: { + path: 'home', + routerLink: ['/home'], + subRoutes: { + holdings: { + path: 'holdings', + routerLink: ['/home', 'holdings'], + title: $localize`Holdings` + }, + markets: { + path: 'markets', + routerLink: ['/home', 'markets'], + title: $localize`Markets` + }, + marketsPremium: { + path: 'markets-premium', + routerLink: ['/home', 'markets-premium'], + title: $localize`Markets` + }, + summary: { + path: 'summary', + routerLink: ['/home', 'summary'], + title: $localize`Summary` + }, + watchlist: { + path: 'watchlist', + routerLink: ['/home', 'watchlist'], + title: $localize`Watchlist` + } + }, + title: $localize`Overview` + }, + i18n: { + excludeFromAssistant: true, + path: 'i18n', + routerLink: ['/i18n'], + title: $localize`Internationalization` + }, + portfolio: { + path: 'portfolio', + routerLink: ['/portfolio'], + subRoutes: { + activities: { + path: 'activities', + routerLink: ['/portfolio', 'activities'], + title: $localize`Activities` + }, + allocations: { + path: 'allocations', + routerLink: ['/portfolio', 'allocations'], + title: $localize`Allocations` + }, + analysis: { + path: undefined, // Default sub route + routerLink: ['/portfolio'], + title: $localize`Analysis` + }, + fire: { + path: 'fire', + routerLink: ['/portfolio', 'fire'], + title: 'FIRE' + }, + xRay: { + path: 'x-ray', + routerLink: ['/portfolio', 'x-ray'], + title: 'X-ray' + } + }, + title: $localize`Portfolio` + }, + webauthn: { + excludeFromAssistant: true, + path: 'webauthn', + routerLink: ['/webauthn'], + title: $localize`Sign in` + }, + zen: { + excludeFromAssistant: true, + path: 'zen', + routerLink: ['/zen'], + subRoutes: { + holdings: { + path: 'holdings', + routerLink: ['/zen', 'holdings'], + title: $localize`Holdings` + } + }, + title: $localize`Overview` + } +}; + +export const publicRoutes: Record = { + about: { + path: $localize`:kebab-case@@routes.about:about`, + routerLink: ['/' + $localize`:kebab-case@@routes.about:about`], + subRoutes: { + changelog: { + path: $localize`:kebab-case@@routes.about.changelog:changelog`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.about:about`, + $localize`:kebab-case@@routes.about.changelog:changelog` + ], + title: $localize`Changelog` + }, + license: { + path: $localize`:kebab-case@@routes.about.license:license`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.about:about`, + $localize`:kebab-case@@routes.about.license:license` + ], + title: $localize`License` + }, + ossFriends: { + path: 'oss-friends', + routerLink: [ + '/' + $localize`:kebab-case@@routes.about:about`, + 'oss-friends' + ], + title: 'OSS Friends' + }, + privacyPolicy: { + path: $localize`:kebab-case@@routes.about.privacyPolicy:privacy-policy`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.about:about`, + $localize`:kebab-case@@routes.about.privacyPolicy:privacy-policy` + ], + title: $localize`Privacy Policy` + }, + termsOfService: { + path: $localize`:kebab-case@@routes.about.termsOfService:terms-of-service`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.about:about`, + $localize`:kebab-case@@routes.about.termsOfService:terms-of-service` + ], + title: $localize`Terms of Service` + } + }, + title: $localize`About` + }, + blog: { + path: 'blog', + routerLink: ['/blog'], + title: $localize`Blog` + }, + demo: { + excludeFromSitemap: true, + path: 'demo', + routerLink: ['/demo'], + title: $localize`Live Demo` + }, + faq: { + path: $localize`:kebab-case@@routes.faq:faq`, + routerLink: ['/' + $localize`:kebab-case@@routes.faq:faq`], + subRoutes: { + saas: { + path: 'saas', + routerLink: ['/' + $localize`:kebab-case@@routes.faq:faq`, 'saas'], + title: $localize`Cloud` + ' (SaaS)' + }, + selfHosting: { + path: $localize`:kebab-case@@routes.faq.selfHosting:self-hosting`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.faq:faq`, + $localize`:kebab-case@@routes.faq.selfHosting:self-hosting` + ], + title: $localize`Self-Hosting` + } + }, + title: $localize`Frequently Asked Questions (FAQ)` + }, + features: { + path: $localize`:kebab-case@@routes.features:features`, + routerLink: ['/' + $localize`:kebab-case@@routes.features:features`], + title: $localize`Features` + }, + markets: { + path: $localize`:kebab-case@@routes.markets:markets`, + routerLink: ['/' + $localize`:kebab-case@@routes.markets:markets`], + title: $localize`Markets` + }, + openStartup: { + path: 'open', + routerLink: ['/open'], + title: 'Open Startup' + }, + pricing: { + path: $localize`:kebab-case@@routes.pricing:pricing`, + routerLink: ['/' + $localize`:kebab-case@@routes.pricing:pricing`], + title: $localize`Pricing` + }, + public: { + excludeFromSitemap: true, + path: 'p', + routerLink: ['/p'] + }, + register: { + path: $localize`:kebab-case@@routes.register:register`, + routerLink: ['/' + $localize`:kebab-case@@routes.register:register`], + title: $localize`Registration` + }, + resources: { + path: $localize`:kebab-case@@routes.resources:resources`, + routerLink: ['/' + $localize`:kebab-case@@routes.resources:resources`], + subRoutes: { + glossary: { + path: $localize`:kebab-case@@routes.resources.glossary:glossary`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.resources:resources`, + $localize`:kebab-case@@routes.resources.glossary:glossary` + ], + title: $localize`Glossary` + }, + guides: { + path: $localize`:kebab-case@@routes.resources.guides:guides`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.resources:resources`, + $localize`:kebab-case@@routes.resources.guides:guides` + ], + title: $localize`Guides` + }, + markets: { + path: $localize`:kebab-case@@routes.resources.markets:markets`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.resources:resources`, + $localize`:kebab-case@@routes.resources.markets:markets` + ], + title: $localize`Markets` + }, + personalFinanceTools: { + path: $localize`:kebab-case@@routes.resources.personalFinanceTools:personal-finance-tools`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.resources:resources`, + $localize`:kebab-case@@routes.resources.personalFinanceTools:personal-finance-tools` + ], + subRoutes: { + product: { + excludeFromSitemap: true, + path: $localize`:kebab-case@@routes.resources.personalFinanceTools.openSourceAlternativeTo:open-source-alternative-to`, + routerLink: [ + '/' + $localize`:kebab-case@@routes.resources:resources`, + $localize`:kebab-case@@routes.resources.personalFinanceTools:personal-finance-tools`, + $localize`:kebab-case@@routes.resources.personalFinanceTools.openSourceAlternativeTo:open-source-alternative-to` + ], + title: $localize`Open Source Alternative to` + } + }, + title: $localize`Personal Finance Tools` + } + }, + title: $localize`Resources` + }, + start: { + excludeFromSitemap: true, + path: $localize`:kebab-case@@routes.start:start`, + routerLink: ['/' + $localize`:kebab-case@@routes.start:start`] + } +}; diff --git a/libs/common/src/lib/types/access-with-grantee-user.type.ts b/libs/common/src/lib/types/access-with-grantee-user.type.ts index 18c045fc7..98551e0fd 100644 --- a/libs/common/src/lib/types/access-with-grantee-user.type.ts +++ b/libs/common/src/lib/types/access-with-grantee-user.type.ts @@ -1,3 +1,3 @@ import { Access, User } from '@prisma/client'; -export type AccessWithGranteeUser = Access & { GranteeUser?: User }; +export type AccessWithGranteeUser = Access & { granteeUser?: User }; diff --git a/libs/common/src/lib/types/account-with-platform.type.ts b/libs/common/src/lib/types/account-with-platform.type.ts index b0730abce..fbaa47393 100644 --- a/libs/common/src/lib/types/account-with-platform.type.ts +++ b/libs/common/src/lib/types/account-with-platform.type.ts @@ -1,3 +1,3 @@ import { Account, Platform } from '@prisma/client'; -export type AccountWithPlatform = Account & { Platform?: Platform }; +export type AccountWithPlatform = Account & { platform?: Platform }; diff --git a/libs/common/src/lib/types/account-with-value.type.ts b/libs/common/src/lib/types/account-with-value.type.ts index bc7577d91..40aefa998 100644 --- a/libs/common/src/lib/types/account-with-value.type.ts +++ b/libs/common/src/lib/types/account-with-value.type.ts @@ -2,7 +2,7 @@ import { Account as AccountModel, Platform } from '@prisma/client'; export type AccountWithValue = AccountModel & { balanceInBaseCurrency: number; - Platform?: Platform; + platform?: Platform; transactionCount: number; value: number; valueInBaseCurrency: number; diff --git a/libs/common/src/lib/types/fear-and-greed-index.type.ts b/libs/common/src/lib/types/fear-and-greed-index.type.ts new file mode 100644 index 000000000..0dc6655a8 --- /dev/null +++ b/libs/common/src/lib/types/fear-and-greed-index.type.ts @@ -0,0 +1 @@ +export type FearAndGreedIndexMode = 'CRYPTOCURRENCIES' | 'STOCKS'; diff --git a/libs/common/src/lib/types/index.ts b/libs/common/src/lib/types/index.ts index 8ffd345db..903d9c96a 100644 --- a/libs/common/src/lib/types/index.ts +++ b/libs/common/src/lib/types/index.ts @@ -6,6 +6,7 @@ import type { AiPromptMode } from './ai-prompt-mode.type'; import type { BenchmarkTrend } from './benchmark-trend.type'; import type { ColorScheme } from './color-scheme.type'; import type { DateRange } from './date-range.type'; +import type { FearAndGreedIndexMode } from './fear-and-greed-index.type'; import type { Granularity } from './granularity.type'; import type { GroupBy } from './group-by.type'; import type { HoldingType } from './holding-type.type'; @@ -30,6 +31,7 @@ export type { BenchmarkTrend, ColorScheme, DateRange, + FearAndGreedIndexMode, Granularity, GroupBy, HoldingType, diff --git a/libs/common/src/lib/types/order-with-account.type.ts b/libs/common/src/lib/types/order-with-account.type.ts index af8803091..b3ae4a990 100644 --- a/libs/common/src/lib/types/order-with-account.type.ts +++ b/libs/common/src/lib/types/order-with-account.type.ts @@ -3,7 +3,7 @@ import { Order, SymbolProfile, Tag } from '@prisma/client'; import { AccountWithPlatform } from './account-with-platform.type'; export type OrderWithAccount = Order & { - Account?: AccountWithPlatform; + account?: AccountWithPlatform; SymbolProfile?: SymbolProfile; tags?: Tag[]; }; diff --git a/libs/common/src/lib/types/user-with-settings.type.ts b/libs/common/src/lib/types/user-with-settings.type.ts index 5fb25a664..fc4a81280 100644 --- a/libs/common/src/lib/types/user-with-settings.type.ts +++ b/libs/common/src/lib/types/user-with-settings.type.ts @@ -5,8 +5,8 @@ import { Access, Account, Settings, User } from '@prisma/client'; // TODO: Compare with User interface export type UserWithSettings = User & { - Access: Access[]; - Account: Account[]; + accessesGet: Access[]; + accounts: Account[]; activityCount: number; dataProviderGhostfolioDailyRequests: number; permissions?: string[]; diff --git a/libs/ui/src/lib/account-balances/account-balances.component.html b/libs/ui/src/lib/account-balances/account-balances.component.html index 0cfa4a5da..caef922ed 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.html +++ b/libs/ui/src/lib/account-balances/account-balances.component.html @@ -38,7 +38,7 @@
    diff --git a/libs/ui/src/lib/account-balances/account-balances.component.ts b/libs/ui/src/lib/account-balances/account-balances.component.ts index 756b3169f..706e079e0 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.ts +++ b/libs/ui/src/lib/account-balances/account-balances.component.ts @@ -2,7 +2,7 @@ import { CreateAccountBalanceDto } from '@ghostfolio/api/app/account-balance/cre import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { validateObjectForForm } from '@ghostfolio/client/util/form.util'; -import { getLocale } from '@ghostfolio/common/helper'; +import { DATE_FORMAT, getLocale } from '@ghostfolio/common/helper'; import { AccountBalancesResponse } from '@ghostfolio/common/interfaces'; import { @@ -31,6 +31,7 @@ import { MatInputModule } from '@angular/material/input'; import { MatMenuModule } from '@angular/material/menu'; import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; +import { format } from 'date-fns'; import { get } from 'lodash'; import { Subject } from 'rxjs'; @@ -114,7 +115,7 @@ export class GfAccountBalancesComponent const accountBalance: CreateAccountBalanceDto = { accountId: this.accountId, balance: this.accountBalanceForm.get('balance').value, - date: this.accountBalanceForm.get('date').value.toISOString() + date: format(this.accountBalanceForm.get('date').value, DATE_FORMAT) }; try { diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index 79a7d3417..59ec6315f 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -124,7 +124,7 @@ -
    - @if (element.Account?.Platform?.url) { - } - {{ element.Account?.name }} + {{ element.account?.name }}
    @@ -468,7 +468,7 @@ [ngClass]="{ 'cursor-pointer': hasPermissionToOpenDetails && - row.Account?.isExcluded !== true && + row.account?.isExcluded !== true && row.isDraft === false && ['BUY', 'DIVIDEND', 'SELL'].includes(row.type) }" diff --git a/libs/ui/src/lib/activities-table/activities-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts index 8e5a44a50..140dd9e4e 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -1,5 +1,4 @@ import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; -import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; @@ -8,6 +7,7 @@ import { getDateFormatString, getLocale } from '@ghostfolio/common/helper'; import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { OrderWithAccount } from '@ghostfolio/common/types'; import { GfActivityTypeComponent } from '@ghostfolio/ui/activity-type'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info'; import { GfValueComponent } from '@ghostfolio/ui/value'; @@ -52,7 +52,7 @@ import { Subject, Subscription, takeUntil } from 'rxjs'; imports: [ CommonModule, GfActivityTypeComponent, - GfAssetProfileIconComponent, + GfEntityLogoComponent, GfNoTransactionsInfoComponent, GfSymbolModule, GfValueComponent, @@ -195,7 +195,7 @@ export class GfActivitiesTableComponent } } else if ( this.hasPermissionToOpenDetails && - activity.Account?.isExcluded !== true && + activity.account?.isExcluded !== true && activity.isDraft === false && ['BUY', 'DIVIDEND', 'SELL'].includes(activity.type) ) { diff --git a/libs/ui/src/lib/activity-type/activity-type.component.html b/libs/ui/src/lib/activity-type/activity-type.component.html index 78eb2f17b..fe5ecfa01 100644 --- a/libs/ui/src/lib/activity-type/activity-type.component.html +++ b/libs/ui/src/lib/activity-type/activity-type.component.html @@ -5,7 +5,6 @@ dividend: activityType === 'DIVIDEND', fee: activityType === 'FEE', interest: activityType === 'INTEREST', - item: activityType === 'ITEM', liability: activityType === 'LIABILITY', sell: activityType === 'SELL' }" @@ -16,8 +15,6 @@ } @else if (activityType === 'FEE') { - } @else if (activityType === 'ITEM') { - } @else if (activityType === 'LIABILITY') { } @else if (activityType === 'SELL') { diff --git a/libs/ui/src/lib/activity-type/activity-type.component.scss b/libs/ui/src/lib/activity-type/activity-type.component.scss index 49889b665..34b951805 100644 --- a/libs/ui/src/lib/activity-type/activity-type.component.scss +++ b/libs/ui/src/lib/activity-type/activity-type.component.scss @@ -26,10 +26,6 @@ color: var(--cyan); } - &.item { - color: var(--purple); - } - &.liability { color: var(--red); } diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts index a0744db9f..457df01ff 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts @@ -1,5 +1,9 @@ import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; -import { ISearchResultItem } from '@ghostfolio/ui/assistant/interfaces/interfaces'; +import { SearchMode } from '@ghostfolio/ui/assistant/enums/search-mode'; +import { + IAssetSearchResultItem, + ISearchResultItem +} from '@ghostfolio/ui/assistant/interfaces/interfaces'; import { FocusableOption } from '@angular/cdk/a11y'; import { @@ -32,7 +36,6 @@ export class GfAssistantListItemComponent } @Input() item: ISearchResultItem; - @Input() mode: 'assetProfile' | 'holding'; @Output() clicked = new EventEmitter(); @@ -45,23 +48,23 @@ export class GfAssistantListItemComponent public constructor(private changeDetectorRef: ChangeDetectorRef) {} public ngOnChanges() { - const dataSource = this.item?.dataSource; - const symbol = this.item?.symbol; - - if (this.mode === 'assetProfile') { + if (this.item?.mode === SearchMode.ASSET_PROFILE) { this.queryParams = { - dataSource, - symbol, - assetProfileDialog: true + assetProfileDialog: true, + dataSource: this.item?.dataSource, + symbol: this.item?.symbol }; this.routerLink = ['/admin', 'market-data']; - } else if (this.mode === 'holding') { + } else if (this.item?.mode === SearchMode.HOLDING) { this.queryParams = { - dataSource, - symbol, - holdingDetailDialog: true + dataSource: this.item?.dataSource, + holdingDetailDialog: true, + symbol: this.item?.symbol }; this.routerLink = []; + } else if (this.item?.mode === SearchMode.QUICK_LINK) { + this.queryParams = {}; + this.routerLink = this.item.routerLink; } } @@ -71,6 +74,15 @@ export class GfAssistantListItemComponent this.changeDetectorRef.markForCheck(); } + public isAsset(item: ISearchResultItem): item is IAssetSearchResultItem { + return ( + (item.mode === SearchMode.ASSET_PROFILE || + item.mode === SearchMode.HOLDING) && + !!item.dataSource && + !!item.symbol + ); + } + public onClick() { this.clicked.emit(); } diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html index 46c8a4c24..9c55dac54 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html @@ -1,17 +1,17 @@ {{ item?.name }} -
    - {{ item?.symbol | gfSymbol }} · {{ item?.currency }} - @if (item?.assetSubClassString) { - · {{ item.assetSubClassString }} - } -
    + >{{ item?.name }} + @if (item && isAsset(item)) { +
    + {{ item?.symbol | gfSymbol }} · {{ item?.currency }} + @if (item?.assetSubClassString) { + · {{ item.assetSubClassString }} + } + + } + diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss index 9f677c1a4..7c33c0ff9 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss @@ -6,6 +6,11 @@ a { color: rgba(var(--light-primary-text)); + font-weight: bold; + + .text-muted { + color: rgba(var(--light-primary-text)) !important; + } } } } @@ -14,6 +19,10 @@ &.has-focus { a { color: rgba(var(--dark-primary-text)); + + .text-muted { + color: rgba(var(--dark-primary-text)) !important; + } } } } diff --git a/libs/ui/src/lib/assistant/assistant.component.ts b/libs/ui/src/lib/assistant/assistant.component.ts index d8c3dcc2e..de1733cf2 100644 --- a/libs/ui/src/lib/assistant/assistant.component.ts +++ b/libs/ui/src/lib/assistant/assistant.component.ts @@ -1,10 +1,12 @@ -import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component'; import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; import { Filter, PortfolioPosition, User } from '@ghostfolio/common/interfaces'; +import { InternalRoute } from '@ghostfolio/common/routes/interfaces/internal-route.interface'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { DateRange } from '@ghostfolio/common/types'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { translate } from '@ghostfolio/ui/i18n'; import { FocusKeyManager } from '@angular/cdk/a11y'; @@ -38,18 +40,24 @@ import { MatMenuTrigger } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { RouterModule } from '@angular/router'; import { Account, AssetClass, DataSource } from '@prisma/client'; +import { differenceInYears } from 'date-fns'; +import Fuse from 'fuse.js'; +import { isFunction } from 'lodash'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; -import { EMPTY, Observable, Subject, lastValueFrom } from 'rxjs'; +import { EMPTY, Observable, Subject, merge, of } from 'rxjs'; import { catchError, debounceTime, distinctUntilChanged, map, - mergeMap, - takeUntil + scan, + switchMap, + takeUntil, + tap } from 'rxjs/operators'; import { GfAssistantListItemComponent } from './assistant-list-item/assistant-list-item.component'; +import { SearchMode } from './enums/search-mode'; import { IDateRangeOption, ISearchResultItem, @@ -61,8 +69,8 @@ import { imports: [ CommonModule, FormsModule, - GfAssetProfileIconComponent, GfAssistantListItemComponent, + GfEntityLogoComponent, GfSymbolModule, MatButtonModule, MatFormFieldModule, @@ -138,13 +146,18 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { tag: new FormControl(undefined) }); public holdings: PortfolioPosition[] = []; - public isLoading = false; + public isLoading = { + assetProfiles: false, + holdings: false, + quickLinks: false + }; public isOpen = false; - public placeholder = $localize`Find holding...`; + public placeholder = $localize`Find holding or page...`; public searchFormControl = new FormControl(''); public searchResults: ISearchResults = { assetProfiles: [], - holdings: [] + holdings: [], + quickLinks: [] }; public tags: Filter[] = []; @@ -177,39 +190,145 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { this.searchFormControl.valueChanges .pipe( map((searchTerm) => { - this.isLoading = true; + this.isLoading = { + assetProfiles: true, + holdings: true, + quickLinks: true + }; this.searchResults = { assetProfiles: [], - holdings: [] + holdings: [], + quickLinks: [] }; this.changeDetectorRef.markForCheck(); - return searchTerm; + return searchTerm?.trim(); }), debounceTime(300), distinctUntilChanged(), - mergeMap(async (searchTerm) => { - const result = { + switchMap((searchTerm) => { + const results = { assetProfiles: [], - holdings: [] + holdings: [], + quickLinks: [] } as ISearchResults; - try { - if (searchTerm) { - return await this.getSearchResults(searchTerm); - } - } catch {} + if (!searchTerm) { + return of(results).pipe( + tap(() => { + this.isLoading = { + assetProfiles: false, + holdings: false, + quickLinks: false + }; + }) + ); + } - return result; + // Asset profiles + const assetProfiles$: Observable> = this + .hasPermissionToAccessAdminControl + ? this.searchAssetProfiles(searchTerm).pipe( + map((assetProfiles) => ({ + assetProfiles: assetProfiles.slice( + 0, + GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT + ) + })), + catchError((error) => { + console.error( + 'Error fetching asset profiles for assistant:', + error + ); + return of({ assetProfiles: [] as ISearchResultItem[] }); + }), + tap(() => { + this.isLoading.assetProfiles = false; + this.changeDetectorRef.markForCheck(); + }) + ) + : of({ assetProfiles: [] as ISearchResultItem[] }).pipe( + tap(() => { + this.isLoading.assetProfiles = false; + this.changeDetectorRef.markForCheck(); + }) + ); + + // Holdings + const holdings$: Observable> = + this.searchHoldings(searchTerm).pipe( + map((holdings) => ({ + holdings: holdings.slice( + 0, + GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT + ) + })), + catchError((error) => { + console.error('Error fetching holdings for assistant:', error); + return of({ holdings: [] as ISearchResultItem[] }); + }), + tap(() => { + this.isLoading.holdings = false; + this.changeDetectorRef.markForCheck(); + }) + ); + + // Quick links + const quickLinks$: Observable> = of( + this.searchQuickLinks(searchTerm) + ).pipe( + map((quickLinks) => ({ + quickLinks: quickLinks.slice( + 0, + GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT + ) + })), + tap(() => { + this.isLoading.quickLinks = false; + this.changeDetectorRef.markForCheck(); + }) + ); + + // Merge all results + return merge(quickLinks$, assetProfiles$, holdings$).pipe( + scan( + (acc: ISearchResults, curr: Partial) => ({ + ...acc, + ...curr + }), + { + assetProfiles: [], + holdings: [], + quickLinks: [] + } as ISearchResults + ) + ); }), takeUntil(this.unsubscribeSubject) ) - .subscribe((searchResults) => { - this.searchResults = searchResults; - this.isLoading = false; - - this.changeDetectorRef.markForCheck(); + .subscribe({ + next: (searchResults) => { + this.searchResults = searchResults; + this.changeDetectorRef.markForCheck(); + }, + error: (error) => { + console.error('Assistant search stream error:', error); + this.searchResults = { + assetProfiles: [], + holdings: [], + quickLinks: [] + }; + this.changeDetectorRef.markForCheck(); + }, + complete: () => { + this.isLoading = { + assetProfiles: false, + holdings: false, + quickLinks: false + }; + this.changeDetectorRef.markForCheck(); + } }); } @@ -217,7 +336,10 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { this.accounts = this.user?.accounts ?? []; this.dateRangeOptions = [ - { label: $localize`Today`, value: '1d' }, + { + label: $localize`Today`, + value: '1d' + }, { label: $localize`Week to date` + ' (' + $localize`WTD` + ')', value: 'wtd' @@ -229,13 +351,19 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { { label: $localize`Year to date` + ' (' + $localize`YTD` + ')', value: 'ytd' - }, - { - label: '1 ' + $localize`year` + ' (' + $localize`1Y` + ')', - value: '1y' } ]; + if ( + this.user?.dateOfFirstActivity && + differenceInYears(new Date(), this.user.dateOfFirstActivity) >= 1 + ) { + this.dateRangeOptions.push({ + label: '1 ' + $localize`year` + ' (' + $localize`1Y` + ')', + value: '1y' + }); + } + // TODO // if (this.user?.settings?.isExperimentalFeatures) { // this.dateRangeOptions = this.dateRangeOptions.concat( @@ -251,13 +379,20 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { // ); // } - this.dateRangeOptions = this.dateRangeOptions.concat([ - { + if ( + this.user?.dateOfFirstActivity && + differenceInYears(new Date(), this.user.dateOfFirstActivity) >= 5 + ) { + this.dateRangeOptions.push({ label: '5 ' + $localize`years` + ' (' + $localize`5Y` + ')', value: '5y' - }, - { label: $localize`Max`, value: 'max' } - ]); + }); + } + + this.dateRangeOptions.push({ + label: $localize`Max`, + value: 'max' + }); this.dateRangeFormControl.disable({ emitEvent: false }); @@ -307,11 +442,16 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { } public initialize() { - this.isLoading = true; + this.isLoading = { + assetProfiles: true, + holdings: true, + quickLinks: true + }; this.keyManager = new FocusKeyManager(this.assistantListItems).withWrap(); this.searchResults = { assetProfiles: [], - holdings: [] + holdings: [], + quickLinks: [] }; for (const item of this.assistantListItems) { @@ -323,7 +463,11 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { this.searchElement?.nativeElement?.focus(); }); - this.isLoading = false; + this.isLoading = { + assetProfiles: false, + holdings: false, + quickLinks: false + }; this.setIsOpen(true); this.dataService @@ -412,36 +556,6 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { }); } - private async getSearchResults(aSearchTerm: string) { - let assetProfiles: ISearchResultItem[] = []; - let holdings: ISearchResultItem[] = []; - - if (this.hasPermissionToAccessAdminControl) { - try { - assetProfiles = await lastValueFrom( - this.searchAssetProfiles(aSearchTerm) - ); - assetProfiles = assetProfiles.slice( - 0, - GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT - ); - } catch {} - } - - try { - holdings = await lastValueFrom(this.searchHoldings(aSearchTerm)); - holdings = holdings.slice( - 0, - GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT - ); - } catch {} - - return { - assetProfiles, - holdings - }; - } - private searchAssetProfiles( aSearchTerm: string ): Observable { @@ -467,7 +581,8 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { dataSource, name, symbol, - assetSubClassString: translate(assetSubClass) + assetSubClassString: translate(assetSubClass), + mode: SearchMode.ASSET_PROFILE as const }; } ); @@ -499,7 +614,8 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { dataSource, name, symbol, - assetSubClassString: translate(assetSubClass) + assetSubClassString: translate(assetSubClass), + mode: SearchMode.HOLDING as const }; } ); @@ -508,6 +624,39 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { ); } + private searchQuickLinks(aSearchTerm: string): ISearchResultItem[] { + const searchTerm = aSearchTerm.toLowerCase(); + + const allRoutes = Object.values(internalRoutes) + .filter(({ excludeFromAssistant }) => { + if (isFunction(excludeFromAssistant)) { + return excludeFromAssistant(this.user); + } + + return !excludeFromAssistant; + }) + .reduce((acc, route) => { + acc.push(route); + if (route.subRoutes) { + acc.push(...Object.values(route.subRoutes)); + } + return acc; + }, [] as InternalRoute[]); + + const fuse = new Fuse(allRoutes, { + keys: ['title'], + threshold: 0.3 + }); + + return fuse.search(searchTerm).map(({ item: { routerLink, title } }) => { + return { + routerLink, + mode: SearchMode.QUICK_LINK as const, + name: title + }; + }); + } + private setFilterFormValues() { const dataSource = this.user?.settings?.[ 'filters.dataSource' diff --git a/libs/ui/src/lib/assistant/assistant.html b/libs/ui/src/lib/assistant/assistant.html index fa6738532..ed6781d21 100644 --- a/libs/ui/src/lib/assistant/assistant.html +++ b/libs/ui/src/lib/assistant/assistant.html @@ -36,57 +36,92 @@ }
  • -
    -
    -
    Holdings
    - - - @if (isLoading) { - - } @else { -
    No entries...
    - } -
    -
    -
    -
    Asset Profiles
    - - - @if (isLoading) { - - } @else { -
    No entries...
    - } -
    + @if (searchFormControl.value) { +
    + @if (searchResults?.quickLinks?.length !== 0 || isLoading.quickLinks) { +
    +
    + Quick Links +
    + @for ( + searchResultItem of searchResults.quickLinks; + track searchResultItem + ) { + + } + @if (isLoading.quickLinks) { + + } +
    + } + @if (searchResults?.holdings?.length !== 0 || isLoading.holdings) { +
    +
    + Holdings +
    + @for ( + searchResultItem of searchResults.holdings; + track searchResultItem + ) { + + } + @if (isLoading.holdings) { + + } +
    + } + @if ( + hasPermissionToAccessAdminControl && + (searchResults?.assetProfiles?.length !== 0 || + isLoading.assetProfiles) + ) { +
    +
    + Asset Profiles +
    + @for ( + searchResultItem of searchResults.assetProfiles; + track searchResultItem + ) { + + } + @if (isLoading.assetProfiles) { + + } +
    + }
    -
    + }
    @if (!searchFormControl.value) { @@ -112,12 +147,14 @@ @for (account of accounts; track account.id) {
    - {{ account.name }} + @if (account.platform?.url) { + + } + {{ account.name }}
    } diff --git a/libs/ui/src/lib/assistant/assistant.scss b/libs/ui/src/lib/assistant/assistant.scss index 2de06824a..3630978c1 100644 --- a/libs/ui/src/lib/assistant/assistant.scss +++ b/libs/ui/src/lib/assistant/assistant.scss @@ -7,6 +7,24 @@ .result-container { max-height: 15rem; + + .title { + align-items: center; + display: flex; + font-size: 0.75rem; + display: flex; + margin: 0; + position: relative; + white-space: nowrap; + + &::after { + content: ''; + flex-grow: 1; + height: 1px; + background: rgba(var(--dark-dividers)); + margin-left: 0.25rem; + } + } } .search-container { @@ -31,6 +49,14 @@ border-color: rgba(var(--light-dividers)); } + .result-container { + .title { + &::after { + background: rgba(var(--light-dividers)); + } + } + } + .search-container { border-color: rgba(var(--light-dividers)); diff --git a/libs/ui/src/lib/assistant/enums/search-mode.ts b/libs/ui/src/lib/assistant/enums/search-mode.ts new file mode 100644 index 000000000..f85ad47e9 --- /dev/null +++ b/libs/ui/src/lib/assistant/enums/search-mode.ts @@ -0,0 +1,5 @@ +export enum SearchMode { + ASSET_PROFILE = 'assetProfile', + HOLDING = 'holding', + QUICK_LINK = 'quickLink' +} diff --git a/libs/ui/src/lib/assistant/interfaces/interfaces.ts b/libs/ui/src/lib/assistant/interfaces/interfaces.ts index 3481b37cf..ce8b644be 100644 --- a/libs/ui/src/lib/assistant/interfaces/interfaces.ts +++ b/libs/ui/src/lib/assistant/interfaces/interfaces.ts @@ -1,18 +1,32 @@ import { AssetProfileIdentifier } from '@ghostfolio/common/interfaces'; import { DateRange } from '@ghostfolio/common/types'; +import { SearchMode } from '../enums/search-mode'; + +export interface IAssetSearchResultItem extends AssetProfileIdentifier { + assetSubClassString: string; + currency: string; + mode: SearchMode.ASSET_PROFILE | SearchMode.HOLDING; + name: string; +} + export interface IDateRangeOption { label: string; value: DateRange; } -export interface ISearchResultItem extends AssetProfileIdentifier { - assetSubClassString: string; - currency: string; +export interface IQuickLinkSearchResultItem { + mode: SearchMode.QUICK_LINK; name: string; + routerLink: string[]; } +export type ISearchResultItem = + | IAssetSearchResultItem + | IQuickLinkSearchResultItem; + export interface ISearchResults { assetProfiles: ISearchResultItem[]; holdings: ISearchResultItem[]; + quickLinks: ISearchResultItem[]; } diff --git a/libs/ui/src/lib/benchmark/benchmark.component.html b/libs/ui/src/lib/benchmark/benchmark.component.html index 631e5b7e1..8df8417f1 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.html +++ b/libs/ui/src/lib/benchmark/benchmark.component.html @@ -1,7 +1,16 @@
    - - - +
    Name
    + + @@ -91,7 +100,12 @@ - diff --git a/libs/ui/src/lib/value/value.component.html b/libs/ui/src/lib/value/value.component.html index e252ef8a2..1f61f30e5 100644 --- a/libs/ui/src/lib/value/value.component.html +++ b/libs/ui/src/lib/value/value.component.html @@ -1,18 +1,24 @@ -
    - -
    +@if (icon) { +
    + +
    +}
    - + @if (value || value === 0 || value === null) {
    - - -
    +
    -
    -
    -
    + @if (isNumber || value === null) { + @if (colorizeSign && !useAbsoluteValue) { + @if (+value > 0) { +
    +
    + } + @if (+value < 0) { +
    -
    + } + } @if (isPercent) {
    } @if (unit) { - - {{ unit }} - -
    - {{ unit }} -
    + @if (size === 'medium') { + + {{ unit }} + + } @else { +
    + {{ unit }} +
    + } } - + } @if (isString) {
    }
    - + } @if (value === undefined) { } - -
    + @if (size === 'large') { +
    - {{ subLabel }} + @if (subLabel) { + {{ subLabel }} + }
    - + } @else { + - + }
    diff --git a/nx.json b/nx.json index 785ffa781..d843d15b3 100644 --- a/nx.json +++ b/nx.json @@ -72,6 +72,5 @@ ] }, "parallel": 1, - "defaultBase": "origin/main", - "useLegacyCache": true + "defaultBase": "origin/main" } diff --git a/package-lock.json b/package-lock.json index b2e0f3b9f..69b966afb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.161.0", + "version": "2.178.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.161.0", + "version": "2.178.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { @@ -29,25 +29,27 @@ "@dfinity/identity": "0.15.7", "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", - "@internationalized/number": "3.6.0", - "@keyv/redis": "4.3.4", + "@internationalized/number": "3.6.3", + "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.2", "@nestjs/cache-manager": "3.0.1", - "@nestjs/common": "11.1.0", + "@nestjs/common": "11.1.3", "@nestjs/config": "4.0.2", - "@nestjs/core": "11.1.0", + "@nestjs/core": "11.1.3", "@nestjs/event-emitter": "3.0.1", "@nestjs/jwt": "11.0.0", "@nestjs/passport": "11.0.5", - "@nestjs/platform-express": "11.1.0", + "@nestjs/platform-express": "11.1.3", "@nestjs/schedule": "6.0.0", "@nestjs/serve-static": "5.0.3", - "@prisma/client": "6.7.0", + "@openrouter/ai-sdk-provider": "0.7.2", + "@prisma/client": "6.11.1", "@simplewebauthn/browser": "13.1.0", "@simplewebauthn/server": "13.1.1", - "@stripe/stripe-js": "5.4.0", + "@stripe/stripe-js": "7.3.1", + "ai": "4.3.16", "alphavantage": "2.2.0", - "big.js": "6.2.2", + "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", "chart.js": "4.4.9", @@ -57,13 +59,14 @@ "chartjs-plugin-datalabels": "2.2.0", "cheerio": "1.0.0", "class-transformer": "0.5.1", - "class-validator": "0.14.1", + "class-validator": "0.14.2", "color": "5.0.0", "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.2", "date-fns": "4.1.0", "envalid": "8.0.0", + "fuse.js": "7.1.0", "google-spreadsheet": "3.2.0", "helmet": "7.0.0", "http-status-codes": "2.3.0", @@ -72,11 +75,11 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.3", + "ng-extract-i18n-merge": "2.15.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", - "ngx-skeleton-loader": "11.0.0", - "ngx-stripe": "19.0.0", + "ngx-skeleton-loader": "11.2.1", + "ngx-stripe": "19.7.0", "open-color": "1.9.1", "papaparse": "5.3.1", "passport": "0.7.0", @@ -85,12 +88,12 @@ "passport-jwt": "4.0.1", "reflect-metadata": "0.2.2", "rxjs": "7.8.1", - "stripe": "17.3.0", + "stripe": "18.2.1", "svgmap": "2.12.2", - "twitter-api-v2": "1.14.2", + "twitter-api-v2": "1.23.0", "uuid": "11.1.0", - "yahoo-finance2": "3.3.1", - "zone.js": "0.15.0" + "yahoo-finance2": "3.4.1", + "zone.js": "0.15.1" }, "devDependencies": { "@angular-devkit/build-angular": "19.2.1", @@ -107,18 +110,18 @@ "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.24.0", "@nestjs/schematics": "11.0.5", - "@nestjs/testing": "11.1.0", - "@nx/angular": "20.8.1", - "@nx/cypress": "20.8.1", - "@nx/eslint-plugin": "20.8.1", - "@nx/jest": "20.8.1", - "@nx/js": "20.8.1", - "@nx/module-federation": "20.8.1", - "@nx/nest": "20.8.1", - "@nx/node": "20.8.1", - "@nx/storybook": "20.8.1", - "@nx/web": "20.8.1", - "@nx/workspace": "20.8.1", + "@nestjs/testing": "11.1.3", + "@nx/angular": "21.1.2", + "@nx/cypress": "21.1.2", + "@nx/eslint-plugin": "21.1.2", + "@nx/jest": "21.1.2", + "@nx/js": "21.1.2", + "@nx/module-federation": "21.1.2", + "@nx/nest": "21.1.2", + "@nx/node": "21.1.2", + "@nx/storybook": "21.1.2", + "@nx/web": "21.1.2", + "@nx/workspace": "21.1.2", "@schematics/angular": "19.2.1", "@storybook/addon-essentials": "8.6.12", "@storybook/addon-interactions": "8.6.12", @@ -128,8 +131,8 @@ "@types/big.js": "6.2.2", "@types/google-spreadsheet": "3.1.5", "@types/jest": "29.5.13", - "@types/lodash": "4.17.16", - "@types/node": "20.14.10", + "@types/lodash": "4.17.17", + "@types/node": "22.15.17", "@types/papaparse": "5.3.7", "@types/passport-google-oauth20": "2.0.16", "@typescript-eslint/eslint-plugin": "8.29.0", @@ -145,10 +148,10 @@ "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", - "nx": "20.8.1", - "prettier": "3.5.3", + "nx": "21.1.2", + "prettier": "3.6.2", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.7.0", + "prisma": "6.11.1", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", @@ -161,7 +164,7 @@ "webpack-bundle-analyzer": "4.10.2" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@adobe/css-tools": { @@ -171,6 +174,88 @@ "dev": true, "license": "MIT" }, + "node_modules/@ai-sdk/provider": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", + "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", + "license": "Apache-2.0", + "dependencies": { + "json-schema": "^0.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ai-sdk/provider-utils": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", + "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "nanoid": "^3.3.8", + "secure-json-parse": "^2.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.23.8" + } + }, + "node_modules/@ai-sdk/react": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-1.2.12.tgz", + "integrity": "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider-utils": "2.2.8", + "@ai-sdk/ui-utils": "1.2.11", + "swr": "^2.2.5", + "throttleit": "2.1.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@ai-sdk/react/node_modules/throttleit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz", + "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ai-sdk/ui-utils": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.2.11.tgz", + "integrity": "sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.23.8" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -4256,9 +4341,9 @@ } }, "node_modules/@internationalized/number": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.0.tgz", - "integrity": "sha512-PtrRcJVy7nw++wn4W2OuePQQfTqDzfusSuY1QTtui4wa7r+rGVtR75pO8CyKvHvzyQYi3Q1uO5sY0AsB4e65Bw==", + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.3.tgz", + "integrity": "sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw==", "license": "Apache-2.0", "dependencies": { "@swc/helpers": "^0.5.0" @@ -4962,13 +5047,13 @@ } }, "node_modules/@keyv/redis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@keyv/redis/-/redis-4.3.4.tgz", - "integrity": "sha512-PLWmawfq9McxEvtHa2Uj5WjI7g6qWtv2eOvXvXJ9tkwEV5vLkqA+pFeZ/0pz9xvP20NQiAkGm4521YJ0DhuFiw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@keyv/redis/-/redis-4.4.0.tgz", + "integrity": "sha512-n/KEj3S7crVkoykggqsMUtcjNGvjagGPlJYgO/r6m9hhGZfhp1txJElHxcdJ1ANi/LJoBuOSILj15g6HD2ucqQ==", "license": "MIT", "dependencies": { - "cluster-key-slot": "^1.1.2", - "redis": "^4.7.0" + "@redis/client": "^1.6.0", + "cluster-key-slot": "^1.1.2" }, "engines": { "node": ">= 18" @@ -5185,14 +5270,14 @@ } }, "node_modules/@modern-js/node-bundle-require": { - "version": "2.65.1", - "resolved": "https://registry.npmjs.org/@modern-js/node-bundle-require/-/node-bundle-require-2.65.1.tgz", - "integrity": "sha512-XpEkciVEfDbkkLUI662ZFlI9tXsUQtLXk4NRJDBGosNnk9uL2XszmC8sKsdCSLK8AYuPW2w6MTVWuJsOR0EU8A==", + "version": "2.67.6", + "resolved": "https://registry.npmjs.org/@modern-js/node-bundle-require/-/node-bundle-require-2.67.6.tgz", + "integrity": "sha512-rRiDQkrm3kgn0E/GNrcvqo4c71PaUs2R8Xmpv6GUKbEr6lz7VNgfZmAhdAQPtNfRfiBe+1sFLzEcwfEdDo/dTA==", "dev": true, "license": "MIT", "dependencies": { - "@modern-js/utils": "2.65.1", - "@swc/helpers": "0.5.13", + "@modern-js/utils": "2.67.6", + "@swc/helpers": "^0.5.17", "esbuild": "0.17.19" } }, @@ -5570,16 +5655,6 @@ "node": ">=12" } }, - "node_modules/@modern-js/node-bundle-require/node_modules/@swc/helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", - "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@modern-js/node-bundle-require/node_modules/esbuild": { "version": "0.17.19", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", @@ -5619,28 +5694,18 @@ } }, "node_modules/@modern-js/utils": { - "version": "2.65.1", - "resolved": "https://registry.npmjs.org/@modern-js/utils/-/utils-2.65.1.tgz", - "integrity": "sha512-HrChf19F+6nALo5XPra8ycjhXGQfGi23+S7Y2FLfTKe8vaNnky8duT/XvRWpbS4pp3SQj8ryO8m/qWSsJ1Rogw==", + "version": "2.67.6", + "resolved": "https://registry.npmjs.org/@modern-js/utils/-/utils-2.67.6.tgz", + "integrity": "sha512-cxY7HsSH0jIN3rlL6RZ0tgzC1tH0gHW++8X6h7sXCNCylhUdbGZI9yTGbpAS8bU7c97NmPaTKg+/ILt00Kju1Q==", "dev": true, "license": "MIT", "dependencies": { - "@swc/helpers": "0.5.13", + "@swc/helpers": "^0.5.17", "caniuse-lite": "^1.0.30001520", "lodash": "^4.17.21", "rslog": "^1.1.0" } }, - "node_modules/@modern-js/utils/node_modules/@swc/helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", - "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@module-federation/bridge-react-webpack-plugin": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.9.1.tgz", @@ -5667,15 +5732,15 @@ } }, "node_modules/@module-federation/cli": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-0.13.0.tgz", - "integrity": "sha512-5n7fjeTNq0O+0M4j1Behp/kfNqTpmib0CwcETNov3Bw7J4ohiyrGS76CRB0OrkE7WlE6psFlyCPAiPI9YsDldg==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/cli/-/cli-0.14.3.tgz", + "integrity": "sha512-BRR1d+piUSKW5OAuU+ej/zS3pMS4ismea9XHD/DWGJXW/Am7h1pFxRNYAZ8iflLJQ46oqjS/j1ECc5WJmbHlxw==", "dev": true, "license": "MIT", "dependencies": { - "@modern-js/node-bundle-require": "2.65.1", - "@module-federation/dts-plugin": "0.13.0", - "@module-federation/sdk": "0.13.0", + "@modern-js/node-bundle-require": "2.67.6", + "@module-federation/dts-plugin": "0.14.3", + "@module-federation/sdk": "0.14.3", "chalk": "3.0.0", "commander": "11.1.0" }, @@ -5687,16 +5752,16 @@ } }, "node_modules/@module-federation/cli/node_modules/@module-federation/dts-plugin": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.13.0.tgz", - "integrity": "sha512-+I3kaf1BHZLTv37dxQTQ/WErAePAnVWKs1cdkea1PA/oRo4IJRVkMya53mKRlawR/Tam9GldphrR1ylOJxMl4w==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.14.3.tgz", + "integrity": "sha512-QiE4wcra6dNo36028cX//QfX0uKF6UeoQoaVIIu06imF4KjCNQD3bE91D6H3DlVVD/UjnIDeUSt9AoGesLzbSA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.13.0", - "@module-federation/managers": "0.13.0", - "@module-federation/sdk": "0.13.0", - "@module-federation/third-party-dts-extractor": "0.13.0", + "@module-federation/error-codes": "0.14.3", + "@module-federation/managers": "0.14.3", + "@module-federation/sdk": "0.14.3", + "@module-federation/third-party-dts-extractor": "0.14.3", "adm-zip": "^0.5.10", "ansi-colors": "^4.1.3", "axios": "^1.8.2", @@ -5721,35 +5786,35 @@ } }, "node_modules/@module-federation/cli/node_modules/@module-federation/error-codes": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.13.0.tgz", - "integrity": "sha512-4soAMLr7qcVWuvCsyRmBbiBfuhxmnDeyl+qzjMx8VurQgL+XQDQJapM9RXngNGT4g8FoCq9o7rM5YWNgFFNUiw==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.14.3.tgz", + "integrity": "sha512-sBJ3XKU9g5Up31jFeXPFsD8AgORV7TLO/cCSMuRewSfgYbG/3vSKLJmfHrO6+PvjZSb9VyV2UaF02ojktW65vw==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/cli/node_modules/@module-federation/managers": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.13.0.tgz", - "integrity": "sha512-dpfRjIE4UR4QRP20rENQJs9HfnuWzzsA9W6Eu+r+G+obZnzNIxbONUzg5bCMmhbDsR3krxU6LRrwU1zXnA6bxw==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.14.3.tgz", + "integrity": "sha512-uQiLRUvy2yiWm7Xa75y8/He3swW0l2hn8Ef09mvSXhjewwFQMPClQAmZa1UCgNk1F7s/dXDtL9E8vlnX/aZdOQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.13.0", + "@module-federation/sdk": "0.14.3", "find-pkg": "2.0.0", "fs-extra": "9.1.0" } }, "node_modules/@module-federation/cli/node_modules/@module-federation/sdk": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.13.0.tgz", - "integrity": "sha512-JdMZaPD+EQvMJYS+/8/8QjaAHQ3qljogvioXBsAuedcStu/msn5e1Fswc0G34kXY9ixs2hUPZU2cAllfSKWIBQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.14.3.tgz", + "integrity": "sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/cli/node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.13.0.tgz", - "integrity": "sha512-0sBgo917+AksBjFXrdWOhX58D+wjHR/vXtiCbwFdAGDwLuMs7crMMc4Aay2FJRwPCm1fMGy/4kYvLh5MRhUHRA==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.14.3.tgz", + "integrity": "sha512-XAbUoN5hP9iSnrKGikDIy8CloWCKHRIpe+DWOlq8u7uXoRpAPs/a5K7uegxB27dZUNxSFEfqDeHrpQORNnDqPg==", "dev": true, "license": "MIT", "dependencies": { @@ -6041,16 +6106,15 @@ } }, "node_modules/@module-federation/node": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.1.tgz", - "integrity": "sha512-CKFoCq0R6k01Wt+qfWqWnF7XSHNDdIq4reVGvx1/TtAcv3U1opfI1Fgn2zWci9b8E0xQKteCVD5lI3Ws3dJt6w==", + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.7.6.tgz", + "integrity": "sha512-QZlUvOOKrwMMDA9CULIi/wrwlnssDi2WDctat3oszxsoziPSpwwbsfm9tGPasw2FvMCvZDO0kCMWSmvuIIeEKg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/enhanced": "0.13.0", - "@module-federation/runtime": "0.13.0", - "@module-federation/sdk": "0.13.0", - "@module-federation/utilities": "3.1.53", + "@module-federation/enhanced": "0.14.3", + "@module-federation/runtime": "0.14.3", + "@module-federation/sdk": "0.14.3", "btoa": "1.2.1", "encoding": "^0.1.13", "node-fetch": "2.7.0" @@ -6073,26 +6137,26 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/bridge-react-webpack-plugin": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.13.0.tgz", - "integrity": "sha512-5p+LKEq0fwuPGIIzt/dsPlz0atgwv/G2ijeqtzh1K/1tEhtasfr6LNjjnOsjZNA8YR3v0agQAijabIpT6B7PYQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.14.3.tgz", + "integrity": "sha512-lRkAeNpRdsOFIYx+SSEzsWUZbr2RdfcLA0UbadBaWV3FgeoSd0mef9IO9+KlY1y05anvwOS17VlsX0DeCbvMXg==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.13.0", + "@module-federation/sdk": "0.14.3", "@types/semver": "7.5.8", "semver": "7.6.3" } }, "node_modules/@module-federation/node/node_modules/@module-federation/data-prefetch": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.13.0.tgz", - "integrity": "sha512-mimi7eqKySOmKrXDCo3Lk4KZq1i0PZDwSmP9Es5RWK8senaCRu10WwFLhAVJ/yIH2Wt7HFy23ZyYNukrLikedQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.14.3.tgz", + "integrity": "sha512-jGSeo4e32PxTIqPxxwb11oqBXLzygx7fsbV0RXHhy0W1IXDzFObYbHCN95ohxAEh25Hn5jinxBCFn/ltEzQUlA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.13.0", - "@module-federation/sdk": "0.13.0", + "@module-federation/runtime": "0.14.3", + "@module-federation/sdk": "0.14.3", "fs-extra": "9.1.0" }, "peerDependencies": { @@ -6101,16 +6165,16 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/dts-plugin": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.13.0.tgz", - "integrity": "sha512-+I3kaf1BHZLTv37dxQTQ/WErAePAnVWKs1cdkea1PA/oRo4IJRVkMya53mKRlawR/Tam9GldphrR1ylOJxMl4w==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.14.3.tgz", + "integrity": "sha512-QiE4wcra6dNo36028cX//QfX0uKF6UeoQoaVIIu06imF4KjCNQD3bE91D6H3DlVVD/UjnIDeUSt9AoGesLzbSA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.13.0", - "@module-federation/managers": "0.13.0", - "@module-federation/sdk": "0.13.0", - "@module-federation/third-party-dts-extractor": "0.13.0", + "@module-federation/error-codes": "0.14.3", + "@module-federation/managers": "0.14.3", + "@module-federation/sdk": "0.14.3", + "@module-federation/third-party-dts-extractor": "0.14.3", "adm-zip": "^0.5.10", "ansi-colors": "^4.1.3", "axios": "^1.8.2", @@ -6135,23 +6199,23 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/enhanced": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.13.0.tgz", - "integrity": "sha512-G9R5U6sQVkHAKW+VYlT8DprkJJasV0H9vPyt8CLrNxL1myzz3YVObr1RG3JciF+RsBC3zdmSNftXkUz15nUZ/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.13.0", - "@module-federation/cli": "0.13.0", - "@module-federation/data-prefetch": "0.13.0", - "@module-federation/dts-plugin": "0.13.0", - "@module-federation/error-codes": "0.13.0", - "@module-federation/inject-external-runtime-core-plugin": "0.13.0", - "@module-federation/managers": "0.13.0", - "@module-federation/manifest": "0.13.0", - "@module-federation/rspack": "0.13.0", - "@module-federation/runtime-tools": "0.13.0", - "@module-federation/sdk": "0.13.0", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.14.3.tgz", + "integrity": "sha512-9R15Sm+hCn9yNtOTEwN1cHppC/sMb/LfoTcA94jLMB6lcyYz+uNzc5JliyrMawU1/guOQiBZkUVL/thB8DHURw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.14.3", + "@module-federation/cli": "0.14.3", + "@module-federation/data-prefetch": "0.14.3", + "@module-federation/dts-plugin": "0.14.3", + "@module-federation/error-codes": "0.14.3", + "@module-federation/inject-external-runtime-core-plugin": "0.14.3", + "@module-federation/managers": "0.14.3", + "@module-federation/manifest": "0.14.3", + "@module-federation/rspack": "0.14.3", + "@module-federation/runtime-tools": "0.14.3", + "@module-federation/sdk": "0.14.3", "btoa": "^1.2.1", "schema-utils": "^4.3.0", "upath": "2.0.1" @@ -6177,62 +6241,62 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/error-codes": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.13.0.tgz", - "integrity": "sha512-4soAMLr7qcVWuvCsyRmBbiBfuhxmnDeyl+qzjMx8VurQgL+XQDQJapM9RXngNGT4g8FoCq9o7rM5YWNgFFNUiw==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.14.3.tgz", + "integrity": "sha512-sBJ3XKU9g5Up31jFeXPFsD8AgORV7TLO/cCSMuRewSfgYbG/3vSKLJmfHrO6+PvjZSb9VyV2UaF02ojktW65vw==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/node/node_modules/@module-federation/inject-external-runtime-core-plugin": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.13.0.tgz", - "integrity": "sha512-+V6Dhpqg8N9nqGHqOKDYebaHdJYqaTEFlF2VcrTmNlIcIYuiSLZngEQliebOkMRwUmO2T3eVS5IzzTlL/jfrJw==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.14.3.tgz", + "integrity": "sha512-OurBx/gDkRPKl9pidefG4EtJeSk8izaj3ZVN/sGGMOXLFeWLK2i0ZSUM/5ogPLj9NPdQC8tTlPalEUsRQ38DoA==", "dev": true, "license": "MIT", "peerDependencies": { - "@module-federation/runtime-tools": "0.13.0" + "@module-federation/runtime-tools": "0.14.3" } }, "node_modules/@module-federation/node/node_modules/@module-federation/managers": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.13.0.tgz", - "integrity": "sha512-dpfRjIE4UR4QRP20rENQJs9HfnuWzzsA9W6Eu+r+G+obZnzNIxbONUzg5bCMmhbDsR3krxU6LRrwU1zXnA6bxw==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.14.3.tgz", + "integrity": "sha512-uQiLRUvy2yiWm7Xa75y8/He3swW0l2hn8Ef09mvSXhjewwFQMPClQAmZa1UCgNk1F7s/dXDtL9E8vlnX/aZdOQ==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/sdk": "0.13.0", + "@module-federation/sdk": "0.14.3", "find-pkg": "2.0.0", "fs-extra": "9.1.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/manifest": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.13.0.tgz", - "integrity": "sha512-YHJW4qavvfqfpUusz+BlT9snPmbXmiiS5bO5nReFPjfWXT3/9xFA1TvcwpRc+EXNDNKnf5bPF5E/rsaGxSlp7A==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.14.3.tgz", + "integrity": "sha512-GsD4PK7JTDOX8g2NyGhsoejhfyP88h6wCaxW4zAq6X91CE9Yu1R/Ec6QHhp9jfXdQlgkoXz1nQRlkbiU7RNTDA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/dts-plugin": "0.13.0", - "@module-federation/managers": "0.13.0", - "@module-federation/sdk": "0.13.0", + "@module-federation/dts-plugin": "0.14.3", + "@module-federation/managers": "0.14.3", + "@module-federation/sdk": "0.14.3", "chalk": "3.0.0", "find-pkg": "2.0.0" } }, "node_modules/@module-federation/node/node_modules/@module-federation/rspack": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.13.0.tgz", - "integrity": "sha512-hb60x8EdiOXfzJGQLlbv1MDJVjEpQ3ppH0ONIra8CAkGRPGjB+eTwg9nLB6wkcI3xdMjgax509DwbSG+BDmCqw==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.14.3.tgz", + "integrity": "sha512-s02E7n9CnR+IMraYwGqfSU2uScENPU+TUd45YteMKxcKOIqNRALtGMn/YT24bbnj+wZ/jhvzr7Rbcx9AkaxKhA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/bridge-react-webpack-plugin": "0.13.0", - "@module-federation/dts-plugin": "0.13.0", - "@module-federation/inject-external-runtime-core-plugin": "0.13.0", - "@module-federation/managers": "0.13.0", - "@module-federation/manifest": "0.13.0", - "@module-federation/runtime-tools": "0.13.0", - "@module-federation/sdk": "0.13.0", + "@module-federation/bridge-react-webpack-plugin": "0.14.3", + "@module-federation/dts-plugin": "0.14.3", + "@module-federation/inject-external-runtime-core-plugin": "0.14.3", + "@module-federation/managers": "0.14.3", + "@module-federation/manifest": "0.14.3", + "@module-federation/runtime-tools": "0.14.3", + "@module-federation/sdk": "0.14.3", "btoa": "1.2.1" }, "peerDependencies": { @@ -6250,50 +6314,50 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.13.0.tgz", - "integrity": "sha512-Ne/3AEVWz6LL6G/i41O5MC6YYlg0SatNNqG/0XbuMAfyGM+llRmB6VKt0o2+JR4isxWuPNp97TbUkkfORit6Eg==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.14.3.tgz", + "integrity": "sha512-7ZHpa3teUDVhraYdxQGkfGHzPbjna4LtwbpudgzAxSLLFxLDNanaxCuSeIgSM9c+8sVUNC9kvzUgJEZB0krPJw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.13.0", - "@module-federation/runtime-core": "0.13.0", - "@module-federation/sdk": "0.13.0" + "@module-federation/error-codes": "0.14.3", + "@module-federation/runtime-core": "0.14.3", + "@module-federation/sdk": "0.14.3" } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime-core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.13.0.tgz", - "integrity": "sha512-Oj/1p0mfxZ+8EbU7ND4gMvRmikFpIvPCbblOgat9N8ZIVAKYpTimCgMhzg4yRqAwzlGCVwnnW7XZ8UlA+Zqrvg==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.14.3.tgz", + "integrity": "sha512-xMFQXflLVW/AJTWb4soAFP+LB4XuhE7ryiLIX8oTyUoBBgV6U2OPghnFljPjeXbud72O08NYlQ1qsHw1kN/V8Q==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.13.0", - "@module-federation/sdk": "0.13.0" + "@module-federation/error-codes": "0.14.3", + "@module-federation/sdk": "0.14.3" } }, "node_modules/@module-federation/node/node_modules/@module-federation/runtime-tools": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.13.0.tgz", - "integrity": "sha512-6ECWX18yGrQKcmkrQoNPd5VEpxZP1SMaB/Bp55xlpEhsrpn4zHnriQluxDw6xldjSOLl1qbokfxwCwjS2OaEbg==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.14.3.tgz", + "integrity": "sha512-QBETX7iMYXdSa3JtqFlYU+YkpymxETZqyIIRiqg0gW+XGpH3jgU68yjrme2NBJp7URQi/CFZG8KWtfClk0Pjgw==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.13.0", - "@module-federation/webpack-bundler-runtime": "0.13.0" + "@module-federation/runtime": "0.14.3", + "@module-federation/webpack-bundler-runtime": "0.14.3" } }, "node_modules/@module-federation/node/node_modules/@module-federation/sdk": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.13.0.tgz", - "integrity": "sha512-JdMZaPD+EQvMJYS+/8/8QjaAHQ3qljogvioXBsAuedcStu/msn5e1Fswc0G34kXY9ixs2hUPZU2cAllfSKWIBQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.14.3.tgz", + "integrity": "sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw==", "dev": true, "license": "MIT" }, "node_modules/@module-federation/node/node_modules/@module-federation/third-party-dts-extractor": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.13.0.tgz", - "integrity": "sha512-0sBgo917+AksBjFXrdWOhX58D+wjHR/vXtiCbwFdAGDwLuMs7crMMc4Aay2FJRwPCm1fMGy/4kYvLh5MRhUHRA==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.14.3.tgz", + "integrity": "sha512-XAbUoN5hP9iSnrKGikDIy8CloWCKHRIpe+DWOlq8u7uXoRpAPs/a5K7uegxB27dZUNxSFEfqDeHrpQORNnDqPg==", "dev": true, "license": "MIT", "dependencies": { @@ -6303,14 +6367,14 @@ } }, "node_modules/@module-federation/node/node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.13.0.tgz", - "integrity": "sha512-ycgAsFeCTo+3GR8JxkhCyg2UZm6Au98ISdLTdVXYphO4UDcO/KjqyJen1LXEslkpCEohDj68Prei2fUHRruK6g==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.14.3.tgz", + "integrity": "sha512-hIyJFu34P7bY2NeMIUHAS/mYUHEY71VTAsN0A0AqEJFSVPszheopu9VdXq0VDLrP9KQfuXT8SDxeYeJXyj0mgA==", "dev": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.13.0", - "@module-federation/sdk": "0.13.0" + "@module-federation/runtime": "0.14.3", + "@module-federation/sdk": "0.14.3" } }, "node_modules/@module-federation/node/node_modules/chalk": { @@ -6540,39 +6604,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@module-federation/utilities": { - "version": "3.1.53", - "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.53.tgz", - "integrity": "sha512-6pM6wf9wJ+qebFSAdz7Mqn+k8XRubdcORp3866fMQhBUGLvNhOJuN2Vfd4/0HsPyKx2snCo2IamQyr9OqG7NRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@module-federation/sdk": "0.13.0" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18", - "webpack": "^5.40.0" - }, - "peerDependenciesMeta": { - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/@module-federation/utilities/node_modules/@module-federation/sdk": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.13.0.tgz", - "integrity": "sha512-JdMZaPD+EQvMJYS+/8/8QjaAHQ3qljogvioXBsAuedcStu/msn5e1Fswc0G34kXY9ixs2hUPZU2cAllfSKWIBQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@module-federation/webpack-bundler-runtime": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.9.1.tgz", @@ -7004,12 +7035,12 @@ } }, "node_modules/@nestjs/common": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.0.tgz", - "integrity": "sha512-8MrajltjtIN6eW9cTpv+1IZogqz2Zsrc8YDt0LwQPUq8cSq0j50DETdQpPsNMeib+p9avkV41+NrzGk1z2o5Wg==", + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz", + "integrity": "sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==", "license": "MIT", "dependencies": { - "file-type": "20.4.1", + "file-type": "21.0.0", "iterare": "1.2.1", "load-esm": "1.0.2", "tslib": "2.8.1", @@ -7020,8 +7051,8 @@ "url": "https://opencollective.com/nest" }, "peerDependencies": { - "class-transformer": "*", - "class-validator": "*", + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", "reflect-metadata": "^0.1.12 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -7050,9 +7081,9 @@ } }, "node_modules/@nestjs/core": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.0.tgz", - "integrity": "sha512-IeXbTRPrr6xAVbETlDE+miSkNmYf/cPhCa9GU9gFtPO6pVNuAeG/dNrjLVc23mJtUlT/ibdsoW35TlSyHLkzEA==", + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.3.tgz", + "integrity": "sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -7136,14 +7167,14 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.0.tgz", - "integrity": "sha512-lxv73GT9VdQaxndciqKcyzLsT2j3gMRX+tO6J06oa7RIfp4Dp4oMTIu57lM1gkIJ+gLGq29bob+mfPv/K8RIuw==", + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.3.tgz", + "integrity": "sha512-hEDNMlaPiBO72fxxX/CuRQL3MEhKRc/sIYGVoXjrnw6hTxZdezvvM6A95UaLsYknfmcZZa/CdG1SMBZOu9agHQ==", "license": "MIT", "dependencies": { "cors": "2.8.5", "express": "5.1.0", - "multer": "1.4.5-lts.2", + "multer": "2.0.1", "path-to-regexp": "8.2.0", "tslib": "2.8.1" }, @@ -7279,9 +7310,9 @@ } }, "node_modules/@nestjs/testing": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.0.tgz", - "integrity": "sha512-gQ+NGshkHbNrDNXMVaPiwduqZ8YHpXrnsQqhSsnyNYOcDNPdBbB+0FDq7XiiklluXqjdLAN8i+bS7MbGlZIhKw==", + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.3.tgz", + "integrity": "sha512-CeXG6/eEqgFIkPkmU00y18Dd3DLOIDFhPItzJK1SWckKo6IhcnfoRJzGx75bmuvUMjb51j6An96S/+MJ2ty9jA==", "dev": true, "license": "MIT", "dependencies": { @@ -7664,20 +7695,20 @@ } }, "node_modules/@nx/angular": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-20.8.1.tgz", - "integrity": "sha512-BT6kc2CMwC1RpzdJdl1jbaZa7yCp5sN4BCHj8w+MOCnX6630EcrN6lCi+u5xSVvY2DmemP5I1ZHybSYkYilLLg==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-21.1.2.tgz", + "integrity": "sha512-xkHatgZaSBSJ3G+pRbQ025sPtf+brtsqQGLk3YxoICf6S/pYLUIOZwnPn3pVqDQCM4ObOPdA2IMTQnKLClD9aw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", - "@nx/eslint": "20.8.1", - "@nx/js": "20.8.1", - "@nx/module-federation": "20.8.1", - "@nx/rspack": "20.8.1", - "@nx/web": "20.8.1", - "@nx/webpack": "20.8.1", - "@nx/workspace": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/eslint": "21.1.2", + "@nx/js": "21.1.2", + "@nx/module-federation": "21.1.2", + "@nx/rspack": "21.1.2", + "@nx/web": "21.1.2", + "@nx/webpack": "21.1.2", + "@nx/workspace": "21.1.2", "@phenomnomnominal/tsquery": "~5.0.1", "@typescript-eslint/type-utils": "^8.0.0", "enquirer": "~2.3.6", @@ -7713,18 +7744,19 @@ } }, "node_modules/@nx/cypress": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-20.8.1.tgz", - "integrity": "sha512-eVPBZ4R0qgkRxaKPg46OXhA/xQdgVO4zjKoRjKkNX7dDRmq8o2xXHBoU+ZnuNITeFV1fmJ9Cr1qpGMWrHXb2Ew==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/cypress/-/cypress-21.1.2.tgz", + "integrity": "sha512-LnQ5etyx7MV+JtHQiCbilt9R4NQOcq4o8wgJj+Jlb+qU6FMLFEXGtSxFE1vGXNVCM5obsNa226tAh1VaGV7vAA==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", - "@nx/eslint": "20.8.1", - "@nx/js": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/eslint": "21.1.2", + "@nx/js": "21.1.2", "@phenomnomnominal/tsquery": "~5.0.1", "detect-port": "^1.5.1", "semver": "^7.6.3", + "tree-kill": "1.2.2", "tslib": "^2.3.0" }, "peerDependencies": { @@ -7737,9 +7769,9 @@ } }, "node_modules/@nx/devkit": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.8.1.tgz", - "integrity": "sha512-N3nwIg/7RIZeB76iuVo29q+l9WyTtvuBSgDFM2msiIK6Q928ilzoeNPZ/p7w/TE3Gqs5XVhq9ExMvDAOTxdmXA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-21.1.2.tgz", + "integrity": "sha512-1dgjwSsNDdp/VXydZnSfzfVwySEB3C9yjzeIw6+3+nRvZfH16a7ggZE7MF5sJTq4d+01hAgIDz3KyvGa6Jf73g==", "dev": true, "license": "MIT", "dependencies": { @@ -7753,7 +7785,7 @@ "yargs-parser": "21.1.1" }, "peerDependencies": { - "nx": ">= 19 <= 21" + "nx": "21.1.2" } }, "node_modules/@nx/devkit/node_modules/brace-expansion": { @@ -7783,14 +7815,14 @@ } }, "node_modules/@nx/eslint": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.8.1.tgz", - "integrity": "sha512-eIfNZ4bGdCKAeq7c8dhJ31wW3D422UJaAGl3hT3mJoxW2qbaKDZhgUr5EJqiMAO78vycpnYaLrN1KPEKeFrQZg==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-21.1.2.tgz", + "integrity": "sha512-Mp8u0RlkhxYtZ47d2ou6t8XIpRy7N/n23OzikqMro4Wt/DK1irGyShSoNIqdGdwalAE5MG1OFXspttXB+y/wOQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", - "@nx/js": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/js": "21.1.2", "semver": "^7.5.3", "tslib": "^2.3.0", "typescript": "~5.7.2" @@ -7806,14 +7838,14 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-20.8.1.tgz", - "integrity": "sha512-AF3oxqflCUL73OjfZUdFOuDnYuAqNiozXJrZCVRxyi/9a+dO/kvukU3x5ObwvnZFamWQIwfsfVzgk/nI0WDwjQ==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-21.1.2.tgz", + "integrity": "sha512-kwhwe6e8dZ0pf5CYPq4OBck15NEJrfuivCEGRTIDZWu3WDYJIw7OvhfyCdGuoZLeHGoCVRjIU6xV5hOzkD9RSw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", - "@nx/js": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/js": "21.1.2", "@typescript-eslint/type-utils": "^8.0.0", "@typescript-eslint/utils": "^8.0.0", "chalk": "^4.1.0", @@ -7847,16 +7879,16 @@ } }, "node_modules/@nx/jest": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-20.8.1.tgz", - "integrity": "sha512-Cx2cOOWprB2HiggCRg72vl3/evg2fcoANShhnrb+VCTJLHcq87hkwdrAcHwlbENpXwTd4bjlqYJdP1HobdH3FA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-21.1.2.tgz", + "integrity": "sha512-y4VZita9LFb6XajulRIwjMcqHU6/f73C4SNSH6IM5BYmkN68ovICmzTGvoaL7wGTaYrA4Moh/WoKwEwQWKxRPQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@nx/devkit": "20.8.1", - "@nx/js": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/js": "21.1.2", "@phenomnomnominal/tsquery": "~5.0.1", "identity-obj-proxy": "3.0.0", "jest-config": "^29.4.1", @@ -7897,9 +7929,9 @@ } }, "node_modules/@nx/js": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.8.1.tgz", - "integrity": "sha512-D3T84PuZggEdraS41S2Frzef2FhebWAHzXcs0IE1ZLInUtwek5P5aTN2d3i/JwYB3mcOyvx8XN3HVADap4KRpg==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-21.1.2.tgz", + "integrity": "sha512-ZF6Zf4Ys+RBvH0GoQHio94C/0N07Px/trAvseMuQ8PKc0tSkXycu/EBc1uAZQvgJThR5o3diAKtIQug77pPYMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7910,8 +7942,8 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nx/devkit": "20.8.1", - "@nx/workspace": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/workspace": "21.1.2", "@zkochan/js-yaml": "0.0.7", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^3.1.0", @@ -8084,19 +8116,19 @@ } }, "node_modules/@nx/module-federation": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-20.8.1.tgz", - "integrity": "sha512-El+qAxP/jqVxgkir43ZN6pwki+FrhtSEcfdk1G8f+cU1DCmZgbKlDYjDjZ/e7SdXkjtJran5fPg7sfLEUyoFew==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-21.1.2.tgz", + "integrity": "sha512-19aodN8uh3fEI2ifXYDXTV4hpQMk5Ko3UAFW+x0dQwlzSUIObt2mBMHL0PIkFXlT1fyz/rH+tkx67/DAAUxVZw==", "dev": true, "license": "MIT", "dependencies": { "@module-federation/enhanced": "^0.9.0", "@module-federation/node": "^2.6.26", "@module-federation/sdk": "^0.9.0", - "@nx/devkit": "20.8.1", - "@nx/js": "20.8.1", - "@nx/web": "20.8.1", - "@rspack/core": "^1.1.5", + "@nx/devkit": "21.1.2", + "@nx/js": "21.1.2", + "@nx/web": "21.1.2", + "@rspack/core": "^1.3.8", "express": "^4.21.2", "http-proxy-middleware": "^3.0.3", "picocolors": "^1.1.0", @@ -8104,38 +8136,6 @@ "webpack": "^5.88.0" } }, - "node_modules/@nx/module-federation/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/module-federation/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/@nx/module-federation/node_modules/cookie": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", @@ -8210,25 +8210,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/@nx/module-federation/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@nx/module-federation/node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -8246,57 +8227,18 @@ "dev": true, "license": "MIT" }, - "node_modules/@nx/module-federation/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nx/module-federation/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@nx/module-federation/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/@nx/nest": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-20.8.1.tgz", - "integrity": "sha512-B7DBXrIXw/NBqhLltZpZ6An3P/W3x61aw/fZgvugkwLwZx3rlX+XnWCmyNx37U2jna0tYaUkf6tnzebiQOtbMQ==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-21.1.2.tgz", + "integrity": "sha512-TEiePYfxGB8dWEU8MOHZCUDpyNcxKTCh4Aj9f2zxfvYBqKMmsqpZRvWKXo6OL6IPdCqyqXtPNqoZyv9XbFakKQ==", "dev": true, "license": "MIT", "dependencies": { "@nestjs/schematics": "^9.1.0", - "@nx/devkit": "20.8.1", - "@nx/eslint": "20.8.1", - "@nx/js": "20.8.1", - "@nx/node": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/eslint": "21.1.2", + "@nx/js": "21.1.2", + "@nx/node": "21.1.2", "tslib": "^2.3.0" } }, @@ -8490,23 +8432,25 @@ } }, "node_modules/@nx/node": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/node/-/node-20.8.1.tgz", - "integrity": "sha512-ffZ8ePEWj2g2OTZWalX1xZBgvTHhoirs5NEkcYxgUya3/DohG4Css3FV9gzVFfKkQdP++bUMkG8GJ2LrtqzUxA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/node/-/node-21.1.2.tgz", + "integrity": "sha512-BCKooOKT04MJDzLy6U4w3mFWhHCsuoMXqUjcd5g/3zf4bFXOK3ooklvVkxjHUQxRXVG/uPJ+ZcgTC1SE0vpS6g==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", - "@nx/eslint": "20.8.1", - "@nx/jest": "20.8.1", - "@nx/js": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/eslint": "21.1.2", + "@nx/jest": "21.1.2", + "@nx/js": "21.1.2", + "kill-port": "^1.6.1", + "tcp-port-used": "^1.0.2", "tslib": "^2.3.0" } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.8.1.tgz", - "integrity": "sha512-Gat4Io66cV70Oa1CjrMJPsEx5ICpAGayv9hejOtBUEDb6XjR12L2e4wV+4EHliF0UbEcuZAr8/lTROEPk0RGWQ==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-21.1.2.tgz", + "integrity": "sha512-9dO32jd+h7SrvQafJph6b7Bsmp2IotTE0w7dAGb4MGBQni3JWCXaxlMMpWUZXWW1pM5uIkFJO5AASW4UOI7w2w==", "cpu": [ "arm64" ], @@ -8515,15 +8459,12 @@ "optional": true, "os": [ "darwin" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-darwin-x64": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.8.1.tgz", - "integrity": "sha512-TB9mZk7neGFKgBr2wSBgY6c4kFF9vvChNSp3TrEeXR3FppFcYG5eK4AaKfzWCpYb0wMtseAm7NMX1Lu74utClQ==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-21.1.2.tgz", + "integrity": "sha512-5sf+4PRVg9pDVgD53NE1hoPz4lC8Ni34UovQsOrZgDvwU5mqPbIhTzVYRDH86i/086AcCvjT5tEt7rEcuRwlKw==", "cpu": [ "x64" ], @@ -8532,15 +8473,12 @@ "optional": true, "os": [ "darwin" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-freebsd-x64": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.8.1.tgz", - "integrity": "sha512-7UQu0/Afna5Af2GagEQ6rbKfUh75NfUn+g66wsoQoUGBvDW0U7B8P3Ph5Bk4Urub0BSfMVcNg2X7CgfypLFN/g==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-21.1.2.tgz", + "integrity": "sha512-E5HR44fimXlQuAgn/tP9esmvxbzt/92AIl0PBT6L3Juh/xYiXKWhda63H4+UNT8AcLRxVXwfZrGPuGCDs+7y/Q==", "cpu": [ "x64" ], @@ -8549,15 +8487,12 @@ "optional": true, "os": [ "freebsd" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.8.1.tgz", - "integrity": "sha512-Tjh8JkTP+x1jSrzx+ofx1pKpkhIbXd7bi0bPdpYt6NI1lZz2HB/dv8vtdzP80jXEDztHf0AeGnEJVgJKsgI6yg==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-21.1.2.tgz", + "integrity": "sha512-V4n6DE+r12gwJHFjZs+e2GmWYZdhpgA2DYWbsYWRYb1XQCNUg4vPzt+YFzWZ+K2o91k93EBnlLfrag7CqxUslw==", "cpu": [ "arm" ], @@ -8566,15 +8501,12 @@ "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.8.1.tgz", - "integrity": "sha512-2+qPIwav2vrytH6pe7fukBe8+yN5JGbEDCnDO8wKQsHeeZMLAQJiZ7EJH/+vynRkI7oWf87mihIKNQME19+w6A==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-21.1.2.tgz", + "integrity": "sha512-NFhsp27O+mS3r7PWLmJgyZy42WQ72c2pTQSpYfhaBbZPTI5DqBHdANa0sEPmV+ON24qkl5CZKvsmhzjsNmyW6A==", "cpu": [ "arm64" ], @@ -8583,15 +8515,12 @@ "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.8.1.tgz", - "integrity": "sha512-DsKc+DiMsuHqpBWchUUUg6zv4OaexRqpFXys6auZlrpFpn80kSqLQ3S4zZ5AUu+26wxZqEVJs+uxHGwFbhEssQ==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-21.1.2.tgz", + "integrity": "sha512-BgS9npARwcnw+hoaRsbas6vdBAJRBAj5qSeL57LO8Dva+e/6PYqoNyVJ0BgJ98xPXDpzM/NnpeRsndQGpLyhDw==", "cpu": [ "arm64" ], @@ -8600,15 +8529,12 @@ "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.8.1.tgz", - "integrity": "sha512-Kzru44beVKAmSG84ShuMIIfyu2Uu5r8gsHdtiQPBIOGkZa0Z/e6YtUxcN3w1UZ7yvvzoQ4pQLvqU6UZRSWZtEg==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-21.1.2.tgz", + "integrity": "sha512-tjBINbymQgxnIlNK/m6B0P5eiGRSHSYPNkFdh3+sra80AP/ymHGLRxxZy702Ga2xg8RVr9zEvuXYHI+QBa1YmA==", "cpu": [ "x64" ], @@ -8617,15 +8543,12 @@ "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.8.1.tgz", - "integrity": "sha512-cSVVb7DVMhrxCaj/n55okBZS6lZoP5a5vynOBGIV4z3/OJLev+xI9A+3imn/aXnBl8iS69HogYyrW0YTXv4Xaw==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-21.1.2.tgz", + "integrity": "sha512-+0V0YAOWMh1wvpQZuayQ7y+sj2MhE3l7z0JMD9SX/4xv9zLOWGv+EiUmN/fGoU/mwsSkH2wTCo6G6quKF1E8jQ==", "cpu": [ "x64" ], @@ -8634,15 +8557,12 @@ "optional": true, "os": [ "linux" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.8.1.tgz", - "integrity": "sha512-gte5HcvI24CN6b9I6IYTXh/A0CtRfnlAFaJomPpfT8Wcq637aOZzS0arAEZVoU8QZty1350hj6sfu+wSIjoP7A==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-21.1.2.tgz", + "integrity": "sha512-E+ECMQIMJ6R47BMW5YpDyOhTqczvFaL8k24umRkcvlRh3SraczyxBVPkYHDukDp7tCeIszc5EvdWc83C3W8U4w==", "cpu": [ "arm64" ], @@ -8651,15 +8571,12 @@ "optional": true, "os": [ "win32" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.8.1.tgz", - "integrity": "sha512-6c2fVEPdPwJdnRbckBatRDF/g6JAp6p3Mfl90DpuaEF2DZC5pmCXKOsXE0aSIZ+gODom2JIchM++2KmDZPJUoA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-21.1.2.tgz", + "integrity": "sha512-J9rNTBOS7Ld6CybU/cou1Fg52AHSYsiwpZISM2RNM0XIoVSDk3Jsvh4OJgS2rvV0Sp/cgDg3ieOMAreekH+TKw==", "cpu": [ "x64" ], @@ -8668,25 +8585,22 @@ "optional": true, "os": [ "win32" - ], - "engines": { - "node": ">= 10" - } + ] }, "node_modules/@nx/rspack": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-20.8.1.tgz", - "integrity": "sha512-R7+tkwLD+4KYn22r+c4grKfnB4ghxyH2lXUYgmxu7lg/pJsxiy0/Xn7rTHnzI4izTeap2LK9m1F5ZLC3oeJQ6Q==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/rspack/-/rspack-21.1.2.tgz", + "integrity": "sha512-CJBD4e/TXrZyKesAZ7Su8wHuRnBo07ZRpYXgUTEBILeOFiSvnU2630cq47CuyjFFPpWTJ78VOOPnA27G46sHcg==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", - "@nx/js": "20.8.1", - "@nx/module-federation": "20.8.1", - "@nx/web": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/js": "21.1.2", + "@nx/module-federation": "21.1.2", + "@nx/web": "21.1.2", "@phenomnomnominal/tsquery": "~5.0.1", - "@rspack/core": "^1.1.5", - "@rspack/dev-server": "^1.0.9", + "@rspack/core": "^1.3.8", + "@rspack/dev-server": "^1.1.1", "@rspack/plugin-react-refresh": "^1.0.0", "autoprefixer": "^10.4.9", "browserslist": "^4.21.4", @@ -8697,6 +8611,7 @@ "less-loader": "11.1.0", "license-webpack-plugin": "^4.0.2", "loader-utils": "^2.0.3", + "parse5": "4.0.0", "picocolors": "^1.1.0", "postcss": "^8.4.38", "postcss-import": "~14.1.0", @@ -8716,13 +8631,6 @@ "@module-federation/node": "^2.6.26" } }, - "node_modules/@nx/rspack/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/@nx/rspack/node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -8733,31 +8641,6 @@ "node": "*" } }, - "node_modules/@nx/rspack/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/@nx/rspack/node_modules/cookie": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", @@ -8868,25 +8751,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/@nx/rspack/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@nx/rspack/node_modules/less-loader": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", @@ -8940,70 +8804,38 @@ "dev": true, "license": "MIT" }, - "node_modules/@nx/rspack/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "node_modules/@nx/rspack/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true, "license": "MIT" }, - "node_modules/@nx/rspack/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@nx/rspack/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/@nx/storybook": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-20.8.1.tgz", - "integrity": "sha512-SlneVKhePyoG30s3LHFIWU1ZjoeekCQFZ9IktseElHwOxb83wcXXV/61tKCphur3htZEZ7EL226RzMXQYPIknA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/storybook/-/storybook-21.1.2.tgz", + "integrity": "sha512-X/5zT+5uovvZneGR1FS8gh5+4ySlazWb2ra9Ifjn5nFBLFpJ84vnPrWyh/ANMgI4MAAV6seMQwmlwuS2xjcoWw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/cypress": "20.8.1", - "@nx/devkit": "20.8.1", - "@nx/eslint": "20.8.1", - "@nx/js": "20.8.1", + "@nx/cypress": "21.1.2", + "@nx/devkit": "21.1.2", + "@nx/eslint": "21.1.2", + "@nx/js": "21.1.2", "@phenomnomnominal/tsquery": "~5.0.1", "semver": "^7.5.3", "tslib": "^2.3.0" } }, "node_modules/@nx/web": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.8.1.tgz", - "integrity": "sha512-sZjL5vLkL3IDBGJwPlZG9PP7hDe/PjnQkVji0VmaFRRhiEQqxyfbNy6k9f5BWvc3tj3IITDofLcVvmTFMSHisw==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-21.1.2.tgz", + "integrity": "sha512-ONw3bEO6rc9DqM9Jnt6Rc5xkSBMzruWA2KvHVlU4qaoUs1VKbnmJ28dM72lFMn8wbOOeq+RG7GC2nBpifBPLHw==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", - "@nx/js": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/js": "21.1.2", "detect-port": "^1.5.1", "http-server": "^14.1.0", "picocolors": "^1.1.0", @@ -9011,15 +8843,15 @@ } }, "node_modules/@nx/webpack": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.8.1.tgz", - "integrity": "sha512-Xz1badU23VvRl6ij20D5eTndBsPGxOUC67h7gQfmLqnsUxf9R6NgOnMxt2Y42QWRx5jXxuQf1AbJ/0N+z2fi8A==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-21.1.2.tgz", + "integrity": "sha512-MtTXjxT8HB47uaMi4Hw6VGnyycQ5gm7Trazk4Fq7mr4ReIrP0vp1BGnNgho2d1dFONY0eA6MeBf9j/5jOI+MBA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.23.2", - "@nx/devkit": "20.8.1", - "@nx/js": "20.8.1", + "@nx/devkit": "21.1.2", + "@nx/js": "21.1.2", "@phenomnomnominal/tsquery": "~5.0.1", "ajv": "^8.12.0", "autoprefixer": "^10.4.9", @@ -9070,13 +8902,6 @@ "@types/send": "*" } }, - "node_modules/@nx/webpack/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/@nx/webpack/node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -9087,31 +8912,6 @@ "node": "*" } }, - "node_modules/@nx/webpack/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/@nx/webpack/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -9285,25 +9085,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/@nx/webpack/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@nx/webpack/node_modules/globby": { "version": "12.2.0", "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", @@ -9493,13 +9274,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@nx/webpack/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@nx/webpack/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -9547,22 +9321,6 @@ "webpack": "^5.0.0" } }, - "node_modules/@nx/webpack/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@nx/webpack/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -9576,22 +9334,6 @@ "node": ">=8.10.0" } }, - "node_modules/@nx/webpack/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/@nx/webpack/node_modules/slash": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", @@ -9675,22 +9417,48 @@ } }, "node_modules/@nx/workspace": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.8.1.tgz", - "integrity": "sha512-Y6HlERFJbLHn1J9JHMsPDSRK5iBSH4hbw9TkqwkINeHBDX8bIilnO3tK6VVMIPTzTHJldxI+zQ1IrzVisZpJsA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-21.1.2.tgz", + "integrity": "sha512-I4e/X/GN0Vx3FDZv/7bFYmXfOPmcMI3cDO/rg+TqudsuxVM7tJ7+8jtwdpU4I2IEpI6oU9FZ7Fu9R2uNqL5rrQ==", "dev": true, "license": "MIT", "dependencies": { - "@nx/devkit": "20.8.1", + "@nx/devkit": "21.1.2", "@zkochan/js-yaml": "0.0.7", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "20.8.1", + "nx": "21.1.2", "picomatch": "4.0.2", "tslib": "^2.3.0", "yargs-parser": "21.1.1" } }, + "node_modules/@openrouter/ai-sdk-provider": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@openrouter/ai-sdk-provider/-/ai-sdk-provider-0.7.2.tgz", + "integrity": "sha512-Fry2mV7uGGJRmP9JntTZRc8ElESIk7AJNTacLbF6Syoeb5k8d7HPGkcK9rTXDlqBb8HgU1hOKtz23HojesTmnw==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "ai": "^4.3.16", + "zod": "^3.25.34" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -10127,97 +9895,101 @@ "license": "MIT" }, "node_modules/@prisma/client": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.7.0.tgz", - "integrity": "sha512-+k61zZn1XHjbZul8q6TdQLpuI/cvyfil87zqK2zpreNIXyXtpUv3+H/oM69hcsFcZXaokHJIzPAt5Z8C8eK2QA==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-6.11.1.tgz", + "integrity": "sha512-5CLFh8QP6KxRm83pJ84jaVCeSVPQr8k0L2SEtOJHwdkS57/VQDcI/wQpGmdyOZi+D9gdNabdo8tj1Uk+w+upsQ==", "hasInstallScript": true, "license": "Apache-2.0", "engines": { "node": ">=18.18" }, "peerDependencies": { - "prisma": "*" + "prisma": "*", + "typescript": ">=5.1.0" }, "peerDependenciesMeta": { "prisma": { "optional": true + }, + "typescript": { + "optional": true } } }, "node_modules/@prisma/config": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.7.0.tgz", - "integrity": "sha512-di8QDdvSz7DLUi3OOcCHSwxRNeW7jtGRUD2+Z3SdNE3A+pPiNT8WgUJoUyOwJmUr5t+JA2W15P78C/N+8RXrOA==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-6.11.1.tgz", + "integrity": "sha512-z6rCTQN741wxDq82cpdzx2uVykpnQIXalLhrWQSR0jlBVOxCIkz3HZnd8ern3uYTcWKfB3IpVAF7K2FU8t/8AQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "esbuild": ">=0.12 <1", - "esbuild-register": "3.6.0" + "jiti": "2.4.2" + } + }, + "node_modules/@prisma/config/node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "devOptional": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/@prisma/debug": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.7.0.tgz", - "integrity": "sha512-RabHn9emKoYFsv99RLxvfG2GHzWk2ZI1BuVzqYtmMSIcuGboHY5uFt3Q3boOREM9de6z5s3bQoyKeWnq8Fz22w==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-6.11.1.tgz", + "integrity": "sha512-lWRb/YSWu8l4Yum1UXfGLtqFzZkVS2ygkWYpgkbgMHn9XJlMITIgeMvJyX5GepChzhmxuSuiq/MY/kGFweOpGw==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.7.0.tgz", - "integrity": "sha512-3wDMesnOxPrOsq++e5oKV9LmIiEazFTRFZrlULDQ8fxdub5w4NgRBoxtWbvXmj2nJVCnzuz6eFix3OhIqsZ1jw==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-6.11.1.tgz", + "integrity": "sha512-6eKEcV6V8W2eZAUwX2xTktxqPM4vnx3sxz3SDtpZwjHKpC6lhOtc4vtAtFUuf5+eEqBk+dbJ9Dcaj6uQU+FNNg==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.7.0", - "@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", - "@prisma/fetch-engine": "6.7.0", - "@prisma/get-platform": "6.7.0" + "@prisma/debug": "6.11.1", + "@prisma/engines-version": "6.11.1-1.f40f79ec31188888a2e33acda0ecc8fd10a853a9", + "@prisma/fetch-engine": "6.11.1", + "@prisma/get-platform": "6.11.1" } }, "node_modules/@prisma/engines-version": { - "version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed.tgz", - "integrity": "sha512-EvpOFEWf1KkJpDsBCrih0kg3HdHuaCnXmMn7XFPObpFTzagK1N0Q0FMnYPsEhvARfANP5Ok11QyoTIRA2hgJTA==", + "version": "6.11.1-1.f40f79ec31188888a2e33acda0ecc8fd10a853a9", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.11.1-1.f40f79ec31188888a2e33acda0ecc8fd10a853a9.tgz", + "integrity": "sha512-swFJTOOg4tHyOM1zB/pHb3MeH0i6t7jFKn5l+ZsB23d9AQACuIRo9MouvuKGvnDogzkcjbWnXi/NvOZ0+n5Jfw==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/fetch-engine": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.7.0.tgz", - "integrity": "sha512-zLlAGnrkmioPKJR4Yf7NfW3hftcvqeNNEHleMZK9yX7RZSkhmxacAYyfGsCcqRt47jiZ7RKdgE0Wh2fWnm7WsQ==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.11.1.tgz", + "integrity": "sha512-NBYzmkXTkj9+LxNPRSndaAeALOL1Gr3tjvgRYNqruIPlZ6/ixLeuE/5boYOewant58tnaYFZ5Ne0jFBPfGXHpQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.7.0", - "@prisma/engines-version": "6.7.0-36.3cff47a7f5d65c3ea74883f1d736e41d68ce91ed", - "@prisma/get-platform": "6.7.0" + "@prisma/debug": "6.11.1", + "@prisma/engines-version": "6.11.1-1.f40f79ec31188888a2e33acda0ecc8fd10a853a9", + "@prisma/get-platform": "6.11.1" } }, "node_modules/@prisma/get-platform": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.7.0.tgz", - "integrity": "sha512-i9IH5lO4fQwnMLvQLYNdgVh9TK3PuWBfQd7QLk/YurnAIg+VeADcZDbmhAi4XBBDD+hDif9hrKyASu0hbjwabw==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.11.1.tgz", + "integrity": "sha512-b2Z8oV2gwvdCkFemBTFd0x4lsL4O2jLSx8lB7D+XqoFALOQZPa7eAPE1NU0Mj1V8gPHRxIsHnyUNtw2i92psUw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "6.7.0" - } - }, - "node_modules/@redis/bloom": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz", - "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" + "@prisma/debug": "6.11.1" } }, "node_modules/@redis/client": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.0.tgz", - "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.6.1.tgz", + "integrity": "sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==", "license": "MIT", "dependencies": { "cluster-key-slot": "1.1.2", @@ -10228,42 +10000,6 @@ "node": ">=14" } }, - "node_modules/@redis/graph": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz", - "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@redis/json": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.7.tgz", - "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@redis/search": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.2.0.tgz", - "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@redis/time-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.1.0.tgz", - "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.34.8", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", @@ -10434,9 +10170,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", - "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", "cpu": [ "riscv64" ], @@ -10526,27 +10262,27 @@ ] }, "node_modules/@rspack/binding": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.2.8.tgz", - "integrity": "sha512-T3FMB3N9P1AbSAryfkSRJkPtmeSYs/Gj9zUZoPz1ckPEIcWZmpUOQbJylldjbw5waxtCL1haHNbi0pcSvxiaJw==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.3.13.tgz", + "integrity": "sha512-BdM6tfLCP7/0H5uGc+okG6AYsU9JEnR5bRHq4YuGaS4tb+N5ct0czm0LprGMZ7zRAnIql/zoLn/bHlheNxZw3g==", "devOptional": true, "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.2.8", - "@rspack/binding-darwin-x64": "1.2.8", - "@rspack/binding-linux-arm64-gnu": "1.2.8", - "@rspack/binding-linux-arm64-musl": "1.2.8", - "@rspack/binding-linux-x64-gnu": "1.2.8", - "@rspack/binding-linux-x64-musl": "1.2.8", - "@rspack/binding-win32-arm64-msvc": "1.2.8", - "@rspack/binding-win32-ia32-msvc": "1.2.8", - "@rspack/binding-win32-x64-msvc": "1.2.8" + "@rspack/binding-darwin-arm64": "1.3.13", + "@rspack/binding-darwin-x64": "1.3.13", + "@rspack/binding-linux-arm64-gnu": "1.3.13", + "@rspack/binding-linux-arm64-musl": "1.3.13", + "@rspack/binding-linux-x64-gnu": "1.3.13", + "@rspack/binding-linux-x64-musl": "1.3.13", + "@rspack/binding-win32-arm64-msvc": "1.3.13", + "@rspack/binding-win32-ia32-msvc": "1.3.13", + "@rspack/binding-win32-x64-msvc": "1.3.13" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.2.8.tgz", - "integrity": "sha512-bDlrlroY3iMlzna/3i1gD6eRmhJW2zRyC3Ov6aR1micshVQ9RteigYZWkjZuQfyC5Z8dCcLUQJVojz+pqp0JXg==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.3.13.tgz", + "integrity": "sha512-1c+KC+TFaKRWu+SO4cJZ5oHKOFuDhTIitbSIG9boJpDRoZmJxHDmFyTTxVI2r2QUjxJaDdUlSFepybhhJ3UiPg==", "cpu": [ "arm64" ], @@ -10558,9 +10294,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.2.8.tgz", - "integrity": "sha512-0/qOVbMuzZ+WbtDa4TbH46R4vph/W6MHcXbrXDO+vpdTMFDVJ64DnZXT7aqvGcY+7vTCIGm0GT+6ooR4KaIX8A==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.3.13.tgz", + "integrity": "sha512-YBF+XjoGSjhJ5o/xOaCBd39BntMudMeup11j2Dz+rrTH+wG6TvH017HYIgDMT3UBVv66eNsQpzA0ZW5raJ0lbA==", "cpu": [ "x64" ], @@ -10572,9 +10308,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.8.tgz", - "integrity": "sha512-En/SMl45s19iUVb1/ZDFQvFDxIjnlfk7yqV3drMWWAL5HSgksNejaTIFTO52aoohIBbmwuk5wSGcbU0G0IFiPg==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.3.13.tgz", + "integrity": "sha512-II71Ez7Z0/5ZpcK+kCgvXFKK0AysS9La8LNQbqf2wmzxDJi5H8eVUiwkM5BabICxzOWYtTGJLZ89QbCYaFbqCg==", "cpu": [ "arm64" ], @@ -10586,9 +10322,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.8.tgz", - "integrity": "sha512-N1oZsXfJ9VLLcK7p1PS65cxLYQCZ7iqHW2OP6Ew2+hlz/d1hzngxgzrtZMCXFOHXDvTzVu5ff6jGS2v7+zv2tA==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.3.13.tgz", + "integrity": "sha512-JFFhqglKVjlWcmmVwdS80Kw6v35yY9xlQJup09mL8gMtiiFiT36wTyTujz15Iv+2+S/Dv0Z+UeUJ99KRbQxgcQ==", "cpu": [ "arm64" ], @@ -10600,9 +10336,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.8.tgz", - "integrity": "sha512-BdPaepoLKuaVwip4QK/nGqNi1xpbCWSxiycPbKRrGqKgt/QGihxxFgiqr4EpWQVIJNIMy4nCsg4arO0+H1KWGQ==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.3.13.tgz", + "integrity": "sha512-ogm4rt+PMQHkMg/0mA9VTjfGE3c+YaHZQT8KrFgTsoj2YCW9WO2J/RjdMc6STG4Y10BWO9Ar2azLxxHrKb+8UQ==", "cpu": [ "x64" ], @@ -10614,9 +10350,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.8.tgz", - "integrity": "sha512-GFv0Bod268OcXIcjeLoPlK0oz8rClEIxIRFkz+ejhbvfCwRJ+Fd+EKaaKQTBfZQujPqc0h2GctIF25nN5pFTmA==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.3.13.tgz", + "integrity": "sha512-8icDyXhg1iMKhQ3X2FTgAGQTQqnli9FyqHCuRIBauxy1V4W478Mp9Y+V+ErVUY1YxbZEUrkt3a59hssjGeDEeg==", "cpu": [ "x64" ], @@ -10628,9 +10364,9 @@ ] }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.8.tgz", - "integrity": "sha512-aEU+uJdbvJJGrzzAsjbjrPeNbG/bcG8JoXK2kSsUB+/sWHTIkHX0AQ3oX3aV/lcLKgZWrUxLAfLoCXEnIHMEyQ==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.3.13.tgz", + "integrity": "sha512-y5XxwxDW4DrPKy+8P6t7I7IbA7B/iXjLoaS0jP/EwjSHWf/EnZzq9MgWqdop1km8Mwx6s1zcj+0qs73jL2N98w==", "cpu": [ "arm64" ], @@ -10642,9 +10378,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.2.8.tgz", - "integrity": "sha512-GHYzNOSoiLyG9elLTmMqADJMQzjll+co4irp5AgZ+KHG9EVq0qEHxDqDIJxZnUA15U8JDvCgo6YAo3T0BFEL0Q==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.3.13.tgz", + "integrity": "sha512-n24sznsZe3lC8ok6MgsT1nG4lVx3SQ/lZ0g23i2BGMRN8/p+kaC2eoPaHe/4m9Liz/W4Z5LhZCCvg4DQMEzeLA==", "cpu": [ "ia32" ], @@ -10656,9 +10392,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.8.tgz", - "integrity": "sha512-EigKLhKLH1kfv1e/ZgXuSKlIjkbyneJtiLbNDz7EeEVFGV1XMM6bsCea1sb2WOxsPYiOX4Q5JmR1j1KGrZS/LA==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.3.13.tgz", + "integrity": "sha512-CLyTNo0OrOD7xFKusFciKKG+8CXPowjPz+tcdkkrKYqGzAPzOcszblikITJhMbc7DLMzdTRSZUTkKLRydYH9sw==", "cpu": [ "x64" ], @@ -10670,16 +10406,15 @@ ] }, "node_modules/@rspack/core": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.2.8.tgz", - "integrity": "sha512-ppj3uQQtkhgrYDLrUqb33YbpNEZCpAudpfVuOHGsvUrAnu1PijbfJJymoA5ZvUhM+HNMvPI5D1ie97TXyb0UVg==", + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.3.13.tgz", + "integrity": "sha512-j9jsNzKeEN14yraqX4jAFrM/nMfX5YEPgEMPlp4g5NAu3siaBa8gDF5brbdNq6TDXnTHK1MwwjaMdKA+3YeBKQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@module-federation/runtime-tools": "0.8.4", - "@rspack/binding": "1.2.8", - "@rspack/lite-tapable": "1.0.1", - "caniuse-lite": "^1.0.30001702" + "@module-federation/runtime-tools": "0.14.3", + "@rspack/binding": "1.3.13", + "@rspack/lite-tapable": "1.0.1" }, "engines": { "node": ">=16.0.0" @@ -10694,68 +10429,74 @@ } }, "node_modules/@rspack/core/node_modules/@module-federation/error-codes": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.4.tgz", - "integrity": "sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.14.3.tgz", + "integrity": "sha512-sBJ3XKU9g5Up31jFeXPFsD8AgORV7TLO/cCSMuRewSfgYbG/3vSKLJmfHrO6+PvjZSb9VyV2UaF02ojktW65vw==", "devOptional": true, "license": "MIT" }, "node_modules/@rspack/core/node_modules/@module-federation/runtime": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.4.tgz", - "integrity": "sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.14.3.tgz", + "integrity": "sha512-7ZHpa3teUDVhraYdxQGkfGHzPbjna4LtwbpudgzAxSLLFxLDNanaxCuSeIgSM9c+8sVUNC9kvzUgJEZB0krPJw==", "devOptional": true, "license": "MIT", "dependencies": { - "@module-federation/error-codes": "0.8.4", - "@module-federation/sdk": "0.8.4" + "@module-federation/error-codes": "0.14.3", + "@module-federation/runtime-core": "0.14.3", + "@module-federation/sdk": "0.14.3" } }, - "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.4.tgz", - "integrity": "sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==", + "node_modules/@rspack/core/node_modules/@module-federation/runtime-core": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.14.3.tgz", + "integrity": "sha512-xMFQXflLVW/AJTWb4soAFP+LB4XuhE7ryiLIX8oTyUoBBgV6U2OPghnFljPjeXbud72O08NYlQ1qsHw1kN/V8Q==", "devOptional": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.8.4", - "@module-federation/webpack-bundler-runtime": "0.8.4" + "@module-federation/error-codes": "0.14.3", + "@module-federation/sdk": "0.14.3" } }, - "node_modules/@rspack/core/node_modules/@module-federation/sdk": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.4.tgz", - "integrity": "sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==", + "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.14.3.tgz", + "integrity": "sha512-QBETX7iMYXdSa3JtqFlYU+YkpymxETZqyIIRiqg0gW+XGpH3jgU68yjrme2NBJp7URQi/CFZG8KWtfClk0Pjgw==", "devOptional": true, "license": "MIT", "dependencies": { - "isomorphic-rslog": "0.0.6" + "@module-federation/runtime": "0.14.3", + "@module-federation/webpack-bundler-runtime": "0.14.3" } }, + "node_modules/@rspack/core/node_modules/@module-federation/sdk": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.14.3.tgz", + "integrity": "sha512-THJZMfbXpqjQOLblCQ8jjcBFFXsGRJwUWE9l/Q4SmuCSKMgAwie7yLT0qSGrHmyBYrsUjAuy+xNB4nfKP0pnGw==", + "devOptional": true, + "license": "MIT" + }, "node_modules/@rspack/core/node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.4.tgz", - "integrity": "sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.14.3.tgz", + "integrity": "sha512-hIyJFu34P7bY2NeMIUHAS/mYUHEY71VTAsN0A0AqEJFSVPszheopu9VdXq0VDLrP9KQfuXT8SDxeYeJXyj0mgA==", "devOptional": true, "license": "MIT", "dependencies": { - "@module-federation/runtime": "0.8.4", - "@module-federation/sdk": "0.8.4" + "@module-federation/runtime": "0.14.3", + "@module-federation/sdk": "0.14.3" } }, "node_modules/@rspack/dev-server": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.1.1.tgz", - "integrity": "sha512-9r7vOml2SrFA8cvbcJdSan9wHEo1TPXezF22+s5jvdyAAywg8w7HqDol6TPVv64NUonP1DOdyLxZ+6UW6WZiwg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.1.2.tgz", + "integrity": "sha512-YNzXxWn6DV3X9yeJZ9bqX77wuhm2ko3sGavilBGi1MWuNihhWfhh9dlbipudPyoiwLl0lbioxA/hevosr+ajLg==", "dev": true, "license": "MIT", "dependencies": { "chokidar": "^3.6.0", - "express": "^4.21.2", "http-proxy-middleware": "^2.0.7", - "mime-types": "^2.1.35", "p-retry": "^6.2.0", - "webpack-dev-middleware": "^7.4.2", "webpack-dev-server": "5.2.0", "ws": "^8.18.0" }, @@ -10766,38 +10507,6 @@ "@rspack/core": "*" } }, - "node_modules/@rspack/dev-server/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rspack/dev-server/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/@rspack/dev-server/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -10823,99 +10532,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/@rspack/dev-server/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@rspack/dev-server/node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rspack/dev-server/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/@rspack/dev-server/node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@rspack/dev-server/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@rspack/dev-server/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -10954,30 +10570,6 @@ } } }, - "node_modules/@rspack/dev-server/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@rspack/dev-server/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rspack/dev-server/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@rspack/dev-server/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -10991,22 +10583,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@rspack/dev-server/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@rspack/dev-server/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -11020,22 +10596,6 @@ "node": ">=8.10.0" } }, - "node_modules/@rspack/dev-server/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/@rspack/lite-tapable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz", @@ -11047,9 +10607,9 @@ } }, "node_modules/@rspack/plugin-react-refresh": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.4.1.tgz", - "integrity": "sha512-bRALP4qEauvrB7RcMQ95rUHu1dw19V6c6uYukUTpA2OZDyMHTQ9cpEe28kaDwH/xsAuDNuYqnUZOW3NdLO/q3A==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.4.3.tgz", + "integrity": "sha512-wZx4vWgy5oMEvgyNGd/oUKcdnKaccYWHCRkOqTdAPJC3WcytxhTX+Kady8ERurSBiLyQpoMiU3Iyd+F1Y2Arbw==", "dev": true, "license": "MIT", "dependencies": { @@ -12100,9 +11660,9 @@ } }, "node_modules/@stripe/stripe-js": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-5.4.0.tgz", - "integrity": "sha512-3tfMbSvLGB+OsJ2MsjWjWo+7sp29dwx+3+9kG/TEnZQJt+EwbF/Nomm43cSK+6oXZA9uhspgyrB+BbrPRumx4g==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-7.3.1.tgz", + "integrity": "sha512-pTzb864TQWDRQBPLgSPFRoyjSDUqpCkbEgTzpsjiTjGz1Z5SxZNXJek28w1s6Dyry4CyW4/Izj5jHE/J9hCJYQ==", "license": "MIT", "engines": { "node": ">=12.16" @@ -12747,6 +12307,12 @@ "@types/d3-selection": "*" } }, + "node_modules/@types/diff-match-patch": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", + "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", + "license": "MIT" + }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -12963,9 +12529,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.16", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", - "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz", + "integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==", "dev": true, "license": "MIT" }, @@ -12989,12 +12555,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "version": "22.15.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", + "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.21.0" } }, "node_modules/@types/node-forge": { @@ -14237,6 +13803,32 @@ "node": ">= 14" } }, + "node_modules/ai": { + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/ai/-/ai-4.3.16.tgz", + "integrity": "sha512-KUDwlThJ5tr2Vw0A1ZkbDKNME3wzWhuVfAOwIvFUzl1TPVDFAXDFTXio3p+jaKneB+dKNCvFFlolYmmgHttG1g==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "1.1.3", + "@ai-sdk/provider-utils": "2.2.8", + "@ai-sdk/react": "1.2.12", + "@ai-sdk/ui-utils": "1.2.11", + "@opentelemetry/api": "1.9.0", + "jsondiffpatch": "0.6.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + } + } + }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -14477,6 +14069,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, "node_modules/array-includes": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", @@ -15207,9 +14805,9 @@ } }, "node_modules/big.js": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", - "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-7.0.1.tgz", + "integrity": "sha512-iFgV784tD8kq4ccF1xtNMZnXeZzVuXWWM+ERFzKQjv+A5G9HC8CY3DuV45vgzFFcW+u2tIvmF95+AzWgs6BjCg==", "license": "MIT", "engines": { "node": "*" @@ -15265,6 +14863,60 @@ "dev": true, "license": "MIT" }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/bonjour-service": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", @@ -15702,13 +15354,13 @@ } }, "node_modules/cache-manager": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-6.4.0.tgz", - "integrity": "sha512-eUmPyVqQYzWCt7hx1QrYzQ7oC3MGKM1etxxe8zuq1o7IB4NzdBeWcUGDSWYahaI8fkd538SEZRGadyZWQfvOzQ==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-6.4.3.tgz", + "integrity": "sha512-VV5eq/QQ5rIVix7/aICO4JyvSeEv9eIQuKL5iFwgM2BrcYoE0A/D1mNsAHJAsB0WEbNdBlKkn6Tjz6fKzh/cKQ==", "license": "MIT", "peer": true, "dependencies": { - "keyv": "^5.2.3" + "keyv": "^5.3.3" } }, "node_modules/cachedir": { @@ -16093,13 +15745,13 @@ "license": "MIT" }, "node_modules/class-validator": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz", - "integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", + "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", "license": "MIT", "dependencies": { "@types/validator": "^13.11.8", - "libphonenumber-js": "^1.10.53", + "libphonenumber-js": "^1.11.1", "validator": "^13.9.0" } }, @@ -16688,6 +16340,7 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, "engines": [ "node >= 0.8" ], @@ -16703,12 +16356,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, "license": "MIT" }, "node_modules/concat-stream/node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -16724,12 +16379,14 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, "license": "MIT" }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -18360,7 +18017,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -18429,6 +18085,12 @@ "node": ">=0.3.1" } }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "license": "Apache-2.0" + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -19115,7 +18777,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.4" @@ -20296,18 +19958,18 @@ } }, "node_modules/file-type": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.4.1.tgz", - "integrity": "sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.0.0.tgz", + "integrity": "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==", "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.2.6", - "strtok3": "^10.2.0", + "@tokenizer/inflate": "^0.2.7", + "strtok3": "^10.2.2", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sindresorhus/file-type?sponsor=1" @@ -20400,6 +20062,39 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, "node_modules/find-cache-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", @@ -20921,6 +20616,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fuse.js": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", + "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, "node_modules/gaxios": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", @@ -21107,6 +20811,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-them-args": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/get-them-args/-/get-them-args-1.3.2.tgz", + "integrity": "sha512-LRn8Jlk+DwZE4GTlDbT3Hikd1wSHgLMme/+7ddlqKd7ldwR6LjJgTVWzBnR01wnYGe4KgrXjg287RaI22UHmAw==", + "dev": true, + "license": "MIT" + }, "node_modules/getos": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", @@ -22483,6 +22194,16 @@ "node": ">= 12" } }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -23057,6 +22778,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true, + "license": "MIT" + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -23134,6 +22862,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -23166,16 +22909,6 @@ "node": ">=0.10.0" } }, - "node_modules/isomorphic-rslog": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.6.tgz", - "integrity": "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=14.17.6" - } - }, "node_modules/isomorphic-ws": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", @@ -24640,7 +24373,6 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { @@ -24727,6 +24459,35 @@ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "license": "MIT" }, + "node_modules/jsondiffpatch": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", + "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", + "license": "MIT", + "dependencies": { + "@types/diff-match-patch": "^1.0.36", + "chalk": "^5.3.0", + "diff-match-patch": "^1.0.5" + }, + "bin": { + "jsondiffpatch": "bin/jsondiffpatch.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/jsondiffpatch/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -24924,6 +24685,20 @@ "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", "optional": true }, + "node_modules/kill-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/kill-port/-/kill-port-1.6.1.tgz", + "integrity": "sha512-un0Y55cOM7JKGaLnGja28T38tDDop0AQ8N0KlAdyh+B1nmMoX8AnNmqPNZbS3mUMgiST51DCVqmbFT1gNJpVNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-them-args": "1.3.2", + "shell-exec": "1.0.2" + }, + "bin": { + "kill-port": "cli.js" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -26247,7 +26022,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -26914,21 +26688,36 @@ } }, "node_modules/multer": { - "version": "1.4.5-lts.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", - "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.1.tgz", + "integrity": "sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==", "license": "MIT", "dependencies": { "append-field": "^1.0.0", - "busboy": "^1.0.0", - "concat-stream": "^1.5.2", - "mkdirp": "^0.5.4", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "mkdirp": "^0.5.6", "object-assign": "^4.1.1", - "type-is": "^1.6.4", - "xtend": "^4.0.0" + "type-is": "^1.6.18", + "xtend": "^4.0.2" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 10.16.0" + } + }, + "node_modules/multer/node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, "node_modules/multicast-dns": { @@ -26954,9 +26743,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", - "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -27024,22 +26813,22 @@ "license": "MIT" }, "node_modules/ng-extract-i18n-merge": { - "version": "2.14.3", - "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.14.3.tgz", - "integrity": "sha512-5zYuS/divhP2Tk0fizk7D8q5TyhwRjyj/DgaEgurrRwkWfIZFDUGc98eTziR3vIMsb9/sgbUSyeA+8LllCkKyA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.15.1.tgz", + "integrity": "sha512-vNr+sVySO13imQ1Y7Jwe3JtGKP4Hck4Gzb7i4HxOq9fDLDORDIoazLTiwmZVoW4ZAyqK7kkDavjS0XD+VSMZUA==", "license": "MIT", "dependencies": { - "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0", - "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "@angular-devkit/architect": "^0.1301.0 || ^0.1401.0 || ^0.1501.0 || ^0.1601.0 || ^0.1700.0 || ^0.1800.0 || ^0.1900.0 || ^0.2000.0", + "@angular-devkit/core": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", + "@angular-devkit/schematics": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", + "@schematics/angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", "xmldoc": "^1.1.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "@angular-devkit/build-angular": "^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0" } }, "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { @@ -27122,9 +26911,9 @@ } }, "node_modules/ngx-skeleton-loader": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-11.0.0.tgz", - "integrity": "sha512-SVWgrePXqIX0ToLf/G0Ce+aE6qXCKl/c+9arV61eiFlrqXXaMlXCkVAYT/wpK+4xgVMHXvQha1mnG9YcKVHQ1A==", + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/ngx-skeleton-loader/-/ngx-skeleton-loader-11.2.1.tgz", + "integrity": "sha512-0YWwQgK3X4trtiLvTv3/CMGxcvjPkUbtTTKJJ2EOHhFuvPf0b+XO1KwguK0Ub9BMHnsqK8xOol0cEoVXyNh64Q==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -27135,9 +26924,9 @@ } }, "node_modules/ngx-stripe": { - "version": "19.0.0", - "resolved": "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-19.0.0.tgz", - "integrity": "sha512-Q95EnHcEjZrHg4f4XMwMhRlJNg/jenBfypk9JISC3T4R2hc+J6HS2NMHBuft9hfRepKrcQY+FiSLzH2yS+5cAg==", + "version": "19.7.0", + "resolved": "https://registry.npmjs.org/ngx-stripe/-/ngx-stripe-19.7.0.tgz", + "integrity": "sha512-WQ7IMJT1LmQEa/3y0blAEvbPbtASrIdSGPGC69bodcEEXpKVkEUVEklYKEsJHFMFPqIU36lMA8iue0bfyxuMpA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -27145,7 +26934,7 @@ "peerDependencies": { "@angular/common": ">=19.0.0 <20.0.0", "@angular/core": ">=19.0.0 <20.0.0", - "@stripe/stripe-js": ">=5.0.0 <6.0.0" + "@stripe/stripe-js": ">=7.0.0 <8.0.0" } }, "node_modules/no-case": { @@ -27613,9 +27402,9 @@ "license": "MIT" }, "node_modules/nx": { - "version": "20.8.1", - "resolved": "https://registry.npmjs.org/nx/-/nx-20.8.1.tgz", - "integrity": "sha512-73Uw8YXpsjeLqHSl7NMCmGdCs+8ynPzoNJFWAqVanPETEY9zPd5wevVQmeyzYtNNQU35uj6Os4iUzYunmwnFaA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/nx/-/nx-21.1.2.tgz", + "integrity": "sha512-oczAEOOkQHElxCXs2g2jXDRabDRsmub/h5SAgqAUDSJ2CRnYGVVlgZX7l+o+A9kSqfONyLy5FlJ1pSWlvPuG4w==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -27649,6 +27438,7 @@ "string-width": "^4.2.3", "tar-stream": "~2.2.0", "tmp": "~0.2.1", + "tree-kill": "^1.2.2", "tsconfig-paths": "^4.1.2", "tslib": "^2.3.0", "yaml": "^2.6.0", @@ -27660,16 +27450,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "20.8.1", - "@nx/nx-darwin-x64": "20.8.1", - "@nx/nx-freebsd-x64": "20.8.1", - "@nx/nx-linux-arm-gnueabihf": "20.8.1", - "@nx/nx-linux-arm64-gnu": "20.8.1", - "@nx/nx-linux-arm64-musl": "20.8.1", - "@nx/nx-linux-x64-gnu": "20.8.1", - "@nx/nx-linux-x64-musl": "20.8.1", - "@nx/nx-win32-arm64-msvc": "20.8.1", - "@nx/nx-win32-x64-msvc": "20.8.1" + "@nx/nx-darwin-arm64": "21.1.2", + "@nx/nx-darwin-x64": "21.1.2", + "@nx/nx-freebsd-x64": "21.1.2", + "@nx/nx-linux-arm-gnueabihf": "21.1.2", + "@nx/nx-linux-arm64-gnu": "21.1.2", + "@nx/nx-linux-arm64-musl": "21.1.2", + "@nx/nx-linux-x64-gnu": "21.1.2", + "@nx/nx-linux-x64-musl": "21.1.2", + "@nx/nx-win32-arm64-msvc": "21.1.2", + "@nx/nx-win32-x64-msvc": "21.1.2" }, "peerDependencies": { "@swc-node/register": "^1.8.0", @@ -28641,6 +28431,12 @@ "devOptional": true, "license": "ISC" }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -28910,9 +28706,9 @@ } }, "node_modules/portfinder": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.36.tgz", - "integrity": "sha512-gMKUzCoP+feA7t45moaSx7UniU7PgGN3hA8acAB+3Qn7/js0/lJ07fYZlxt9riE9S3myyxDCyAFzSrLlta0c9g==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.37.tgz", + "integrity": "sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==", "dev": true, "license": "MIT", "dependencies": { @@ -29592,9 +29388,9 @@ } }, "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", "bin": { @@ -29673,15 +29469,15 @@ } }, "node_modules/prisma": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.7.0.tgz", - "integrity": "sha512-vArg+4UqnQ13CVhc2WUosemwh6hr6cr6FY2uzDvCIFwH8pu8BXVv38PktoMLVjtX7sbYThxbnZF5YiR8sN2clw==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-6.11.1.tgz", + "integrity": "sha512-VzJToRlV0s9Vu2bfqHiRJw73hZNCG/AyJeX+kopbu4GATTjTUdEWUteO3p4BLYoHpMS4o8pD3v6tF44BHNZI1w==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/config": "6.7.0", - "@prisma/engines": "6.7.0" + "@prisma/config": "6.11.1", + "@prisma/engines": "6.11.1" }, "bin": { "prisma": "build/index.js" @@ -29689,9 +29485,6 @@ "engines": { "node": ">=18.18" }, - "optionalDependencies": { - "fsevents": "2.3.3" - }, "peerDependencies": { "typescript": ">=5.1.0" }, @@ -29796,7 +29589,6 @@ "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "devOptional": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" @@ -29820,7 +29612,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -29897,7 +29688,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "devOptional": true, "license": "MIT" }, "node_modules/queue-microtask": { @@ -29983,7 +29773,6 @@ "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -30124,23 +29913,6 @@ "node": ">=8" } }, - "node_modules/redis": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.7.0.tgz", - "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==", - "license": "MIT", - "workspaces": [ - "./packages/*" - ], - "dependencies": { - "@redis/bloom": "1.2.0", - "@redis/client": "1.6.0", - "@redis/graph": "1.1.1", - "@redis/json": "1.0.7", - "@redis/search": "1.2.0", - "@redis/time-series": "1.1.0" - } - }, "node_modules/redis-errors": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", @@ -31521,6 +31293,12 @@ "dev": true, "license": "MIT" }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" + }, "node_modules/select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -31720,6 +31498,21 @@ "node": ">= 0.6" } }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -31810,6 +31603,13 @@ "node": ">=8" } }, + "node_modules/shell-exec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shell-exec/-/shell-exec-1.0.2.tgz", + "integrity": "sha512-jyVd+kU2X+mWKMmGhx4fpWbPsjvD53k9ivqetutVW/BQ+WIZoDoP4d8vUMGezV6saZsiNoW2f9GIhg9Dondohg==", + "dev": true, + "license": "MIT" + }, "node_modules/shell-quote": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", @@ -32706,16 +32506,23 @@ } }, "node_modules/stripe": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/stripe/-/stripe-17.3.0.tgz", - "integrity": "sha512-WACmytj1MssbIwGwPfAomo61jgldb2B/cB6A3W/Bqs9zId1olVcAa8X7HERkqpw4190GSsbvrD7KnkZogatyvw==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-18.2.1.tgz", + "integrity": "sha512-GwB1B7WSwEBzW4dilgyJruUYhbGMscrwuyHsPUmSRKrGHZ5poSh2oU9XKdii5BFVJzXHn35geRvGJ6R8bYcp8w==", "license": "MIT", "dependencies": { - "@types/node": ">=8.1.0", "qs": "^6.11.0" }, "engines": { "node": ">=12.*" + }, + "peerDependencies": { + "@types/node": ">=12.x.x" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/strtok3": { @@ -32950,6 +32757,19 @@ "node": ">= 10" } }, + "node_modules/swr": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", + "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -33110,6 +32930,42 @@ "node": ">=10" } }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/tcp-port-used/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, "node_modules/telejson": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", @@ -33395,7 +33251,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "devOptional": true, "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", @@ -33407,11 +33262,22 @@ "node": ">=6" } }, + "node_modules/tough-cookie-file-store": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tough-cookie-file-store/-/tough-cookie-file-store-2.0.3.tgz", + "integrity": "sha512-sMpZVcmFf6EYFHFFl+SYH4W1/OnXBYMGDsv2IlbQ2caHyFElW/UR/gpj/KYU1JwmP4dE9xqwv2+vWcmlXHojSw==", + "license": "MIT", + "dependencies": { + "tough-cookie": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tough-cookie/node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "devOptional": true, "license": "MIT", "engines": { "node": ">= 4.0.0" @@ -33490,15 +33356,16 @@ } }, "node_modules/ts-checker-rspack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ts-checker-rspack-plugin/-/ts-checker-rspack-plugin-1.1.1.tgz", - "integrity": "sha512-BlpPqnfAmV0TcDg58H+1qV8Zb57ilv0x+ajjnxrVQ6BWgC8HzAdc+TycqDOJ4sZZYIV+hywQGozZFGklzbCR6A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ts-checker-rspack-plugin/-/ts-checker-rspack-plugin-1.1.3.tgz", + "integrity": "sha512-VpB+L+F330T484qGp5KqyoU00PRlUlz4kO1ifBpQ5CkKXEFXye8nmeXlZ5rvZAXjFAMRFiG+sI9OewO6Bd9UvA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "@rspack/lite-tapable": "^1.0.0", "chokidar": "^3.5.3", + "is-glob": "^4.0.3", "memfs": "^4.14.0", "minimatch": "^9.0.5", "picocolors": "^1.1.1" @@ -33565,9 +33432,9 @@ } }, "node_modules/ts-checker-rspack-plugin/node_modules/memfs": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.0.tgz", - "integrity": "sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==", + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.2.tgz", + "integrity": "sha512-NgYhCOWgovOXSzvYgUW0LQ7Qy72rWQMGGFJDoWg4G30RHd3z77VbYdtJ4fembJXBy8pMIUA31XNAupobOQlwdg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -34027,9 +33894,9 @@ "license": "Unlicense" }, "node_modules/twitter-api-v2": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.14.2.tgz", - "integrity": "sha512-389e/rWaN8zWkmD5z2IpKVb5+ojPxVtrexQoGBI1Xfib1mE/9M7k7zbnZ3Q/WLwthwcWkQIlB25ecT64AL8LvQ==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.23.0.tgz", + "integrity": "sha512-5i1agETVpTuY68Zuk9i2B3N9wHzc4JIWw0WKyG4CEaFv9mRKmU87roa+U1oYYXTChWb0HMcqfkwoBJHYmLbeDA==", "license": "Apache-2.0" }, "node_modules/type-check": { @@ -34256,9 +34123,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -34470,7 +34337,6 @@ "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "devOptional": true, "license": "MIT", "dependencies": { "querystringify": "^2.1.1", @@ -34484,6 +34350,15 @@ "dev": true, "license": "MIT" }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -34630,9 +34505,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz", - "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "license": "MIT", "peer": true, "dependencies": { @@ -34705,9 +34580,9 @@ } }, "node_modules/vite/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", - "integrity": "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", "cpu": [ "arm" ], @@ -34719,9 +34594,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-android-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz", - "integrity": "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", "cpu": [ "arm64" ], @@ -34733,9 +34608,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz", - "integrity": "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", "cpu": [ "arm64" ], @@ -34747,9 +34622,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz", - "integrity": "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", "cpu": [ "x64" ], @@ -34761,9 +34636,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz", - "integrity": "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", "cpu": [ "arm64" ], @@ -34775,9 +34650,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz", - "integrity": "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", "cpu": [ "x64" ], @@ -34789,9 +34664,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz", - "integrity": "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", "cpu": [ "arm" ], @@ -34803,9 +34678,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz", - "integrity": "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", "cpu": [ "arm" ], @@ -34817,9 +34692,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz", - "integrity": "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", "cpu": [ "arm64" ], @@ -34831,9 +34706,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz", - "integrity": "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", "cpu": [ "arm64" ], @@ -34845,9 +34720,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz", - "integrity": "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", "cpu": [ "loong64" ], @@ -34859,9 +34734,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", - "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", "cpu": [ "ppc64" ], @@ -34873,9 +34748,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", - "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", "cpu": [ "riscv64" ], @@ -34887,9 +34762,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", - "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", "cpu": [ "s390x" ], @@ -34901,9 +34776,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", - "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", "cpu": [ "x64" ], @@ -34915,9 +34790,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", - "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", "cpu": [ "x64" ], @@ -34929,9 +34804,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", - "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", "cpu": [ "arm64" ], @@ -34943,9 +34818,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", - "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", "cpu": [ "ia32" ], @@ -34957,9 +34832,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", - "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", "cpu": [ "x64" ], @@ -34978,9 +34853,9 @@ "peer": true }, "node_modules/vite/node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", "funding": [ { "type": "opencollective", @@ -34998,7 +34873,7 @@ "license": "MIT", "peer": true, "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -35007,9 +34882,9 @@ } }, "node_modules/vite/node_modules/rollup": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz", - "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==", + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", "license": "MIT", "peer": true, "dependencies": { @@ -35023,26 +34898,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.40.2", - "@rollup/rollup-android-arm64": "4.40.2", - "@rollup/rollup-darwin-arm64": "4.40.2", - "@rollup/rollup-darwin-x64": "4.40.2", - "@rollup/rollup-freebsd-arm64": "4.40.2", - "@rollup/rollup-freebsd-x64": "4.40.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", - "@rollup/rollup-linux-arm-musleabihf": "4.40.2", - "@rollup/rollup-linux-arm64-gnu": "4.40.2", - "@rollup/rollup-linux-arm64-musl": "4.40.2", - "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", - "@rollup/rollup-linux-riscv64-gnu": "4.40.2", - "@rollup/rollup-linux-riscv64-musl": "4.40.2", - "@rollup/rollup-linux-s390x-gnu": "4.40.2", - "@rollup/rollup-linux-x64-gnu": "4.40.2", - "@rollup/rollup-linux-x64-musl": "4.40.2", - "@rollup/rollup-win32-arm64-msvc": "4.40.2", - "@rollup/rollup-win32-ia32-msvc": "4.40.2", - "@rollup/rollup-win32-x64-msvc": "4.40.2", + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", "fsevents": "~2.3.2" } }, @@ -35412,36 +35287,6 @@ } } }, - "node_modules/webpack-dev-server/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, - "node_modules/webpack-dev-server/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/webpack-dev-server/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -35536,24 +35381,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/webpack-dev-server/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -35614,12 +35441,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/webpack-dev-server/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, "node_modules/webpack-dev-server/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -35632,21 +35453,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/webpack-dev-server/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/webpack-dev-server/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -35659,21 +35465,6 @@ "node": ">=8.10.0" } }, - "node_modules/webpack-dev-server/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/webpack-hot-middleware": { "version": "2.26.1", "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", @@ -36091,14 +35882,18 @@ } }, "node_modules/yahoo-finance2": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.3.1.tgz", - "integrity": "sha512-hBXdhieq897OoAu2HxA4/Ca+XrYtPFLTtGzPRW5qKCd+nX1ahHID3tmvxVBBlDTeOesdp0wjO5uGJS+o4cnEMw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/yahoo-finance2/-/yahoo-finance2-3.4.1.tgz", + "integrity": "sha512-L8Ubmdsn6f+uJEuEDUUHR5n95TFcGkMiMkV0phmvPONFekAn1vWzsEzGfIDG2ODR7aYBB+aURdQg7a3HX2iUHA==", "license": "MIT", "dependencies": { "@deno/shim-deno": "~0.18.0", "fetch-mock-cache": "npm:fetch-mock-cache@^2.1.3", - "tough-cookie": "npm:tough-cookie@^5.1.1" + "tough-cookie": "npm:tough-cookie@^5.1.1", + "tough-cookie-file-store": "npm:tough-cookie-file-store@^2.0.3" + }, + "bin": { + "yahoo-finance": "bin/yahoo-finance.mjs" }, "engines": { "node": ">=20.0.0" @@ -36217,10 +36012,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.25.67", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", + "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" + } + }, "node_modules/zone.js": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz", - "integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", "license": "MIT" } } diff --git a/package.json b/package.json index a995a8a47..015332f1e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.161.0", + "version": "2.178.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -75,25 +75,27 @@ "@dfinity/identity": "0.15.7", "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", - "@internationalized/number": "3.6.0", - "@keyv/redis": "4.3.4", + "@internationalized/number": "3.6.3", + "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.2", "@nestjs/cache-manager": "3.0.1", - "@nestjs/common": "11.1.0", + "@nestjs/common": "11.1.3", "@nestjs/config": "4.0.2", - "@nestjs/core": "11.1.0", + "@nestjs/core": "11.1.3", "@nestjs/event-emitter": "3.0.1", "@nestjs/jwt": "11.0.0", "@nestjs/passport": "11.0.5", - "@nestjs/platform-express": "11.1.0", + "@nestjs/platform-express": "11.1.3", "@nestjs/schedule": "6.0.0", "@nestjs/serve-static": "5.0.3", - "@prisma/client": "6.7.0", + "@openrouter/ai-sdk-provider": "0.7.2", + "@prisma/client": "6.11.1", "@simplewebauthn/browser": "13.1.0", "@simplewebauthn/server": "13.1.1", - "@stripe/stripe-js": "5.4.0", + "@stripe/stripe-js": "7.3.1", + "ai": "4.3.16", "alphavantage": "2.2.0", - "big.js": "6.2.2", + "big.js": "7.0.1", "bootstrap": "4.6.2", "bull": "4.16.5", "chart.js": "4.4.9", @@ -103,13 +105,14 @@ "chartjs-plugin-datalabels": "2.2.0", "cheerio": "1.0.0", "class-transformer": "0.5.1", - "class-validator": "0.14.1", + "class-validator": "0.14.2", "color": "5.0.0", "countries-and-timezones": "3.7.2", "countries-list": "3.1.1", "countup.js": "2.8.2", "date-fns": "4.1.0", "envalid": "8.0.0", + "fuse.js": "7.1.0", "google-spreadsheet": "3.2.0", "helmet": "7.0.0", "http-status-codes": "2.3.0", @@ -118,11 +121,11 @@ "lodash": "4.17.21", "marked": "15.0.4", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.14.3", + "ng-extract-i18n-merge": "2.15.1", "ngx-device-detector": "9.0.0", "ngx-markdown": "19.0.0", - "ngx-skeleton-loader": "11.0.0", - "ngx-stripe": "19.0.0", + "ngx-skeleton-loader": "11.2.1", + "ngx-stripe": "19.7.0", "open-color": "1.9.1", "papaparse": "5.3.1", "passport": "0.7.0", @@ -131,12 +134,12 @@ "passport-jwt": "4.0.1", "reflect-metadata": "0.2.2", "rxjs": "7.8.1", - "stripe": "17.3.0", + "stripe": "18.2.1", "svgmap": "2.12.2", - "twitter-api-v2": "1.14.2", + "twitter-api-v2": "1.23.0", "uuid": "11.1.0", - "yahoo-finance2": "3.3.1", - "zone.js": "0.15.0" + "yahoo-finance2": "3.4.1", + "zone.js": "0.15.1" }, "devDependencies": { "@angular-devkit/build-angular": "19.2.1", @@ -153,18 +156,18 @@ "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.24.0", "@nestjs/schematics": "11.0.5", - "@nestjs/testing": "11.1.0", - "@nx/angular": "20.8.1", - "@nx/cypress": "20.8.1", - "@nx/eslint-plugin": "20.8.1", - "@nx/jest": "20.8.1", - "@nx/js": "20.8.1", - "@nx/module-federation": "20.8.1", - "@nx/nest": "20.8.1", - "@nx/node": "20.8.1", - "@nx/storybook": "20.8.1", - "@nx/web": "20.8.1", - "@nx/workspace": "20.8.1", + "@nestjs/testing": "11.1.3", + "@nx/angular": "21.1.2", + "@nx/cypress": "21.1.2", + "@nx/eslint-plugin": "21.1.2", + "@nx/jest": "21.1.2", + "@nx/js": "21.1.2", + "@nx/module-federation": "21.1.2", + "@nx/nest": "21.1.2", + "@nx/node": "21.1.2", + "@nx/storybook": "21.1.2", + "@nx/web": "21.1.2", + "@nx/workspace": "21.1.2", "@schematics/angular": "19.2.1", "@storybook/addon-essentials": "8.6.12", "@storybook/addon-interactions": "8.6.12", @@ -174,8 +177,8 @@ "@types/big.js": "6.2.2", "@types/google-spreadsheet": "3.1.5", "@types/jest": "29.5.13", - "@types/lodash": "4.17.16", - "@types/node": "20.14.10", + "@types/lodash": "4.17.17", + "@types/node": "22.15.17", "@types/papaparse": "5.3.7", "@types/passport-google-oauth20": "2.0.16", "@typescript-eslint/eslint-plugin": "8.29.0", @@ -191,10 +194,10 @@ "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-preset-angular": "14.4.2", - "nx": "20.8.1", - "prettier": "3.5.3", + "nx": "21.1.2", + "prettier": "3.6.2", "prettier-plugin-organize-attributes": "1.0.0", - "prisma": "6.7.0", + "prisma": "6.11.1", "react": "18.2.0", "react-dom": "18.2.0", "replace-in-file": "8.3.0", @@ -207,7 +210,7 @@ "webpack-bundle-analyzer": "4.10.2" }, "engines": { - "node": ">=20" + "node": ">=22" }, "prisma": { "seed": "npx ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts" diff --git a/prisma/migrations/20250704214021_changed_type_from_item_to_buy_in_order/migration.sql b/prisma/migrations/20250704214021_changed_type_from_item_to_buy_in_order/migration.sql new file mode 100644 index 000000000..4831beae1 --- /dev/null +++ b/prisma/migrations/20250704214021_changed_type_from_item_to_buy_in_order/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +UPDATE "Order" SET "type" = 'BUY' WHERE "type" = 'ITEM'; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6182ebfe4..a7ffe4d21 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -12,13 +12,13 @@ datasource db { model Access { alias String? createdAt DateTime @default(now()) + granteeUser User? @relation("accessGet", fields: [granteeUserId], onDelete: Cascade, references: [id]) granteeUserId String? id String @id @default(uuid()) permissions AccessPermission[] @default([READ_RESTRICTED]) updatedAt DateTime @updatedAt userId String - GranteeUser User? @relation("accessGet", fields: [granteeUserId], onDelete: Cascade, references: [id]) - User User @relation("accessGive", fields: [userId], onDelete: Cascade, references: [id]) + user User @relation("accessGive", fields: [userId], onDelete: Cascade, references: [id]) @@index([alias]) @@index([granteeUserId]) @@ -35,11 +35,11 @@ model Account { id String @default(uuid()) isExcluded Boolean @default(false) name String? + platform Platform? @relation(fields: [platformId], references: [id]) platformId String? updatedAt DateTime @updatedAt + user User @relation(fields: [userId], onDelete: Cascade, references: [id]) userId String - Platform Platform? @relation(fields: [platformId], references: [id]) - User User @relation(fields: [userId], onDelete: Cascade, references: [id]) @@id([id, userId]) @@index([currency]) @@ -50,6 +50,7 @@ model Account { } model AccountBalance { + account Account @relation(fields: [accountId, userId], onDelete: Cascade, references: [id, userId]) accountId String createdAt DateTime @default(now()) date DateTime @default(now()) @@ -57,7 +58,6 @@ model AccountBalance { updatedAt DateTime @updatedAt userId String value Float - Account Account @relation(fields: [accountId, userId], onDelete: Cascade, references: [id, userId]) @@unique([accountId, date]) @@index([accountId]) @@ -70,8 +70,8 @@ model Analytics { dataProviderGhostfolioDailyRequests Int @default(0) lastRequestAt DateTime @default(now()) updatedAt DateTime @updatedAt + user User @relation(fields: [userId], onDelete: Cascade, references: [id]) userId String @id - User User @relation(fields: [userId], onDelete: Cascade, references: [id]) @@index([lastRequestAt]) @@index([updatedAt]) @@ -82,8 +82,8 @@ model ApiKey { hashedKey String @unique id String @id @default(uuid()) updatedAt DateTime @updatedAt - userId String user User @relation(fields: [userId], onDelete: Cascade, references: [id]) + userId String @@index([userId]) } @@ -95,8 +95,8 @@ model AuthDevice { counter Int id String @id @default(uuid()) updatedAt DateTime @updatedAt + user User @relation(fields: [userId], onDelete: Cascade, references: [id]) userId String - User User @relation(fields: [userId], onDelete: Cascade, references: [id]) @@index([userId]) } @@ -120,6 +120,7 @@ model MarketData { } model Order { + account Account? @relation(fields: [accountId, accountUserId], references: [id, userId]) accountId String? accountUserId String? comment String? @@ -135,10 +136,9 @@ model Order { type Type unitPrice Float updatedAt DateTime @updatedAt + user User @relation(fields: [userId], onDelete: Cascade, references: [id]) userId String - Account Account? @relation(fields: [accountId, accountUserId], references: [id, userId]) SymbolProfile SymbolProfile @relation(fields: [symbolProfileId], references: [id]) - User User @relation(fields: [userId], onDelete: Cascade, references: [id]) @@index([accountId]) @@index([date]) @@ -163,8 +163,8 @@ model Property { model Settings { settings Json? updatedAt DateTime @updatedAt + user User @relation(fields: [userId], onDelete: Cascade, references: [id]) userId String @id - User User @relation(fields: [userId], onDelete: Cascade, references: [id]) } model SymbolProfile { @@ -191,10 +191,10 @@ model SymbolProfile { symbol String symbolMapping Json? url String? + user User? @relation(fields: [userId], onDelete: Cascade, references: [id]) userId String? watchedBy User[] @relation("UserWatchlist") SymbolProfileOverrides SymbolProfileOverrides? - User User? @relation(fields: [userId], onDelete: Cascade, references: [id]) @@unique([dataSource, symbol]) @@index([assetClass]) @@ -233,37 +233,37 @@ model Subscription { } model Tag { - id String @id @default(uuid()) - name String - orders Order[] - userId String? - User User? @relation(fields: [userId], onDelete: Cascade, references: [id]) + activities Order[] + id String @id @default(uuid()) + name String + user User? @relation(fields: [userId], onDelete: Cascade, references: [id]) + userId String? @@unique([name, userId]) @@index([name]) } model User { + accessesGet Access[] @relation("accessGet") accessToken String? + accounts Account[] activities Order[] + analytics Analytics? + apiKeys ApiKey[] authChallenge String? + authDevices AuthDevice[] createdAt DateTime @default(now()) id String @id @default(uuid()) provider Provider @default(ANONYMOUS) role Role @default(USER) subscriptions Subscription[] + tags Tag[] thirdPartyId String? updatedAt DateTime @updatedAt watchlist SymbolProfile[] @relation("UserWatchlist") - Access Access[] @relation("accessGet") AccessGive Access[] @relation("accessGive") - Account Account[] - Analytics Analytics? - ApiKey ApiKey[] - AuthDevice AuthDevice[] Settings Settings? SymbolProfile SymbolProfile[] - Tag Tag[] @@index([accessToken]) @@index([createdAt]) diff --git a/test/import/invalid-currency.csv b/test/import/not-ok/invalid-currency.csv similarity index 100% rename from test/import/invalid-currency.csv rename to test/import/not-ok/invalid-currency.csv diff --git a/test/import/invalid-data-source.json b/test/import/not-ok/invalid-data-source.json similarity index 100% rename from test/import/invalid-data-source.json rename to test/import/not-ok/invalid-data-source.json diff --git a/test/import/invalid-date-before-min.json b/test/import/not-ok/invalid-date-before-min.json similarity index 100% rename from test/import/invalid-date-before-min.json rename to test/import/not-ok/invalid-date-before-min.json diff --git a/test/import/invalid-date-yy.csv b/test/import/not-ok/invalid-date-yy.csv similarity index 100% rename from test/import/invalid-date-yy.csv rename to test/import/not-ok/invalid-date-yy.csv diff --git a/test/import/invalid-date.json b/test/import/not-ok/invalid-date.json similarity index 100% rename from test/import/invalid-date.json rename to test/import/not-ok/invalid-date.json diff --git a/test/import/invalid-fee.csv b/test/import/not-ok/invalid-fee.csv similarity index 100% rename from test/import/invalid-fee.csv rename to test/import/not-ok/invalid-fee.csv diff --git a/test/import/invalid-multi-line.csv b/test/import/not-ok/invalid-multi-line.csv similarity index 100% rename from test/import/invalid-multi-line.csv rename to test/import/not-ok/invalid-multi-line.csv diff --git a/test/import/invalid-symbol-btc-usd.csv b/test/import/not-ok/invalid-symbol-btc-usd.csv similarity index 100% rename from test/import/invalid-symbol-btc-usd.csv rename to test/import/not-ok/invalid-symbol-btc-usd.csv diff --git a/test/import/invalid-symbol.csv b/test/import/not-ok/invalid-symbol.csv similarity index 100% rename from test/import/invalid-symbol.csv rename to test/import/not-ok/invalid-symbol.csv diff --git a/test/import/invalid-symbol.json b/test/import/not-ok/invalid-symbol.json similarity index 100% rename from test/import/invalid-symbol.json rename to test/import/not-ok/invalid-symbol.json diff --git a/test/import/not-ok/invalid-type-deprecated.json b/test/import/not-ok/invalid-type-deprecated.json new file mode 100644 index 000000000..77572df85 --- /dev/null +++ b/test/import/not-ok/invalid-type-deprecated.json @@ -0,0 +1,20 @@ +{ + "meta": { + "date": "2023-02-05T00:00:00.000Z", + "version": "dev" + }, + "activities": [ + { + "accountId": null, + "comment": null, + "fee": 0, + "quantity": 1, + "type": "ITEM", + "unitPrice": 500000, + "currency": "USD", + "dataSource": "MANUAL", + "date": "2022-01-01T00:00:00.000Z", + "symbol": "Penthouse Apartment" + } + ] +} diff --git a/test/import/not-ok/invalid-type.json b/test/import/not-ok/invalid-type.json new file mode 100644 index 000000000..a23f72411 --- /dev/null +++ b/test/import/not-ok/invalid-type.json @@ -0,0 +1,18 @@ +{ + "meta": { + "date": "2021-01-01T00:00:00.000Z", + "version": "dev" + }, + "activities": [ + { + "currency": "USD", + "dataSource": "YAHOO", + "date": "2021-01-01T00:00:00.000Z", + "fee": 0, + "quantity": 20, + "symbol": "AAPL", + "type": "", + "unitPrice": 100.0 + } + ] +} diff --git a/test/import/unavailable-exchange-rate.json b/test/import/not-ok/unavailable-exchange-rate.json similarity index 100% rename from test/import/unavailable-exchange-rate.json rename to test/import/not-ok/unavailable-exchange-rate.json diff --git a/test/import/unexpected-format.json b/test/import/not-ok/unexpected-format.json similarity index 100% rename from test/import/unexpected-format.json rename to test/import/not-ok/unexpected-format.json diff --git a/test/import/ok-500-activities.json b/test/import/ok/500-activities.json similarity index 100% rename from test/import/ok-500-activities.json rename to test/import/ok/500-activities.json diff --git a/test/import/ok-btceur.json b/test/import/ok/btceur.json similarity index 100% rename from test/import/ok-btceur.json rename to test/import/ok/btceur.json diff --git a/test/import/ok-btcusd.csv b/test/import/ok/btcusd.csv similarity index 100% rename from test/import/ok-btcusd.csv rename to test/import/ok/btcusd.csv diff --git a/test/import/ok-btcusd.json b/test/import/ok/btcusd.json similarity index 100% rename from test/import/ok-btcusd.json rename to test/import/ok/btcusd.json diff --git a/test/import/ok-derived-currency.json b/test/import/ok/derived-currency.json similarity index 100% rename from test/import/ok-derived-currency.json rename to test/import/ok/derived-currency.json diff --git a/test/import/ok-novn-buy-and-sell-partially.json b/test/import/ok/novn-buy-and-sell-partially.json similarity index 100% rename from test/import/ok-novn-buy-and-sell-partially.json rename to test/import/ok/novn-buy-and-sell-partially.json diff --git a/test/import/ok-novn-buy-and-sell.json b/test/import/ok/novn-buy-and-sell.json similarity index 100% rename from test/import/ok-novn-buy-and-sell.json rename to test/import/ok/novn-buy-and-sell.json diff --git a/test/import/ok.csv b/test/import/ok/sample.csv similarity index 81% rename from test/import/ok.csv rename to test/import/ok/sample.csv index 9f334da15..a22a4b89e 100644 --- a/test/import/ok.csv +++ b/test/import/ok/sample.csv @@ -2,5 +2,5 @@ Date,Code,DataSource,Currency,Price,Quantity,Action,Fee,Note 01-09-2021,Account Opening Fee,MANUAL,USD,0,0,fee,49, 16-09-2021,MSFT,YAHOO,USD,298.580,5,buy,19.00,My first order 🤓 17/11/2021,MSFT,YAHOO,USD,0.62,5,dividend,0.00, -01.01.2022,Penthouse Apartment,MANUAL,USD,500000.0,1,item,0.00, +01.01.2022,Penthouse Apartment,MANUAL,USD,500000.0,1,buy,0.00, 20500606,US5949181045,YAHOO,USD,0.00,0,buy,0.00, diff --git a/test/import/ok.json b/test/import/ok/sample.json similarity index 88% rename from test/import/ok.json rename to test/import/ok/sample.json index 4bce98ba2..01bcc60d9 100644 --- a/test/import/ok.json +++ b/test/import/ok/sample.json @@ -6,6 +6,16 @@ "accounts": [ { "balance": 2000, + "balances": [ + { + "date": "2024-12-31T00:00:00.000Z", + "value": 2000 + }, + { + "date": "2023-12-31T00:00:00.000Z", + "value": 1000 + } + ], "currency": "USD", "id": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", "isExcluded": false, @@ -31,7 +41,7 @@ "comment": null, "fee": 0, "quantity": 1, - "type": "ITEM", + "type": "BUY", "unitPrice": 500000, "currency": "USD", "dataSource": "MANUAL", diff --git a/test/import/ok-vti-buy-long-history.json b/test/import/ok/vti-buy-long-history.json similarity index 100% rename from test/import/ok-vti-buy-long-history.json rename to test/import/ok/vti-buy-long-history.json diff --git a/test/import/ok-vti-buy-on-ibkr.csv b/test/import/ok/vti-buy-on-ibkr.csv similarity index 100% rename from test/import/ok-vti-buy-on-ibkr.csv rename to test/import/ok/vti-buy-on-ibkr.csv diff --git a/test/import/ok-without-accounts.json b/test/import/ok/without-accounts.json similarity index 97% rename from test/import/ok-without-accounts.json rename to test/import/ok/without-accounts.json index 2ba0925b1..3a5320741 100644 --- a/test/import/ok-without-accounts.json +++ b/test/import/ok/without-accounts.json @@ -17,7 +17,7 @@ { "fee": 0, "quantity": 1, - "type": "ITEM", + "type": "BUY", "unitPrice": 500000, "currency": "USD", "dataSource": "MANUAL",
    + Name + {{ element?.name }} + Change from All Time High diff --git a/libs/ui/src/lib/benchmark/benchmark.component.scss b/libs/ui/src/lib/benchmark/benchmark.component.scss index 5d4e87f30..990b8b294 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.scss +++ b/libs/ui/src/lib/benchmark/benchmark.component.scss @@ -1,3 +1,13 @@ :host { display: block; + + .gf-table { + th { + ::ng-deep { + .mat-sort-header-container { + justify-content: inherit; + } + } + } + } } diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index e773caecf..7269bb70c 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -19,14 +19,16 @@ import { Input, OnChanges, OnDestroy, - Output + Output, + ViewChild } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialog } from '@angular/material/dialog'; import { MatMenuModule } from '@angular/material/menu'; -import { MatTableModule } from '@angular/material/table'; +import { MatSort, MatSortModule } from '@angular/material/sort'; +import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; -import { isNumber } from 'lodash'; +import { get, isNumber } from 'lodash'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject, takeUntil } from 'rxjs'; @@ -41,6 +43,7 @@ import { BenchmarkDetailDialogParams } from './benchmark-detail-dialog/interface GfValueComponent, MatButtonModule, MatMenuModule, + MatSortModule, MatTableModule, NgxSkeletonLoaderModule, RouterModule @@ -59,6 +62,9 @@ export class GfBenchmarkComponent implements OnChanges, OnDestroy { @Output() itemDeleted = new EventEmitter(); + @ViewChild(MatSort) sort: MatSort; + + public dataSource = new MatTableDataSource([]); public displayedColumns = [ 'name', 'date', @@ -97,6 +103,10 @@ export class GfBenchmarkComponent implements OnChanges, OnDestroy { public ngOnChanges() { if (this.benchmarks) { + this.dataSource.data = this.benchmarks; + this.dataSource.sort = this.sort; + this.dataSource.sortingDataAccessor = get; + this.isLoading = false; } diff --git a/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.html b/libs/ui/src/lib/entity-logo/entity-logo.component.html similarity index 100% rename from apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.html rename to libs/ui/src/lib/entity-logo/entity-logo.component.html diff --git a/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.scss b/libs/ui/src/lib/entity-logo/entity-logo.component.scss similarity index 100% rename from apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.scss rename to libs/ui/src/lib/entity-logo/entity-logo.component.scss diff --git a/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.ts b/libs/ui/src/lib/entity-logo/entity-logo.component.ts similarity index 72% rename from apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.ts rename to libs/ui/src/lib/entity-logo/entity-logo.component.ts index 179193da0..7598fb4d5 100644 --- a/apps/client/src/app/components/asset-profile-icon/asset-profile-icon.component.ts +++ b/libs/ui/src/lib/entity-logo/entity-logo.component.ts @@ -1,3 +1,4 @@ +import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -9,12 +10,13 @@ import { DataSource } from '@prisma/client'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, + imports: [CommonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], - selector: 'gf-asset-profile-icon', - styleUrls: ['./asset-profile-icon.component.scss'], - templateUrl: './asset-profile-icon.component.html' + selector: 'gf-entity-logo', + styleUrls: ['./entity-logo.component.scss'], + templateUrl: './entity-logo.component.html' }) -export class GfAssetProfileIconComponent implements OnChanges { +export class GfEntityLogoComponent implements OnChanges { @Input() dataSource: DataSource; @Input() size: 'large'; @Input() symbol: string; diff --git a/libs/ui/src/lib/entity-logo/index.ts b/libs/ui/src/lib/entity-logo/index.ts new file mode 100644 index 000000000..9c5885208 --- /dev/null +++ b/libs/ui/src/lib/entity-logo/index.ts @@ -0,0 +1 @@ +export * from './entity-logo.component'; diff --git a/libs/ui/src/lib/holdings-table/holdings-table.component.html b/libs/ui/src/lib/holdings-table/holdings-table.component.html index dde103077..2c238b137 100644 --- a/libs/ui/src/lib/holdings-table/holdings-table.component.html +++ b/libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -10,7 +10,7 @@ - (); - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = publicRoutes.pricing.routerLink; public onGenerateApiKey(event: MouseEvent) { event.preventDefault(); diff --git a/libs/ui/src/lib/mocks/httpClient.mock.ts b/libs/ui/src/lib/mocks/httpClient.mock.ts new file mode 100644 index 000000000..6ef79af61 --- /dev/null +++ b/libs/ui/src/lib/mocks/httpClient.mock.ts @@ -0,0 +1,18 @@ +import { Observable } from 'rxjs'; + +export class HttpClientMock { + public constructor(private mockResponses: Map) {} + + public get(url: string, options?: any): Observable { + if (this.mockResponses.has(url) && options) { + return new Observable((subscriber) => { + subscriber.next(this.mockResponses.get(url)); + subscriber.complete(); + }); + } + + return new Observable((subscriber) => { + subscriber.error(new Error(`No mock data for URL: ${url}`)); + }); + } +} diff --git a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html index 9e31ffabf..f1a2a3f90 100644 --- a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html +++ b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html @@ -7,7 +7,7 @@ color="primary" mat-button [queryParams]="{ createDialog: true }" - [routerLink]="['/portfolio', 'activities']" + [routerLink]="routerLinkPortfolioActivities" > Time to add your first activity. diff --git a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts index 0d5b044eb..8691dc998 100644 --- a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts +++ b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts @@ -1,3 +1,5 @@ +import { internalRoutes } from '@ghostfolio/common/routes/routes'; + import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -20,4 +22,7 @@ import { GfLogoComponent } from '../logo'; }) export class GfNoTransactionsInfoComponent { @HostBinding('class.has-border') @Input() hasBorder = true; + + public routerLinkPortfolioActivities = + internalRoutes.portfolio.subRoutes.activities.routerLink; } diff --git a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts index b4e871342..7c97be921 100644 --- a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts +++ b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts @@ -1,3 +1,5 @@ +import { publicRoutes } from '@ghostfolio/common/routes/routes'; + import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, @@ -18,5 +20,5 @@ import { RouterModule } from '@angular/router'; export class GfPremiumIndicatorComponent { @Input() enableLink = true; - public routerLinkPricing = ['/' + $localize`:snake-case:pricing`]; + public routerLinkPricing = publicRoutes.pricing.routerLink; } diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.stories.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.stories.ts new file mode 100644 index 000000000..648d8592a --- /dev/null +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.stories.ts @@ -0,0 +1,115 @@ +import { LookupItem } from '@ghostfolio/common/interfaces'; + +import { CommonModule } from '@angular/common'; +import { HttpClient } from '@angular/common/http'; +import { importProvidersFrom } from '@angular/core'; +import { + FormControl, + FormsModule, + NgControl, + ReactiveFormsModule +} from '@angular/forms'; +import { provideNoopAnimations } from '@angular/platform-browser/animations'; +import { applicationConfig, Meta, StoryObj } from '@storybook/angular'; + +import { HttpClientMock } from '../mocks/httpClient.mock'; +import { GfSymbolAutocompleteComponent } from './symbol-autocomplete.component'; + +const DEFAULT_OPTIONS: LookupItem[] = [ + { + assetClass: 'COMMODITY', + assetSubClass: 'ETF', + currency: 'USD', + dataProviderInfo: { + dataSource: 'YAHOO', + isPremium: false + }, + dataSource: null, + name: 'Default 1', + symbol: 'D1' + }, + { + assetClass: 'EQUITY', + assetSubClass: 'STOCK', + currency: 'USD', + dataProviderInfo: { + dataSource: 'YAHOO', + isPremium: false + }, + dataSource: null, + name: 'Default 2', + symbol: 'D2' + } +]; + +const FILTERED_OPTIONS: LookupItem[] = [ + { + assetClass: 'COMMODITY', + assetSubClass: 'ETF', + currency: 'USD', + dataProviderInfo: { + dataSource: 'YAHOO', + isPremium: false + }, + dataSource: null, + name: 'Autocomplete 1', + symbol: 'A1' + }, + { + assetClass: 'EQUITY', + assetSubClass: 'STOCK', + currency: 'USD', + dataProviderInfo: { + dataSource: 'YAHOO', + isPremium: false + }, + dataSource: null, + name: 'Autocomplete 2', + symbol: 'A2' + } +]; + +export default { + title: 'Symbol Autocomplete', + component: GfSymbolAutocompleteComponent, + decorators: [ + applicationConfig({ + providers: [ + provideNoopAnimations(), + importProvidersFrom(CommonModule, FormsModule, ReactiveFormsModule), + { + provide: NgControl, + useValue: { + control: new FormControl(), + valueAccessor: null + } + }, + { + provide: HttpClient, + useValue: new HttpClientMock( + new Map([ + [ + '/api/v1/symbol/lookup', + { + items: FILTERED_OPTIONS + } + ] + ]) + ) + } + ] + }) + ] +} as Meta; + +type Story = StoryObj; + +export const Default: Story = { + args: {} +}; + +export const WithDefaultItems: Story = { + args: { + defaultLookupItems: DEFAULT_OPTIONS + } +}; diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts index 150b19599..6a502fa47 100644 --- a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts @@ -1,4 +1,3 @@ - import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { DataService } from '@ghostfolio/client/services/data.service'; import { LookupItem } from '@ghostfolio/common/interfaces'; @@ -13,8 +12,10 @@ import { Component, ElementRef, Input, + OnChanges, OnDestroy, OnInit, + SimpleChanges, ViewChild } from '@angular/core'; import { @@ -76,20 +77,21 @@ import { GfPremiumIndicatorComponent } from '../premium-indicator'; }) export class GfSymbolAutocompleteComponent extends AbstractMatFormField - implements OnInit, OnDestroy + implements OnChanges, OnDestroy, OnInit { - @Input() private includeIndices = false; + @Input() public defaultLookupItems: LookupItem[] = []; @Input() public isLoadingLocal = false; @Input() public isLoadingRemote = false; - @ViewChild(MatInput) private input: MatInput; - @ViewChild('symbolAutocomplete') public symbolAutocomplete: MatAutocomplete; + @Input() private includeIndices = false; + + @ViewChild(MatInput) private input: MatInput; + public control = new FormControl(); public filteredLookupItems: (LookupItem & { assetSubClassString: string })[] = []; - private unsubscribeSubject = new Subject(); public constructor( @@ -120,7 +122,13 @@ export class GfSymbolAutocompleteComponent this.control.valueChanges .pipe( filter((query) => { - return isString(query) && query.length > 1; + if (query.length === 0) { + this.showDefaultOptions(); + + return false; + } + + return isString(query); }), tap(() => { this.isLoadingRemote = true; @@ -175,6 +183,12 @@ export class GfSymbolAutocompleteComponent }); } + public ngOnChanges(changes: SimpleChanges) { + if (changes['defaultLookupItems'] && this.defaultLookupItems?.length) { + this.showDefaultOptions(); + } + } + public displayFn(aLookupItem: LookupItem) { return aLookupItem?.symbol ?? ''; } @@ -220,6 +234,17 @@ export class GfSymbolAutocompleteComponent this.unsubscribeSubject.complete(); } + private showDefaultOptions() { + this.filteredLookupItems = this.defaultLookupItems.map((lookupItem) => { + return { + ...lookupItem, + assetSubClassString: translate(lookupItem.assetSubClass) + }; + }); + + this.changeDetectorRef.markForCheck(); + } + private validateRequired() { const requiredCheck = super.required ? !super.value?.dataSource || !super.value?.symbol diff --git a/libs/ui/src/lib/top-holdings/top-holdings.component.html b/libs/ui/src/lib/top-holdings/top-holdings.component.html index d42d742b2..7a2a84126 100644 --- a/libs/ui/src/lib/top-holdings/top-holdings.component.html +++ b/libs/ui/src/lib/top-holdings/top-holdings.component.html @@ -36,7 +36,7 @@ - + Allocation %