Files
2026-02-22 17:43:51 +01:00

7.3 KiB

Home Page — Configurable Elements

This document lists every element on the Home page that can be customised without touching component logic. All entries are data-only changes.


File: src/components/Apps/config/officialApps.ts

The featured array controls which apps appear in the horizontal scrollable row of the Featured Apps section (User tab). Order in the array equals display order.

export const officialAppsConfig = {
  featured: ['Q-Blog', 'Q-Mail', 'Q-Search', 'Q-Trade', 'Q-Tube', 'Q-Wallets'],
  ...
};

Each entry must be a valid Qortal app name (exact case). The avatar image is fetched automatically from QDN using the name as the QDN resource name.

To add an app to the Featured section, also add it to the all array with featured: true so helpers like isFeaturedApp() stay in sync.


File: src/data/featuredGroups.ts

The featuredGroups array controls the cards in the Featured Groups section (User tab). Each card shows the group avatar, name, and description.

export const featuredGroups: FeaturedGroup[] = [
  { id: 694, name: 'Qortal',              description: 'Official Qortal community group' },
  { id: 700, name: 'Qortal-General-Chat', description: 'General chat for the Qortal community' },
  { id: 706, name: 'Q-Apps',             description: 'Discussion and support for Qortal Q-Apps' },
];
Field Description
id Qortal group ID. Used to navigate to the group and to build the avatar URL (qortal_group_avatar_<id>).
name Must match the exact Qortal group name. Used to resolve the group owner's avatar.
description Subtitle displayed on the card (2-line clamp).

3. Developer Tab — Resource Cards

File: src/components/Group/HomeDeveloperTab.tsx

The Developer tab shows three hardcoded resource cards. Two of them link to Qortal groups; one opens a Q-App. To change targets, update the constants and the cards array.

// Group targets (top of file)
const CORE_SUPPORT_GROUP   = { id: 120, name: 'Qortal-CORE-Support' };
const DEVNET_TESTING_GROUP = { id: 269, name: 'Q-App-DevNet-Testing' };

// Cards definition (inside the component)
const cards = [
  {
    key: 'qtube_tutorial',
    icon: <VideoLibraryIcon />,
    title:       t('tutorial:home.qtube_tutorial'),
    description: t('tutorial:home.qtube_tutorial_desc'),
    onAction: () => openApp('q-tube'),           // ← app name here
  },
  {
    key: 'core_support',
    icon: <GroupsIcon />,
    title:       t('tutorial:home.core_support'),
    description: t('tutorial:home.core_support_desc'),
    onAction: () => openGroup(CORE_SUPPORT_GROUP),
  },
  {
    key: 'devnet_testing',
    icon: <BuildIcon />,
    title:       t('tutorial:home.devnet_testing'),
    description: t('tutorial:home.devnet_testing_desc'),
    onAction: () => openGroup(DEVNET_TESTING_GROUP),
  },
];

To change a group target update the matching constant (id + name). To change the Q-Tube card to a different app, replace 'q-tube' in openApp(...). Card titles and descriptions are i18n keys (see section 5).


4. Getting Started — Thresholds and Constants

File: src/components/Group/HomeGettingStarted.tsx

Constant Value Purpose
MIN_BALANCE_FOR_QORTS 6 Minimum QORT balance that marks step 1 ("Get your 6 QORT") as done.
GET_QORTS_URL 'https://www.example.com' URL loaded in the iframe shown when the user clicks step 1. Replace with the real exchange / faucet URL.
LS_KEY 'getting_started_status' localStorage key used to persist completion. Set to 'completed' once all 3 steps are done; the section then stays hidden permanently.
AVATAR_SERVICE 'THUMBNAIL' QDN service used to check whether the user has an avatar.
AVATAR_IDENTIFIER 'qortal_avatar' QDN identifier used for the avatar existence check.

To reset the Getting Started section during development, clear the key from localStorage:

localStorage.removeItem('getting_started_status');

5. i18n Text

Files: src/i18n/locales/<lang>/tutorial.jsonhome object (all 12 locales)

All visible text in the Home page sections is controlled by the home.* keys inside each locale's tutorial.json. The English master is at src/i18n/locales/en/tutorial.json.

Key Used in Default (EN)
home.tab_user User/Developer tab switcher "User"
home.tab_developer User/Developer tab switcher "Developer"
home.getting_started Getting Started section title "Getting Started"
home.progress Step counter "{{completed}} / {{total}} completed"
home.get_six_qorts Getting Started step 1 label "Get your 6 QORT"
home.register_name Getting Started step 2 label "Register your name"
home.load_avatar Getting Started step 3 label "Load your avatar"
home.done Completed step button "Done"
home.open Pending step button "Open"
home.copy_address Address copy tooltip "Click to copy address"
home.address_copied Snackbar after address copy "Address copied to clipboard"
home.balance Balance label in profile card "Balance"
home.featured_apps Featured Apps section title "Featured Apps"
home.featured_groups Featured Groups section title "Featured Groups"
home.group_activity Group Activity section title "Group Activity"
home.developer_resources Developer tab section title "Developer Resources"
home.qtube_tutorial Developer card title "Q-Tube Tutorial"
home.qtube_tutorial_desc Developer card description "Learn how to publish and browse videos on Q-Tube"
home.core_support Developer card title "Qortal official CORE support"
home.core_support_desc Developer card description "Get help from the official Qortal CORE support group"
home.devnet_testing Developer card title "Q-App DevNet-Testing"
home.devnet_testing_desc Developer card description "Test your Q-Apps in the DevNet-Testing environment"

To change any visible label, edit the value for the matching key in every locale file. The postProcess: 'capitalizeFirstChar' plugin capitalises the first character at runtime, so values in the JSON should be all lowercase (except proper nouns).