Skip to content

Features

Lavesh Paryani edited this page Sep 26, 2026 · 1 revision

Features

Each area below lists the main route(s), where the code lives, and where its data comes from.

Home (/)

pages/Home.jsx composes sections from components/home/: hero, stats, top companies tables, what XK is, mission and resources, community (the Discord invite opens only for signed-in users, through DiscordAuthGate), features, podcast, trading journal, featured events, latest blog posts and a call to action. The "How it works" and freebies sections are commented out at the client's request and can be restored in Home.jsx. Companies, events and blogs come from the API; podcasts, freebies and merch use local data from src/models/.

Reviews (/reviews, /reviews/broker, /reviews/propfirm, /reviews/crypto)

  • Company directory with category tabs (Broker, PropFirm, Crypto), filters and pagination (components/reviews/).
  • Company page /reviews/:companyId (pages/CompanyDetails.jsx): profile header, trust-score gauge (utils/trustScore.js, derived from the rating average and review count), rating breakdown chart, promo codes, and the review list.
  • Signed-in users can post, edit and delete their own reviews with an optional screenshot, and request a new company listing (/reviews/company/new), which starts in pending status until approved.
  • Admins and operators manage companies (including promo codes) and can delete reviews.

Verified traders and profiles (/reviews/traders, /users/:userId, /profile)

Users edit their profile and avatar at /profile and can apply for verified-trader status by uploading broker statements and payout proofs. Admins review applications, invite traders, schedule a call and approve or reject (pages/admin/AdminVerifiedTraders.jsx). Approved traders are listed on /reviews/traders and have a public profile page.

Blog (/blog, /blog/:slug)

  • Public list and post pages with categories, featured slider, sharing and author info (components/blog/). Post pages are prerendered at build time for SEO.
  • Posts are written in a TipTap rich-text editor (components/shared/RichTextEditor.jsx). Designed HTML content is sanitised with DOMPurify before rendering (utils/designedHtml.js).
  • Signed-in users can write posts (/blogs/create, /blogs/my-blogs) and comment (rate limited to 6 comments per 10 minutes). Operators and admins manage all posts.

Events (/events, /events/:eventId)

pages/Academy.jsx (the old /academy URL redirects here) shows the events grid, a world map of event locations (react-simple-maps with public/geo/countries-110m.json), podcast and free-resource sections, and a registration modal. Events are created and edited by admins at /admin/events.

Live spreads (/live-spreads)

A comparison table of broker spreads for ten instruments (EUR/USD, GBP/USD, USD/JPY, AUD/USD, gold, silver, BTC/USD, ETH/USD, US30, SPX500). The backend scrapes Myfxbook every 4 minutes and keeps a short history; admins can force a refresh or override values at /admin/spreads.

Payouts (/payouts)

Lists prop firms from the companies API with payout cards. The payout rows themselves are generated on the client from the company list rather than loaded from a payouts endpoint.

Merch (/merch, /merch/:productId)

Product grid, filters, product detail pages and a cart (Redux cartSlice). Products come from src/models/productsData.js. There is no payment integration: the checkout button shows a placeholder message.

Accounts (/signup, /login, /forgot-password, /reset-password)

Email and password accounts with a password policy (utils/passwordPolicy.js on both sides), a strength meter, password reset by emailed token, login notification emails and a security alert when the password changes. Changing the password invalidates existing sessions.

Dashboards

Route Who What
/dashboard Signed-in users Overview cards, activity chart, recent activity, quick actions
/operator/blogs, /operator/reviews Operators Operator views for blog posts and reviews
/admin Admins Admin dashboard
/admin/blogs, /admin/companies, /admin/events Admins Create, edit and delete content; approve company requests
/admin/settings Admins Mock-mode toggle and site settings
/admin/spreads Admins Refresh or override spread data
/admin/verified-traders Admins Verified-trader applications
/admin/email-campaigns Admins Compose campaigns, upload recipient CSV/Excel, drafts, history (sent through Brevo)
/admin/about/edit Admins Edit About page content (stored in the browser's localStorage)

Analytics and ads

Google Analytics 4 and Google Tag Manager are loaded from index.html, and components/analytics/PageViewTracker.jsx sends a page view on every route change (utils/analytics.js has helpers for custom events). Google AdSense is also loaded, with public/ads.txt.