⬡ TIPPLATFORMA
CURRENT-STATE MOCKUP · v4f-styled · shipped functionality only
Maps to: /login · apps/web/src/pages/LoginPage.tsx. Real flow: email + password → JWT. Forgot-password link → /reset-password. Register link → /register. Rate limit: 10 / 15min / IP per auth/spec.md FR-005. Not shown: marketing landing page (no spec, would be Phase D).
⬡ TIPPLATFORMA
© 2026 TipPlatforma · Pilot v1.2
Status today: / renders a stub <Placeholder title="Dashboard" /> in apps/web/src/routes.tsx:65. There is no Home page yet. This screen shows what could realistically go here using only data already exposed by shipped endpoints — no new contracts, no new module. If even this is too speculative, leave the route as a no-op redirect to /matches.
EN ⌄
Welcome back, Martin
2 groups · 1 tournament active
Active tournaments
Ice Hockey
MS Hockey 2026
May 9–25 · 18/40 played
Team Backend Friday Crew
Your rank: 3rd in Team Backend · 31 pts
Football
UEFA Euro 2026
Starts June 12 · 0/51
Team Backend
Tipping opens June 1
Quick links
Maps to: /matches · MatchesPage.tsx + MatchCard.tsx. Real data: GET /api/v1/groups/:gid/matches returns MatchWithPrediction[]. Per-page <select> for active group (today: persisted in localStorage as tipplatforma_active_group_id). "See all group tips" reveal is implementedPredictionReveal.tsx calls GET /api/v1/groups/:gid/matches/:mid/predictions and follows predictions/spec.md FR-008/009/010 (own always; others only after deadline). Not shown: status tabs (All/Open/Live/Finished/Postponed — flat list today), open-matches notice banner.
EN ⌄
Matches
Group: Team Backend · MS Hockey 2026
14 May · 18:00 · R5 Upcoming
Slovakia
vs
Finland
Closes in 2h 14m Not predicted
14 May · 20:15 · R5 Upcoming
Canada
vs
Sweden
Closes in 4h 28m · You picked: SWE 2:3 Predicted
14 May · 14:00 · R5 ● LIVE
Russia
1 : 2
USA
🔒 Tipping closed · Your tip: RUS 2:1 Predicted
12 May · 14:00 · R4 Finished
Czech Rep.
3 : 1
Germany
Your tip: CZE 2:1 · scored +2 Predicted
Group predictions · 12 members
Martin K. (you) CZE · 2:1 +2
Peter S. CZE · 3:1 +7
Jana M. CZE · 2:0 +2
Tomáš R. GER · 1:2 0
+ 8 more
Maps to: /leaderboard · LeaderboardPage.tsx. Real data: GET /api/v1/groups/:gid/leaderboard?rounds=A,B. Round filter is shipped (D7 · leaderboard-per-round) — the wireframe v4f's "Phase 2 disabled" annotation is stale. Live updates via useRealtime on prediction_scores INSERT (debounced 500ms). Finished-tournament CTA appears for any group whose tournament status is finished → deep-link to /tournament/:t/group/:g/summary. Not shown: sortable column headers, position-change arrows (↑/↓), inline expandable player history.
EN ⌄
Leaderboard
Team Backend · MS Hockey 2026
● Updating…
NBA Finals 2025 · view top-3 reveal See summary →
Filter rounds:
All R3 R4 R5
# Player Pts Acc% Correct
1
PS
Peter S.
3872%14/18
2
JM
Jana M.
3468%13/18
3
MK
Martin K. you
3162%11/17
4
TR
Tomáš R.
2855%10/18
5
LB
Lucia B.
2453%9/17
6
AK
Andrej K.
2150%8/16
Maps to: /my-tips · MyTipsPage.tsx. Real data: GET /api/v1/groups/:gid/players/:uid/scores{ match_id, home_team, away_team, scheduled_at, result_version, points_awarded, breakdown, own_prediction_answers }. Today: desktop renders a flat table; mobile renders cards. Breakdown chips per component via <ScoreBreakdown>. Not shown: grouped-by-round headers, summary stats strip (tips/pts/acc/rank), expand-row to show group tips inline (the "see group tips" data exists in PredictionReveal already — it just isn't reused on this page yet).
EN ⌄
My Tips
Team Backend · MS Hockey 2026
Match Date Prediction Pts Breakdown
Slovakia vs Finland 14 May · 18:00 pending
Canada vs Sweden 14 May · 20:15 SWE, 2:3 pending
Russia vs USA 14 May · 14:00 RUS, 2:1 pending
Czech Rep. vs Germany 12 May · 14:00 CZE, 2:1 2 winner +2exact_score 0
Slovakia vs Latvia 12 May · 11:00 SVK, 4:2 7 winner +2exact_score +5
Finland vs USA 11 May · 19:00 FIN, 2:1 0 winner 0exact_score 0
Maps to: /profile · ProfilePage.tsx. Editable: display_name, avatar_url (URL field, no upload yet). Read-only: email, role. Locale switcher (SK/EN) wired to i18next per D8 i18n module. Push prompt is shippedEnablePushPrompt.tsx per D8 push-notifications. Sign-out button → POST /auth/logout. Not shown: avatar upload (URL only today), notification preferences toggles (out-of-scope per notifications/spec.md), in-app change-password, my-groups inline list, delete-account / danger zone (out-of-scope per admin-user-management/spec.md Non-Goals).
EN ⌄
Profile
Manage your display name, avatar, language and push.
Identity
MK
Martin K.
martin.k@company.com
PLAYER
URL only today — direct upload would need a sub-spec.
Language
Interface language
SK / EN — applies to UI and email templates per D8
Enable push notifications Get a push when a match you predicted is finalised. One toggle per device.
Maps to: /my-groups · GroupsPage.tsx. Real data: GET /api/v1/groups → list with role: 'admin' | 'member' and member count. Toggle inline create form via CreateGroupForm. Click → /group/:id. Public join-by-code lives at /groups/join/:code.
EN ⌄
My Groups
Closed groups you belong to.
Team Backend
12 members · MS Hockey 2026
Admin
Friday Crew
7 members · MS Hockey 2026
Member
Maps to: /group/:id · GroupManagePage.tsx. Real data: GET /api/v1/groups/:id + /members. Members table with last-admin protection. Right rail: InvitePanel (code + URL + copy + regenerate — no email-direct send form yet, FR-004 gap) and ExportButton (CSV). Bottom: PredictionCoverage shows predicted/total per match (not a member×match matrix yet — composable client-side from existing data per FR-007).
EN ⌄
Team Backend
12 members · MS Hockey 2026 · You are the admin
Members (12)
Member Role Actions
PS
Peter S.
Member
JM
Jana M.
Member
MK
Martin K. you
Admin Last admin · cannot remove
TR
Tomáš R.
Member
Prediction coverage
Slovakia vs Finland window open
14 May · 18:00
8 / 12
members predicted
Canada vs Sweden window open
14 May · 20:15
9 / 12
members predicted
Czech Rep. vs Germany
12 May · 14:00 · Finished
12 / 12
members predicted
Invite link
Code
BKE4X2
Shareable URL
Email-direct send form (FR-004) is specced but not built yet.
Export
Download CSV of group standings + per-match points.
Maps to: /admin · AdminDashboard.tsx. Real data: two cards only — active tournaments (GET /tournaments?status=active) and missing results (GET /admin/matches/missing-results, polled every 60s). Not shown: live-now / tips-today / users-count / groups-count cards (no aggregation endpoints yet), Live & next-up table, Pending scores table, Quick-actions card, Recent-activity feed (admin-action subset would be feasible against existing admin_audit_log; system-wide events need a new module).
EN ⌄
Admin · Dashboard
Platform overview · last refreshed 14:38
Active tournaments
1
Click to manage tournaments →
Missing results
2
Matches ended without is_final · enter results to trigger scoring.
Maps to: /admin/tournaments · TournamentsPage.tsx. Real data: GET /tournaments. CRUD via inline form (name, sport, start/end dates, optional status). Click Schedule/admin/tournaments/:id/matches. Status enum: draft / active / finished / archived. Not shown: sport / status filter chips, sortable columns, matches/groups/tips counts (no aggregation today), bulk CSV import, delete (specced as Phase 3 in fe-admin/spec.md).
EN ⌄
Tournaments
3 tournaments · 1 active
3 tournaments
Name Sport Dates Status Actions
MS Hockey 2026
Ice Hockey 2026-05-09 – 2026-05-25 Active
UEFA Euro 2026
Football 2026-06-12 – 2026-07-12 Draft
NBA Finals 2025
Basketball 2025-06-01 – 2025-06-20 Archived
Maps to: /admin/tournaments/:id/matches · MatchSchedulePage.tsx. Real data: GET /tournaments/:id/matches. Inline create form (home, away, scheduled_at, duration, template, optional round). Per-row status select + MatchResultForm with scores + winner-derived + finalize (no outcome capture today; would land via extra_data.outcome JSONB). Not shown: bulk CSV import, status-filter chips, "Live" sub-tab with period breakdown (Phase D — needs live-score-entry module).
EN ⌄
MS Hockey 2026 — Matches
40 matches · 1 live · 17 finished · 22 upcoming
Scheduled Match Status Result
14 May 18:00
R5
Slovakia vs Finland
:
14 May 14:00
R5
Russia vs USA
● Live
:
12 May 14:00
R4
Czech Rep. vs Germany
Finished
: Final · v1
Maps to: /admin/templates · TemplatesPage.tsx + TemplateBuilder.tsx. Real data: GET /scoring-templates. Each template has components (winner, exact_score, advancing_team) with point values + required + sort_order. in_use flag prevents delete when bound to an active tournament.
EN ⌄
Scoring templates
Define how points are awarded per tournament
Hockey Standard 2026 In use
Used by: MS Hockey 2026
Match Winner winner
Correct winning team · required
2
pts
Exact Score exact_score
Both scores correct
5
pts
Advancing Team advancing_team
KO rounds only
4
pts
Football Standard
Used by: UEFA Euro 2026 (draft)
winner 2 · exact_score 5 · advancing_team 3
Maps to: /admin/users · UsersListPage.tsx. Fully shipped under D7 (admin-user-management, 9/9). The wireframe v4f's "Phase 2 read-only" annotation is stale. Real data: GET /admin/users (paginated, searchable, filterable by role / active). Actions: promote / demote / deactivate / activate (with last-admin + self-action protection). All writes audit-logged in admin_audit_log · readable via GET /admin/audit-log. Click row → /admin/users/:id.
EN ⌄
Users
Search, role change, deactivate · all changes audited
All Player System admin All Active Inactive 42 users
Name Email Role Active Joined Actions
Martin K.
martin.k@company.com Player Active 2026-03-12
admin
admin@tipplatforma.com System admin Active 2026-01-01 Last admin · cannot demote
Jana M.
jana.m@company.com Player Inactive 2026-03-04
Maps to: /tournament/:tournamentId/group/:groupId/summary · TournamentSummaryPage.tsx. Shipped under D8 tournament-summary (8/8). Lazy-loaded chunk (framer-motion stays out of the main bundle). Triggered when a tournament's last match has result_version = 1, is_final = true. Per-group permalink, animated top-3 reveal.
EN ⌄
NBA Finals 2025 · Friday Crew
Final standings · 7 matches played · 7 members · ●●● permanent link
2
Lucia B.
21 pts
1
Martin K.
24 pts · 86% acc
3
Peter S.
18 pts
Final leaderboard
# Player Pts Acc%
1
MK
Martin K. you
2486%
2
LB
Lucia B.
2171%
3
PS
Peter S.
1864%
4
JM
Jana M.
1450%