-
Notifications
You must be signed in to change notification settings - Fork 1
Features
Each area below lists the main route(s), where the code lives, and where its data comes from.
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/.
- 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 inpendingstatus until approved. - Admins and operators manage companies (including promo codes) and can delete reviews.
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.
- 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.
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.
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.
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.
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.
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.
| 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) |
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.
XK Trading Floor