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.
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Login | /login | Built | Live | 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 | Built | Live | ~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 | Built | Live | 10%Mostly matches mobile: Same single-field form, prefill, validation, save; matches mobile flow. |
| Update email | /update_email | Built | Live | 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 | Built | Live | 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) | — | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Home / forum feed | /home | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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). |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Events list | /events | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Make a pick (fight ballot) | /picks/:eventID/:fightNumber | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Community scorecards | /community-scorecards/event/:eventID/fight/:fightNumber | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Short ratings | /ratings/short/event/:eventID | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Lists index | /lists | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Search | /search | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Fighters index | /fighters | Built | Live | 14%Mostly matches mobile: Search + upcoming-card fighter list mirrors RN; only the grid-vs-list presentation is cosmetic. |
| Fighter profile | /fighter/:fighterID | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| User profile | /profile/:username | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Community post (thread) | /fight-forum/:id | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Event leaderboard | /leaderboards/event/:eventID | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Partial | Live | PARTIAL — join from league detail; invite-token accept page not built. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| DM inbox | /dm | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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. |
| Page | Web route | Status | Data | Notes / 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 | Built | Live | 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 | Built | Live | BUILT — /api/v1/article reader. ~15%Mostly matches mobile: Article reader; no native mobile counterpart (mobile has no blog). |
| Guides | /guides | Built | Live | 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 | Built | Live | BUILT — guide reader / clean fallback. ~12%Mostly matches mobile: Guide reader / clean fallback; no native mobile counterpart. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Terms of Service | /terms | Built | Live | ~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 | Built | Live | 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 | Built | Live | 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 | Built | Live | 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 | Built | Live | BUILT. ~14%Mostly matches mobile: No native FAQ screen; web is a bespoke grouped Q&A list from inlined evergreen copy. |
| Help / Contact | /help | Built | Live | 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 | Built | Live | 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 | Built | Live | BUILT — static. ~10%Mostly matches mobile: No native screen; web is a static-content shell rendering the ported responsible-play copy. |
| Page | Web route | Status | Data | Notes / Gaps |
|---|---|---|---|---|
| Settings (root) | /settings | Built | Live | 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 | Built | Live | ~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 | Built | Live | 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 | Built | Live | 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. |