Newsite Parity & Production Audit

Every page/feature across the RN client (react-native) and the old web app (frontend/), and where the newsite stands. Status = does a page exist · Data = Live (real backend) vs Mock (sample data) · Notes / Gaps = what's left to ship. Click a built row to open it.

84 live · 1 partial· 0 mocked· 1 missingof 86 trackable98% live
Built · 84 Partial · 1 Placeholder · 0 Missing · 1 Web N/A · 7 Do not implement · 4 Deprecated · 10 Mock data · 0
Mobile parity — deviation of each web page from its iOS app screen (0% = matches, 100% = a different page): 15 significantly deviate (≥40%) · avg 27% across 83 audited · ~ = estimate (no RN page to diff — native/webview on mobile)

Auth & Account

PageWeb routeStatusDataNotes / Gaps
Login /login BuiltLive
12%Mostly matches mobile: Parity on login methods — email-PIN, magic-link, and Google/Apple/X OAuth (same /auth/* routes as legacy web); intentionally drops only the immersive video walkthrough.
Magic-link sign-in /magiclink BuiltLive
~20%Deviates from mobile: Token-exchange landing with loading/error/missing states; reasonable web equivalent of a deep-link landing.
Logout Web N/A
Action, not a page — clears the session.
Update username /update_username BuiltLive
10%Mostly matches mobile: Same single-field form, prefill, validation, save; matches mobile flow.
Update email /update_email BuiltLive
12%Mostly matches mobile: Same two-step request-code then confirm flow; adds a done-confirmation screen. Matches mobile.
Update profile (bio, flag, link) /profile-update BuiltLive
LIVE — PUT /api/v1/user (bio/flag/link/images); prefilled from session.
30%Deviates from mobile: Same bio/link/country fields plus a banner+avatar preview header and web-only profile/banner image-URL inputs.
Authenticated global nav (real session) BuiltLive
DONE — TopNav uses useAuth(): real user, 'Sign in' when anonymous.
Collect user attributes (onboarding) /collect-user-attributes Deprecated
LEGACY — onboarding attribute flow carried over from the old web app; not a go-forward newsite page.
Register (local password) /register Do not implement
Legacy local-password signup. Web uses magic-link/PIN — do not implement.

Feed & Home

PageWeb routeStatusDataNotes / Gaps
Home / forum feed /home BuiltLive
LIVE — /api/v4/bff/home (Hot/New, infinite scroll, working composer, post links fixed). Side-rail gutter widgets live (RightRail → upcoming events / trending lists / trending fighters endpoints).
20%Deviates from mobile: Same Hot/New post feed; web uses an inline composer vs RN's FAB modal, and moves Events/Fights carousels to the right rail.
Fight Forum feed (post list) /fight-forum BuiltLive
BUILT — /fight-forum forum list; fixes the thread back-link.
14%Mostly matches mobile: Matches mobile: same community post feed with Top/New tabs, reusing the home feed row as a standalone list.
Notifications /notifications BuiltLive
Also available as a nav popover.
12%Mostly matches mobile: Matches mobile: same v2 feed rows, inline follow action, mark-all-read on entry, settings link, load-more.
Notification settings /notifications/settings BuiltLive
12%Mostly matches mobile: Matches mobile: per-type Push+Email toggles by category, optimistic save, no save button; only RN's per-section ON count is absent.
Editorial home (old-web root) Deprecated
DEPRECATED — do not implement. News/editorial content is retired; the newsite root is the user-generated content feed (the fight forum).

Events & Fights

PageWeb routeStatusDataNotes / Gaps
Events list /events BuiltLive
LIVE — wired to the events BFF. Side-rail gutter live (RightRail endpoints).
22%Deviates from mobile: Same buckets (Today/Week/Upcoming/Past), search, seek pagination; adds filter pills, drops the grid/list view toggle.
Event detail /event/:eventID BuiltLive
LIVE — /api/v1/bff/event (slug→eventID resolved). Side-rail gutter live (RightRail endpoints).
18%Mostly matches mobile: Matches RN tabs Event/Fights/Picks, header, rating CTA, trio counts, canceled fights; same default-tab rule.
Fight detail / scorecard /event/:eventID/fight/:fightNumber BuiltLive
LIVE — judges/media/community scorecard tabs wired.
20%Deviates from mobile: Mirrors Scorecards/Stats tabs, source sub-tabs, stats rows, fighter header; make-pick shows read-only pick rows vs RN's interactive form.
Rate event /rate/event/:eventID BuiltLive
15%Mostly matches mobile: Now a modal on the event page mirroring RN: one 0-10 rating (10 half-step stars post/live, a hype slider pre-event), review CTA + Add to List; same POST /api/v1/ratings.
Rate fight /rate/fight/:eventID/:fightNumber BuiltLive
15%Mostly matches mobile: Now a modal on the fight page mirroring RN: two 0-5 half-step star sub-ratings (Entertainment + Back and Forth) summing to /10, review + Add to List; same payload.
Rate all fights /rate/fights/event/:eventID/fight/:fightNumber BuiltLive
62%Significantly deviates from mobile: Vertical auto-saving single-star list per fight; RN is a swipeable one-fight carousel with a full two-star+review body and share.
Recent events (legacy) /events/recent BuiltLive
BUILT — past-events list.
42%Significantly deviates from mobile: Web-only split route surfacing ONLY the past bucket as a standalone list; RN has no separate recent page, just a section.

Picks

PageWeb routeStatusDataNotes / Gaps
Make a pick (fight ballot) /picks/:eventID/:fightNumber BuiltLive
LIVE — event Picks tab lists every fight (made/missing); tap → native-style make-pick modal (fighter → terms → round → potential XP via /fightBallots/payout → POST /fightBallots). Standalone /picks page too.
~62%Significantly deviates from mobile: RN PicksPage is a tabbed Picks/Lists/Reviews feed; the per-fight make-pick form lives inside RN FightPage, not a standalone page.
Friends picks (per fight) /friends-picks/:eventID/:fightNumber BuiltLive
LIVE — /api/v1/fightBallots (friends).
~35%Deviates from mobile: Standalone friends pick-distribution list; on mobile this surfaces inside FightPage tabs, but the row content/IA matches.
Global picks (per fight) /global-picks/event/:eventID/fight/:fightNumber BuiltLive
LIVE — community pick distribution + odds.
~42%Significantly deviates from mobile: Adds a community-odds multiplier breakdown card beyond a simple distribution; lives in the FightPage poll tab on mobile.
Media picks (per fight) /media-picks/event/:eventID/fight/:fightNumber BuiltLive
LIVE — /api/v1/fightBallots/media.
~33%Deviates from mobile: Media pick list; surfaces inside FightPage on mobile but the row/section structure aligns.
Friends round scoring /friends-round/event/:eventID/fight/:fightNumber/round/:roundNumber/:userID BuiltLive
BUILT — /api/v1/roundBallots per-round.
68%Significantly deviates from mobile: Read-only list of friends' round scores; RN RoundScorePage is an interactive 10-point scoring-entry modal — a different purpose.
Media round scoring /media-round/event/:eventID/fight/:fightNumber/round/:roundNumber BuiltLive
BUILT — /api/v1/roundBallots/media.
68%Significantly deviates from mobile: Read-only media round-score list vs RN RoundScorePage's interactive scoring submit modal; a different page entirely.
Notable scorecards overview /round-scoring BuiltLive
BUILT — /api/v1/bff/roundScoringData.
~72%Significantly deviates from mobile: Event search/browse overview; RN RoundScorePage is a per-round scoring form, so there's no real mobile counterpart for this browse view.

Scorecard & Voting

PageWeb routeStatusDataNotes / Gaps
Community scorecards /community-scorecards/event/:eventID/fight/:fightNumber BuiltLive
14%Mostly matches mobile: Matches mobile: scorecard header, Community/Friends tabs, per-user round-grid cards, seek pagination. Omits only the search input.
Round voting Web N/A
In-flow scoring action — part of the Fight page on web.
Legacy scorecard links Web N/A
Unified into the Fight detail page (legacy deep links).
Global scorecard share page /scorecard/global/:all BuiltLive
BUILT — shareable versus card + copy-link.
58%Significantly deviates from mobile: Read-only round-by-round share card with copy-link; RN SharePage is a branded share-target sheet wrapping a capturable story card.

Ratings & Scoring

PageWeb routeStatusDataNotes / Gaps
Short ratings /ratings/short/event/:eventID BuiltLive
LIVE — /api/v1/ratings/short. Trending gutter wired to real endpoints.
24%Deviates from mobile: Same header + row list and per-row navigation; newsite adds a right trending gutter and an Avg-score header not on mobile.
Hype short ratings /ratings/hype/short/event/:eventID BuiltLive
LIVE — /api/v1/ratings/hype/short. Trending gutter wired to real endpoints.
24%Deviates from mobile: Reuses the short-list shell (same rows/header); adds a trending gutter + Avg header. Mobile is a plain hype list.
Full ratings /ratings/full/event/:eventID BuiltLive
LIVE — /api/v1/bff/ratings/full. Trending gutter wired to real endpoints.
24%Deviates from mobile: Same review cards (user, score, text, up/down/comment reactions); adds a right trending gutter + Avg header.
Single rating /ratings/single/event/:eventID/type/:ratingType/user/:userID BuiltLive
LIVE — /api/v1/bff/rating/single; comment composer wired. Trending gutter wired to real endpoints. (ratingType/userID must be numeric.)
33%Deviates from mobile: Matches the header card + comments + composer; omits reply targeting and image-share, adds a trending gutter sidebar.

Collections & Lists

PageWeb routeStatusDataNotes / Gaps
Lists index /lists BuiltLive
LIVE — Your lists (/api/v1/collections) + Trending (/api/v1/bff/user-collections-trending).
~40%Significantly deviates from mobile: No dedicated RN ListsPage to diff against (lists surface in profile/native), so a standalone index page is a web-only construct.
List detail /lists/collection/:collectionID BuiltLive
LIVE — /api/v1/bff/collection-detail; like/dislike wired. Comments thread still missing.
38%Deviates from mobile: Same hero (cover, owner, like/dislike/comment, edit) and item list; comments are a summary link rather than mobile's inline thread overlay.
Create list /create-list BuiltLive
LIVE — POST /api/v1/collections with real item-search picker.
20%Deviates from mobile: Mirrors mobile: events/fights/fighters segments, name/description, public toggle, live-search item picker, same POST payload.
Edit list /edit-list/:collectionID BuiltLive
LIVE — name/description/visibility + item add/remove.
24%Deviates from mobile: Edit mode of the create form; seeds from collection-detail and PUTs the same shape — mobile shares one create/edit component too.
Event collections /lists/event/:eventID BuiltLive
30%Deviates from mobile: Same event-collections list with cover collage + owner; omits the header search-icon add-collection action mobile has.
Trending collections /trending-collections BuiltLive
May fold into the Lists index.
18%Mostly matches mobile: Matches mobile: search bar, same trending/most-liked/most-commented/newest sorts, cards. Sort is inline pills vs mobile's bottom-sheet.
Collection comments thread /comments/collection/:collectionID BuiltLive
BUILT — /api/v2/comment (collection) + composer.
22%Deviates from mobile: Mirrors mobile thread: composer, replies, up/down reactions, top/newest sort, load-more pagination.
Add to list Web N/A
Modal picker — surfaces as an inline action on web.

Search & Discover

PageWeb routeStatusDataNotes / Gaps
Search /search BuiltLive
LIVE — /api/v3/bff/search typed cells + tabs (matches nav popover).
10%Mostly matches mobile: Matches mobile: same search endpoint, type pills/tabs, recent searches, typed BFF rows.
Fighters directory (paginated) /fighters/:page BuiltLive
BUILT — /api/v1/fighters/paged.
48%Significantly deviates from mobile: Page-numbered SSR directory grid off /fighters/paged; RN has no paginated directory, only a single search list.

Fighters & Rankings

PageWeb routeStatusDataNotes / Gaps
Fighters index /fighters BuiltLive
14%Mostly matches mobile: Search + upcoming-card fighter list mirrors RN; only the grid-vs-list presentation is cosmetic.
Fighter profile /fighter/:fighterID BuiltLive
LIVE — /api/v2/bff/fighterCard (slug→fighterID resolved). Side-rail gutter live (RightRail endpoints).
12%Mostly matches mobile: Same fighterCard endpoint, hero, record/stats tabs, lists pill, summaries and history/log.
Fighter lists /fighter/:fighterID/lists BuiltLive
20%Deviates from mobile: Same endpoint and trending-collection rows; omits RN's in-list search box. Grid vs list is cosmetic.
Fighter rankings /fighter-rankings BuiltLive
LIVE — /api/v1/bff/fighterRanking.
~50%Significantly deviates from mobile: No dedicated RN page; rankings surface inside FightersPage/native, so a dedicated web page diverges.
Belts (XP ladder) /belts BuiltLive
BUILT — belt/XP ladder.
~55%Significantly deviates from mobile: No RN BeltsPage; the XP/belt ladder is a native-only surface with no mobile page counterpart.

Profiles & Social

PageWeb routeStatusDataNotes / Gaps
User profile /profile/:username BuiltLive
Wired to /api/v1/bff/profile (stat/trophies/event rows + follow).
~35%Deviates from mobile: No RN page (profile is native iOS); the comprehensive web profile (banner, avatar, follow, stats, trophy case, history) is reasonable parity.
Suggested friends /suggested-friends BuiltLive
20%Deviates from mobile: Same suggested-users list + Follow toggle, but web omits the search bar RN layers over the same endpoint.
Followers list /profile/:username/followers BuiltLive
LIVE — /api/v1/bff/userFollowers + follow/unfollow.
22%Deviates from mobile: Same followers list with Follow rows, but omits RN's in-page search bar.
Following list /profile/:username/following BuiltLive
LIVE — /api/v1/bff/userFollowing.
22%Deviates from mobile: Same following list with Follow rows, but omits RN's in-page search bar.
Friends list /profile/:username/friends BuiltLive
LIVE — /api/v1/bff/userFriends.
22%Deviates from mobile: Same mutual-follow friends list, but omits RN's in-page search bar.
Karma profile /karma/:username BuiltLive
LIVE — /api/v1/bff/karma.
~35%Deviates from mobile: No RN page (karma is native); renders the same /bff/karma sections (profile tiles, Rules of Chama, monthly leaderboard).
Celebration share card /celebration/:userMessageType/:userMessageID/:username BuiltLive
BUILT — achievement/share card.
~60%Significantly deviates from mobile: RN SharePage is a branded share-target sheet over story cards; web is a standalone winnings/XP achievement card — different IA.

Community & Social

PageWeb routeStatusDataNotes / Gaps
Community post (thread) /fight-forum/:id BuiltLive
LIVE — comment composer, replies, reactions, pagination, sort; back link fixed.
24%Deviates from mobile: OP, Top/Newest sort, threaded comments/replies, up/down reactions, reply composer present; omits the header Share button and live typing/socket.
Create community post /fight-forum/create Do not implement
Handled by the inline Home composer, which is wired to POST /api/v1/fight-forum/post — no separate create route needed on web.

Leaderboards & Leagues

PageWeb routeStatusDataNotes / Gaps
Event leaderboard /leaderboards/event/:eventID BuiltLive
Global/Friends tabs; local data sparse → empty state.
~12%Mostly matches mobile: Mobile is native iOS; web mirrors the event leaderboard with Global/Friends tabs, ranks, XP and a pinned 'your position' banner.
Seasons & Leagues (lobby) /seasons-leagues BuiltLive
LIVE — league list + Create-league CTA. League detail page still missing.
~18%Mostly matches mobile: Mobile is native iOS; web league lobby with search + member counts matches, plus an extra inline create modal.
League detail /league/:slug BuiltLive
LIVE — /api/v1/league.
~20%Deviates from mobile: Mobile is native iOS; web detail has header, join CTA, standings preview — mirrors native, adds a desktop quick-link grid.
League rankings /league/:slug/rankings BuiltLive
LIVE — league leaderboard.
~15%Mostly matches mobile: Mobile is native iOS; web leaderboard with Event/Season tabs, pick chips, LP/XP, seek pagination matches expected native rankings.
League members /league/:slug/users BuiltLive
LIVE — member roster.
~15%Mostly matches mobile: Mobile is native iOS; web roster with search, rank names, President badge, pagination mirrors the expected native members screen.
Create league /league/create BuiltLive
LIVE — POST /api/v1/leagues.
~25%Deviates from mobile: Mobile is native iOS; web has a dedicated create-league form plus a public/private toggle (seasons-leagues also has a modal — slight redundancy).
League settings (edit/leave) /league/:slug/settings BuiltLive
LIVE — edit + leave.
~22%Deviates from mobile: Mobile is native iOS; web splits admin edit-form vs member read-only + leave flow — matches expected native settings IA.
Join / invite league /refer-friend/accept/:token PartialLive
PARTIAL — join from league detail; invite-token accept page not built.

Direct Messages

PageWeb routeStatusDataNotes / Gaps
DM inbox /dm BuiltLive
LIVE — real REST + 8s poll. Residual: websocket push (instant delivery/typing) not yet built.
34%Deviates from mobile: Intentional — web DM is a docked widget, not a parity target. Same two-tab inbox + search + settings/compose, just panel vs full-screen page.
Start chat /dm/start-chat BuiltLive
LIVE — real friends picker → start conversation.
32%Deviates from mobile: Intentional widget design, not a parity target. Single contact-picker list with search matches; widget sub-page vs full-screen modal.
Start group chat /dm/start-group-chat BuiltLive
LIVE — real multi-select → create group.
34%Deviates from mobile: Intentional widget design, not a parity target. Multi-select contact picker with create matches; widget sub-page vs modal.
Conversation /dm/:conversationID BuiltLive
LIVE — real REST + 8s poll. Residual: websocket push (instant delivery/typing) not yet built.
52%Significantly deviates from mobile: Intentional widget design, not a parity target. Day-grouped bubbles + composer match; reply, reactions, attachments and request-accept banner are not ported.
Conversation info /dm/:conversationID/info BuiltLive
LIVE — real chat-info (members/prefs/block/leave).
34%Deviates from mobile: Intentional widget design, not a parity target. Hero, members, mute, read-receipts, block, leave all present; widget sub-page vs full-screen page.
DM search /dm/:conversationID/search BuiltLive
LIVE — in-conversation message search.
33%Deviates from mobile: Intentional widget design, not a parity target. In-conversation message search with result rows matches; widget sub-page vs full-screen modal.
DM settings /dm/settings BuiltLive
LIVE — privacy/push/read-receipt toggles persist.
30%Deviates from mobile: Intentional widget design, not a parity target. Push, who-can-message radio, read receipts, blocked-accounts entry all match; widget vs full-screen.
Blocked accounts /dm/blocked BuiltLive
LIVE — real blocked list + unblock.
30%Deviates from mobile: Intentional widget design, not a parity target. Blocked-accounts list with unblock action and empty state matches; widget sub-page vs full-screen page.
Message requests inbox /dm BuiltLive
LIVE — Requests tab (accept/decline) wired.
30%Deviates from mobile: Intentional widget design, not a parity target. Requests tab of the same inbox (accept/decline) present; widget panel vs full-screen page.
DM realtime socket layer Missing
PARTIAL — REST + 8s polling live; true websocket push (instant/typing/read-receipt) is the one residual gap.
Edit group name Web N/A
Modal — inline rename on web.
Legacy web chat (RocketChat) /chat Do not implement
Legacy iframe chat — superseded by the native DM feature; do not port.

News, Blog & Guides

PageWeb routeStatusDataNotes / Gaps
News /news Deprecated
DEPRECATED — do not implement. News/editorial is retired in favor of user-generated content (the fight forum). The existing /news page can be removed.
News article detail /news/:slug/:articleID Deprecated
DEPRECATED — do not implement. News is retired.
News archive (paginated) /news/archive/:page Deprecated
DEPRECATED — do not implement. News is retired.
Blog /blog BuiltLive
LIVE — article list + post detail. (Sources /api/v1/articles; confirm intended source given news is retired.)
~22%Deviates from mobile: Mobile has no native blog screen; web is a bespoke article grid (hero + cards) sourced from /api/v1/articles.
Blog post detail /blog/:slug/:id BuiltLive
BUILT — /api/v1/article reader.
~15%Mostly matches mobile: Article reader; no native mobile counterpart (mobile has no blog).
Guides /guides BuiltLive
BUILT — guides list + detail (static where no backend).
~12%Mostly matches mobile: No native mobile guides screen; web is a defensive guide-card grid that shows an empty state where no backend exists.
Guide detail /guides/:slug BuiltLive
BUILT — guide reader / clean fallback.
~12%Mostly matches mobile: Guide reader / clean fallback; no native mobile counterpart.

Help & Legal

PageWeb routeStatusDataNotes / Gaps
Terms of Service /terms BuiltLive
~8%Mostly matches mobile: Mobile shows web Terms in a webview; web is a LegalPage shell (sticky TOC, scrollspy, doc switcher) over the same copy.
Privacy Policy /privacy BuiltLive
Web-first legal page; mobile shows it via webview.
~8%Mostly matches mobile: Mobile renders this via webview; web is the shared LegalPage scrollspy/TOC shell over the same privacy copy.
Cookie Policy /cookies BuiltLive
Web-first legal page.
~8%Mostly matches mobile: Mobile renders via webview; web is the shared LegalPage scrollspy/TOC shell over the same cookie-policy copy.
UK Terms (region) /readonly/uk_terms Deprecated
DEPRECATED — do not implement.
About /about BuiltLive
BUILT — static.
~10%Mostly matches mobile: No native mobile About screen; web is a static-content shell rendering the ported About copy.
FAQ /frequently-asked-questions BuiltLive
BUILT.
~14%Mostly matches mobile: No native FAQ screen; web is a bespoke grouped Q&A list from inlined evergreen copy.
Help / Contact /help BuiltLive
BUILT — contact/support form.
~18%Mostly matches mobile: No native help/contact screen; web is a bespoke support-ticket form posting to /api/v1/user/ticket.
Responsible Gaming /responsiblegaming Deprecated
DEPRECATED — do not implement.
Community Guidelines /community-guidelines BuiltLive
BUILT — static.
~10%Mostly matches mobile: No native screen; web is a static-content shell rendering the ported community-guidelines copy.
Contest Rules /contestrules Deprecated
DEPRECATED — do not implement.
Safe Play /safeplay BuiltLive
BUILT — static.
~10%Mostly matches mobile: No native screen; web is a static-content shell rendering the ported responsible-play copy.

Settings & Misc

PageWeb routeStatusDataNotes / Gaps
Settings (root) /settings BuiltLive
Wired to /api/v1/settings.
10%Mostly matches mobile: Same BFF section/row list with sign-out; matches mobile layout/flow.
Refer a friend /refer-friend BuiltLive
~35%Deviates from mobile: Hero plus a copyable referral link and generic progress rows; mobile is a native share sheet.
How to score /how_to_score BuiltLive
Static content (no backend).
26%Deviates from mobile: Same four score cards, deductions and XP note, but adds a web-only 'What the judges weigh' criteria section.
Walkthrough / onboarding /walkthrough BuiltLive
Static content.
~40%Significantly deviates from mobile: Static 4-step explainer plus quick-links; mobile onboarding is native, so it's reinvented as a web article.
Subscription / status Web N/A
Native IAP — web billing TBD.
Email verification help Web N/A
Support / help flow.
Fight promotion hub /fight-promotion/:eventAssociation/tab/:identifier Deprecated
DEPRECATED — do not implement.
Asset Center /asset-center Deprecated
DEPRECATED — do not implement.
Notification feed (legacy v1) /notification-feed Do not implement
Legacy v1 notifications page — superseded by /notifications.