Hey there! ๐Ÿ‘‹

Your sixth sense is not activated yet ๐Ÿ”ฎ

๐Ÿ‘ฅ SQUADS

โญ FAVOURITES
Star players in your squads to save them as favourites โ€” quick access when building new squads

๐ŸŽฏ PLAY NOW

Remember, you only tip once โ€” your picks automatically count towards all squads you're part of.


Select a competition above to start picking winners
๐Ÿ“Š LEADERBOARD
Round 5 standings

M = Margin score โ€” lower is better. Used as a tiebreaker when points are equal.
๐Ÿ”” NOTIFICATIONS
Notifications are kept for 30 days, then automatically cleared

No notifications yet
โš™๏ธ SETTINGS
Manage your preferences

๐Ÿ‘ค Profile
Your account details and how others see you in squads + leaderboards.
โ€”
โ€”
โ€”
โ€”
โ€”
๐Ÿ”’ Change password
To change your password, sign out and use "Forgot password?" on the Sign In page. Ensure you have access to the above email.

๐ŸŽจ App Theme
Choose your own theme or use the default which automatically switches between light and dark based on the time of day.
Use Default (Auto)
Cream & Forest during the day ยท Night Lime after dark
Choose Theme

๐Ÿ—„ Archive
Archived squads are hidden by default. Toggle on to show them as read-only in your Squads section (greyed out). Leaderboard and other views always exclude archived squads.
Show archived squads
Read-only ยท greyed out ยท Squads section only

๐Ÿ‘ฅ Squad names
Personalise how each squad appears to you. Owner renames affect everyone in the squad; member renames are personal to you.
โ“ HELP
How Tiparuz works

โ„น๏ธ About Tiparuz
1
Tiparuz is a social prediction game built for friendly competition. You don't need to be a sport expert โ€” just back your instinct and see what happens.
2
The game is designed around bragging rights. Points, margins, leaderboards โ€” it all comes down to one question: whose instinct is sharpest?
3
Tiparuz currently supports AFL and Soccer competitions. More competitions may be added in future seasons.
4
Each competition runs its own rounds and matches independently โ€” you can tip across multiple competitions at the same time.
Version 0.1.0 ยท 2026-05-02
๐ŸŽฏ Play โ€” How to Tip
1
You don't need to be in a squad to tip. Select a competition from the Dashboard or the Play Now tab, pick a round, and start tipping.
2
On the Dashboard your tips save automatically as you pick โ€” no button needed. In the Play Now page, use ๐Ÿ”’ Lock In Tips to confirm all your picks for the round.
3
You only tip once per competition โ€” your picks automatically count towards every squad you belong to for that competition.
4
Once match results are entered, each match card shows the Final Score along with whether your tip was correct, your points earned, and your margin score.
5
Tipping closes when a round starts. Results will appear in your dashboard and recent activity as they come in.
6
Use the round tabs on the Play Now page to browse past rounds and review your full prediction history.
๐Ÿ‘ฅ Squads
๐ŸŽ‰ More Fun With Friends โ€” Playing solo is great, but taking down your mates is even better. Create a squad or join one using the buttons at the top to compete head-to-head.
1
Every squad is tied to a specific competition when it's created โ€” this cannot be changed. To compete in a different competition with the same group, use the โ‹ฎ menu โ†’ ๐Ÿ” Duplicate on any squad you own โ€” copies the same members into a new squad in another competition.
2
Once a squad is created, add members from the โ‹ฎ menu โ†’ โž• Invite members on your squad card.
3
A unique 6-letter code is generated for every squad. Share it so others can request to join โ€” all code-based join requests must be approved by the squad owner.
4
Pending invites and join requests show as โณ +X pending on the squad card footer. Head to ๐Ÿ”” Notifications to action them.
5
The squad owner can remove any player. Any player can remove themselves (leave) at any time.
6
An owner can delete a squad only when they are the sole confirmed member. If pending invites exist you'll be warned before deleting.
7
Remember โ€” you only tip once per competition. Your picks automatically count towards all squads you're in for that competition.
8
Personalise how each squad appears to you in โš™๏ธ Settings โ†’ ๐Ÿ‘ฅ Squad names. Owners can rename the canonical name (everyone sees it). Members can set a personal display name (only you see it). If two of your squads end up sharing the same displayed name, a ๐Ÿ‘€ hint appears on those cards โ€” hover or tap for the message.
9
Owners can cancel a sent invite โ€” tap โœ— Cancel next to a pending invitee in the squad's pending block. The invite silently drops from the invitee's view; no notification fired.
10
Owners can ๐Ÿ” Duplicate a squad โ€” copies the same members into a new squad in another competition. Members are auto-approved (no re-invite needed) and get a notification: "You have been added to NEW_SQUAD by [owner]". If you don't want to stay, leave anytime via the โ‹ฎ menu โ†’ ๐Ÿšช Leave squad.
11
๐Ÿ—„ Archiving a squad โ€” owners can archive a squad once it has scored history. Archive = read-only โ€” the squad becomes hidden by default and can no longer accept new members, renames, or be deleted. Owners can still ๐Ÿ” Duplicate archived squads to start fresh in another competition with the same members.
12
Want to see your archived squads? Toggle Show archived squads ON in โš™๏ธ Settings โ†’ ๐Ÿ—„ Archive. Archived squads then appear greyed out in your Squads section. They never show on the Leaderboard or Dashboard regardless of the toggle.
โญ Favourites
1
Favourites are your go-to players โ€” squad owners can star any member by tapping โ˜† on their row in the squad card. Tap again to unstar. No request or permission needed.
2
Favourites appear first in the invite picker when adding members to a new or existing squad โ€” making it quick to rebuild squads each season.
3
The Favourites tab is only visible to squad owners. Players who don't own any squad won't see it.
4
Remove a favourite by clicking โœ• on their card in the Favourites page, or by tapping โ˜… again on their row inside any squad card.
๐Ÿ… Scoring
Each competition uses one of two scoring modes depending on the sport. Your competition's mode is shown on the match cards.
a. ๐Ÿ‰ AFL โ€” Winner + Margin
1
Pick the team you think will win and enter how many points you think they'll win by.
2
Correct winner = 4 points. Wrong winner = 0 points.
3
Predict a draw = 5 points if the match ends in a draw. Enter 0 as your margin to predict a draw. AFL draws are extremely rare โ€” extra reward for calling it!
4
If you don't submit a tip before the round starts, the home team is used as your default with a margin of 0.
5
Margin score โ€” lower is better. If your team wins: |predicted margin โˆ’ actual margin|. If your team loses: predicted margin + actual margin. Equal points are broken by lowest margin score.
b. โšฝ Soccer โ€” Exact Score
1
Enter your predicted score for each team โ€” the winner and any draw are worked out automatically from the scores you enter.
2
Correct winner or draw = 2 points. Wrong result = 0 points.
3
+1 bonus point if your exact scoreline matches the final result (e.g. you predicted 2โ€“1 and it ended 2โ€“1). Shown as a +1 bonus badge on your result card.
4
If you don't submit a tip before the round starts, a 0โ€“0 score is used as your default. No bonus point is awarded even if the match ends 0โ€“0.
5
Margin score โ€” lower is better. Calculated as |predicted goal difference โˆ’ actual goal difference|. Equal points are broken by lowest margin score.
๐Ÿ  Dashboard
1
The Dashboard is your home base every time you log in. It shows your current round stats, recent activity, and quick-tip match cards.
2
First time? Use the Choose Competition tiles โ€” follow the bouncing ๐Ÿ‘‡. Once you select one, tap Play Now to go straight to the current round. After your first tip the dashboard switches to showing live match cards.
3
You can tip directly from the dashboard match cards โ€” picks save automatically as you go. No lock-in button needed on the dashboard.
4
If you're tipping across multiple competitions, use the tabs above the match cards to switch between them.
5
Your Stats (shown under your name) updates with your points and correct picks for the current round once results are in.
6
The Status panel on the right shows at a glance whether tipping is open, you've already locked in, or results are available for each competition.
7
Recent Activity shows your last 5 picks mixed with any squad notifications โ€” a quick snapshot of what's happened.
๐Ÿ“Š Leaderboard
1
The All tab shows you alongside all your squad mates, with a column for each active competition. Click any competition column header to sort by that competition's points.
2
Each squad tab shows only that squad's members, ranked by their tips for that squad's competition. The Form column shows your last 3 results โ€” C correct, W wrong.
3
Margin shown under each score is the tiebreaker โ€” lower is better. When two players have equal points, the one with the lower margin ranks higher.
4
You need to be in at least one squad to see other players on the leaderboard. Solo tippers only see themselves until they join or create a squad.
๐Ÿ”” Notifications
1
The bell ๐Ÿ”” in the top bar shows a red dot when you have unread notifications. Tap it to see a quick dropdown of pending items.
2
Notifications cover squad invitations (someone inviting you to join their squad), join requests (someone requesting to join your squad), and squad activity confirmations.
3
You can action squad invites and join requests directly from the notification dropdown โ€” no need to navigate away.
4
Head to the Notifications page (๐Ÿ”” in the sidebar) for the full list. Notifications are automatically cleared after 30 days.
โš™๏ธ Settings
1
Open Settings from the sidebar to personalise your Tiparuz experience.
2
Choose your app theme from the colour swatches โ€” pick any theme and it's saved to your profile so it follows you across devices.
3
Enable Auto theme to let Tiparuz switch automatically โ€” Cream & Forest during the day, Night Lime after dark.
4
Your theme preference is stored on your account and restored every time you log in.
๐Ÿ›ก๏ธ ADMIN
Manage sports, competitions, matches and results

โž• Add Sport
All Sports
Loading sports...
All Teams
Loading teams...
๐Ÿ”„ Manage Rounds
๐ŸŽฏ Enter Results
All Squads
Loading...
๐Ÿ’ฌ User Messages
Loading...
๐Ÿ“‹ Admin Logs
๐Ÿ—บ๏ธ Overview
1
The Admin panel is only visible to users with is_admin = true in the profiles table. Set this in Supabase directly.
2
The data hierarchy is: Sports โ†’ Competitions โ†’ Rounds โ†’ Matches. Everything flows down this chain. Players tip on matches, matches belong to rounds, rounds belong to competitions, competitions belong to a sport.
3
Recommended workflow each round: โ‘  Sports tab โ€” one-time setup (add sport + scoring mode) โ‘ก Teams tab โ€” one-time setup (add all teams for each sport + venues) โ‘ข Matches tab โ†’ Rounds โ€” create a round, set status to future โ‘ฃ Matches tab โ†’ Matches โ€” enter matches manually or via Bulk Import โ‘ค Matches tab โ†’ Rounds โ€” set round to current (opens tipping for players) โ‘ฅ Results tab โ€” after matches are played, enter scores and Apply All
4
Admin tabs: Sports (setup), Matches (rounds + fixtures), Results (scores + points), Squads (read-only overview), Messages (user messages), Enquiry (data queries + network), Logs (audit trail), Help (this page).
๐Ÿ† Sports Tab
1
Add Sport โ€” create a sport with a name, emoji icon, and scoring mode. Two scoring modes available: Winner + Margin (AFL) โ€” player picks the winning team and a margin in points Exact Score (Soccer) โ€” player predicts the exact home and away score This is a one-time setup โ€” you rarely need to add new sports.
2
Edit Sport โ€” click any sport name to open the edit modal. Name, icon, and scoring mode can be changed. Scoring mode locks once the sport has active competitions with rounds โ€” prevents mid-season scoring changes.
3
Add Competition โ€” click + Competition on any sport row. Give it a name (e.g. AFL 2026), season year, timezone, and optionally a website URL. Competitions appear as inline chips on the sport row โ€” click a chip to edit.
4
Deleting โ€” delete a competition via its chip (โœ•), or delete a sport via the edit modal. Both cascade: deleting removes all child rounds, matches, and results permanently. There is no undo.
๐Ÿ‘• Teams & Venues Tab
1
Teams are linked to a sport, not a competition. e.g. Manchester United is a Soccer team and appears in all Soccer competitions (EPL, FA Cup, etc). Add all teams for a sport once at the start of the season.
2
Team fields: Name (required), Short name (optional, e.g. COL), Sport (required), Competition (optional โ€” only needed for name conflicts across comps of the same sport), Home venue (optional โ€” auto-fills venue in Matches tab).
3
Warnings: A gold warning appears on blur if a similar team name already exists (fuzzy match). Short name warns if already used by another team. Neither blocks saving โ€” they are advisory.
4
Duplicate names blocked โ€” you cannot add two teams with the same name under the same sport (enforced by DB constraint).
5
Renaming a team โ€” you'll be asked: Fix Everywhere (typo fix โ€” updates all matches, predictions, results) or Future Only (real name change โ€” only updates the teams table; existing matches keep the old name).
6
Deleting a team is blocked if any matches reference it. Edit the name instead, or remove the matches first.
7
Venues sub-tab โ€” a global venue list (not linked to any sport). Each venue has a name and city. Unique constraint on name + city โ€” "ANZ Stadium, Sydney" and "ANZ Stadium, Auckland" are both allowed.
8
Deleting a venue is blocked if matches reference it. To retire a venue, stop using it and create a new one for future matches.
๐Ÿ“… Matches Tab
1
The Matches tab has two sub-tabs: Rounds (create/manage round status) and Matches (enter fixtures). Rounds sub-tab is the default landing.
2
Rounds sub-tab โ€” select a competition to see all rounds. Each round shows its number, label, status dropdown, match count, and action buttons. + Add Round โ€” enter a round number, the label auto-fills (e.g. R1). You can edit the label to anything (Finals, GF, etc). Set Current โ€” promotes a round to current and auto-cascades: previous rounds โ†’ locked, next round โ†’ next, remaining โ†’ future. Re-cascade โ€” re-clicking Set Current on an already-current round re-runs the cascade to fix manual overrides. Status dropdown โ€” manually override any round's status. Warns when setting to current without cascade.
3
Round Status โ€” what each status means:
Status Player sees? Player tips? Admin tips? Add matches? Bulk import? Edit venue/time?
FutureNoNoNoYesYesYes
NextNoNoYesYesYesYes
Current (no tips)YesYesYesYesYesYes
Current (has tips)YesYesYesNoNoVenue/time only
LockedYes (read-only)NoNoNoNoVenue/time only
Results appliedYes (with scores)NoNoNoNoVenue/time only
4
Auto-lock: When match times are set, the round locks automatically the moment the first kickoff time passes. Players instantly lose the ability to tip. If no match times are set, the round never auto-locks and must be locked manually. Auto-lock also triggers cascade โ€” promoting the next round.
5
Matches sub-tab โ€” manual entry: Select a competition and round. Click โœ๏ธ Edit to open the form. Use + Add Match to add rows. Home team and away team are required. Match time is optional. Team dropdowns โ€” populated from the Teams tab for that sport. Already-used teams fade across rows to prevent duplicates. Venue auto-fill โ€” when a home team is selected, the venue auto-fills from the team's home venue (if set). You can always override it. Timezone โ€” match times are entered in the competition's timezone (shown next to the form title) and stored as UTC internally.
6
โœ… Apply All โ€” saves the round and all matches to the database. Matches are deduplicated by home team + away team + round. If editing an existing round, removed rows are deleted from DB.
7
๐Ÿ“ฅ Bulk Import โ€” paste fixtures from any website or load a .csv file. Available on rounds with no tips and no results. Date format โ€” dropdown defaults to AU (DD/MM/YYYY). Switch to US (MM/DD/YYYY) for American sources. Expected columns: round, home_team, away_team, venue, kickoff_time Separators: Tab (paste from Excel) and comma (.csv) are auto-detected. Header row is auto-skipped. Preview: โœ… exact match, ๐ŸŸก fuzzy match (click dropdown to confirm), ๐Ÿ”ด not found (add via Teams/Venues tab first), โš ๏ธ parse error. Duplicates: If a match already exists in the round, a Skip/Replace toggle appears. Skip = leave as-is, Replace = update venue and kickoff time only. Apply: If any ๐ŸŸก, โš ๏ธ round warnings, or duplicates exist, a confirmation dialog lists all non-green items before writing. Nothing saves without your click.
8
Testing tip: Leave match time blank during testing. Auto-lock won't fire โ€” you can tip freely, then manually lock via the Results tab before entering scores.
9
To reopen a locked round: Update the round status back to current via the Rounds sub-tab dropdown, or in Supabase: UPDATE rounds SET status = 'current' WHERE id = '<round_id>';
๐ŸŽฏ Results Tab
1
Select a competition and round. The score entry grid appears automatically. If the round is not yet locked, a โš ๏ธ warning appears with a ๐Ÿ”’ Lock Round Now button โ€” click it to close tipping before entering results.
2
Recommended workflow: โ‘  Matches with times โ†’ round auto-locks at first kickoff โ†’ enter scores โ†’ Apply All. โ‘ก Matches without times โ†’ players tip โ†’ click Lock Round Now โ†’ enter scores โ†’ Apply All.
3
Enter the final score for each match. Leave a row blank to skip โ€” only rows with scores are saved.
4
๐Ÿงช Test โ€” applies results and calculates points for the test user only. Verify before applying to everyone. Test user must have tipped first.
5
โœ… Apply All + Calculate Points โ€” saves results and calculates points for every user who tipped. Points are stored on predictions (points_earned, margin_score, bonus_earned).
6
Re-apply: Running Apply All again on the same round overwrites results and recalculates all points. Use this to correct mistakes.
7
After results: Players see final scores, โœ“ Correct / โœ— Wrong badges, and points on their match cards. Dashboard stats and leaderboard update on next load.
8
Auto-advance: When all matches in a round have results, the system auto-advances round statuses โ€” next round becomes current, the one after becomes next. This only fires when ALL matches have results, and does not re-fire on re-apply.
๐Ÿ… Scoring Reference
1
Winner + Margin scoring (AFL):
Outcome Points Margin score
Correct winner4 pts|predicted margin - actual margin|
Correct winner, null margin4 ptsactual margin (penalty for not entering)
Correct draw prediction4 pts0
Wrong winner0 ptspredicted margin + actual margin
Wrong winner, null margin0 pts2 ร— actual margin
No tip submitted0 ptsNo score calculated
Lower margin score = better. Used for tiebreaking on the leaderboard.
2
Exact Score scoring (Soccer):
Outcome Points Bonus Margin score
Correct result (right side wins/draws)2 ptsโ€”|predicted diff - actual diff|
Exact scoreline match2 pts+1 bonus0
Wrong result0 ptsโ€”|predicted diff - actual diff|
No tip submitted0 ptsโ€”No score calculated
๐Ÿ‘ฅ Squads Tab
1
Shows a read-only overview of all squads across all users. Admin cannot create, edit, or delete squads โ€” that is handled by squad owners.
2
Stats bar: total squads, total members, users in at least one squad, squad owners count.
3
Each squad row shows: squad name, competition badge (icon + comp name), owner, member count, 6-letter squad code, and creation date.
4
What players can do: Create squads (become owner), join via code (needs owner approval), invite friends, leave a squad, delete own squad. All managed from the player Squads section โ€” no admin action needed.
๐Ÿ’ฌ Messages Tab
1
Shows messages sent by users via Contact Admin in their username dropdown. Messages are up to 50 characters with an optional email address for reply.
2
Unread messages are highlighted with a NEW badge. A count badge appears on the Messages tab label.
3
โœ“ Mark read on individual messages, or โœ“ Mark all read to clear everything at once.
4
To reply, click the email link โ€” opens your default mail client with the address pre-filled.
๐Ÿ” Enquiry Tab
1
Four sub-tabs for querying data: Presets, Query Builder (coming soon), Table Browser, and Network.
2
Presets โ€” quick data lookups:
Preset What it shows Filter
๐Ÿ‘ค Player LookupAll squads, tips, results, and points for a userUsername (autocomplete)
๐Ÿ“‹ Round OverviewAll rounds with match counts, tip counts, statusCompetition
๐ŸŽฏ Tips for a RoundEvery tip submitted for a specific roundCompetition + Round
๐ŸŸ๏ธ Match ResultsFinal scores for all matches in a roundCompetition + Round
๐Ÿ‘ฅ Squad MembersAll members of a squad with statusSquad
3
Table Browser โ€” browse any database table directly. Select a table from the dropdown, set a row limit (50/100/200), and view all rows. Click column headers to sort. Cells truncate with hover tooltips for full values.
4
Network โ€” visualise player connections through squads. Three views: Player โ€” select a player to see all their squads and squadmates with frequency counts. Squad Overlap โ€” table of squad pairs sharing members, sorted by shared count. Most Connected โ€” ranks all players by unique squadmate count. Orphan section at bottom (players in zero squads). Stats bar shows: total players, squads, connections, orphans. Use Refresh to re-fetch from DB.
๐Ÿ“‹ Logs Tab
1
Full audit trail of all admin and system actions. Every sport, competition, round, match, team, venue, and result change is logged automatically.
2
Filters: Actor โ€” filter by admin (manual actions) or system (auto-lock, auto-cascade). Action type โ€” filter by category: sport, competition, round, match, team, venue, or all. Time range โ€” quick filters (last 10/60 min, 6h, today, yesterday) or All time.
3
Each log entry shows: actor (admin/system), action description, target type, and timestamp. Use Load More for pagination (50 rows per page). Refresh to re-fetch.
๐Ÿ—„๏ธ Database Reference
1
Table Key columns Notes
sportsid, name, slug, icon, input_mode, allow_drawTop-level. input_mode: winner-margin or exact-score
competitionsid, sport_id, name, season, timezone, is_activeFK to sports. Timezone used for match time display
roundsid, competition_id, round_number, label, statusStatus: future, next, current, locked
matchesid, round_id, competition_id, home_team, away_team, match_time, venue, sort_ordermatch_time stored as UTC. Text team/venue names
teamsid, name, short_name, sport_id, competition_id, home_venueLinked to sport. Optional competition_id for name conflicts
venuesid, name, cityGlobal โ€” no sport link. Unique on name + city
predictionsid, user_id, match_uuid, competition_id, round_uuid, winner, margin, home_score, away_score, points_earned, margin_score, bonus_earnedOne row per user per match
resultsid, match_uuid, home_score, away_score, home_team, away_team, sport, season, round, is_testOne row per match. Unique on match_uuid. is_test flags seeded test data
squadsid, name, code, owner_id, competition_id6-letter code for joining. FK to competitions
squad_memberssquad_id, user_idJunction table. Composite PK on (squad_id, user_id)
profilesid, username, theme, is_adminSet is_admin = true in Supabase for admin access
messagesid, user_id, username, message, email, readUser-to-admin. Max 50 chars
notificationsid, user_id, type, message, readBell notifications (squad requests, etc)
favouritesid, user_id, target_idPlayer favourites list
admin_logsid, actor, action, target_type, target_id, detail, metadataAudit trail. Auto-populated by admin_log()
โš ๏ธ Common Issues
1
Problem Cause Fix
Round select empty in ResultsNo rounds created for that compGo to Matches โ†’ Rounds and add rounds first
Match error on Apply โ€” no unique constraintDB constraint missingALTER TABLE matches ADD CONSTRAINT matches_round_home_away_unique UNIQUE (round_id, home_team, away_team);
Results not savingMissing constraint or RLSALTER TABLE results ADD CONSTRAINT results_match_uuid_unique UNIQUE (match_uuid); + add admin RLS policies
Points not calculatingUser tipped after results appliedRe-run Apply All after all users have tipped
Contact Admin failingRLS missing on messages tableAdd insert policy for authenticated, select/update for admins
Squad shows wrong compcompetition_id is nullUPDATE squads SET competition_id = '...' WHERE sport_legacy = '...';
Bulk Import button disabledRound has tips or resultsBulk import only works on rounds with no tips and no results
Bulk Import ๐Ÿ”ด on a team that existsTeam name doesn't match exactlyUse the dropdown to pick the correct team, or check spelling in Teams tab
Auto-lock not firingMatch times not set, or timezone mismatchCheck times are entered in the comp's timezone. Auto-lock fires on any page load after kickoff
Testing โ€” keep tipping openAuto-lock fires when kickoff passesLeave match times blank during testing. Lock manually via Results tab when ready
Last run: โ€”
Runs pure-function tests against live app code. No DB writes. Failures logged to console with full details. Tests can also be run from console: window.devTests.runAll()