SPORTSPORTAL
Sign inGet started
Documentation

How Sports Portal works

A complete walkthrough of every feature — matches, ratings, tournaments, festivals, teams, and the social tools around them. Browse by topic in the sidebar, or use the search box to jump straight to a section. No account required to read this.

Getting started

Overview

Sports Portal is a community sports platform for organizing matches, events, tournaments, and multi-team festivals, and for tracking every player's Skill Rating, stats, and achievements over time. It works the same way for casual pickup games as it does for a multi-day, multi-sport tournament.

🏓
Matches
Log or challenge, singles or teams, with live scoring and a real Skill Rating.
📅
Events
RSVP, waitlist, venue check-in, and calendar export.
🏆
Tournaments
Group stages and knockout brackets, with bracket predictions.
🎪
Festivals
Multi-city, multi-sport competitions with their own standings.
👥
Teams
Rosters, polls, chemistry stats, and recruitment posts.
🎖️
Badges & quests
Automatic achievements plus daily/weekly challenges.
Getting started

Creating an account

Sign up from the Register page with an email and password, or continue with Google. On your first sign-in you'll land on a short onboarding flow that collects your name, date of birth, gender, and the sports you play — this powers matchmaking, division tiers, and age/gender-restricted events, and can be edited later from your profile.

Already have an invite?
If an organizer or teammate added you to a roster before you signed up, register with the same email they used — your matches and team memberships will already be waiting once your account exists.
Getting started

The dashboard

Everything after sign-in lives under /dashboard. The sidebar groups features into Play (matches, challenges, matchmaking), Compete (tournaments, festivals, rankings), Social (friends, feed, chats), and Account (profile, settings, notifications). The home screen surfaces your live matches, recent results, upcoming events, and weekly standouts in one place.

  • Press Ctrl+K (or +K) anywhere in the dashboard to open global search for players, teams, and matches.
  • A live badge count on each sidebar item updates in real time as new notifications arrive — no page refresh needed.
  • Dark theme is the default; switch to light from the theme toggle, and your choice is remembered on this device.
Getting started

Roles & permissions

Every account is one of three roles. Roles are additive — an admin can do everything an organizer can, plus more.

RoleCan do
PlayerLog/challenge matches, join events & tournaments, manage their own team roster if made captain, use all social features.
OrganizerEverything a player can, plus create and manage Events, Tournaments, and Festivals.
AdminEverything an organizer can, plus the Admin panel: venues, seasons, platform analytics, dispute resolution, and privacy request handling.

Two extra exceptions exist: a festival "Team" (city) captain can manage that team's roster without being a full organizer, and an event's creator can edit that specific event even without the organizer role.

Matches

Logging a match

Go to Matches → New Match, pick the sport and an opponent, and set the date. You can create a match that already happened (to record history) or one that's scheduled for later.

  1. Choose the sport — this determines which per-match stats and scoring rules apply.
  2. Select your opponent (or, for team sports, both rosters).
  3. Set the date/time and, optionally, a venue.
  4. Once the match starts, enter and update the score; mark it Completed when it's over.

Completing a match automatically updates both players' Skill Ratings, checks for newly-earned badges, resolves any predictions made on it, and advances daily/weekly quests.

Matches

Challenging a player

Instead of creating a match directly, you can send a challenge from a player's profile or the Matchmaking page. The opponent gets a notification and can accept, decline, or let it expire — accepting turns it into a scheduled match automatically.

  • Matchmaking suggests opponents within roughly ±300 Skill Rating of you, in sports you both play, prioritizing players marked available today.
  • You can withdraw a challenge you sent before it's accepted.
  • A completed match can be rematched with one click from the match detail page.
Matches

Match lifecycle & scoring

Matches move through a simple lifecycle:

  1. Scheduled — created, not yet started.
  2. Ongoing — score entry is open; both participants and referees see live updates every couple of seconds.
  3. Completed — final score locked in; ratings, badges, and predictions are resolved.

Doubles and team matches

Sports that support it can be played as doubles (a partner pair per side) or full team matches. Rating changes for a team are shared across the team's roster, weighted by the match outcome.

Best-of series

Tournament matches can be scored as a best-of series (e.g. best of 3 games) rather than a single score. Enter each game's score as it finishes; the winner and result type (straight win vs. tiebreak) are derived automatically once the series is decided.

Matches

Predictions

Before or during a player-vs-player match, anyone can predict who wins from the Predict the outcome panel on the match page — pick a side or Draw. A community bar shows how everyone else predicted. Guessing correctly earns you 10 points once the match completes, which feed the prediction leaderboard. Predictions are one-per-person-per-match and locked once the match is completed.

Matches

MVP voting & sportsmanship

MVP voting

After a match completes, participants (and organizers, for larger events) can vote for the standout player. Whoever reaches at least 2 votes is awarded the match's MVP badge. Tournaments and events also run their own MVP vote across the whole competition, separate from individual match votes.

Sportsmanship ratings

Participants on a completed match can rate each other 1–5 stars for sportsmanship. Ratings are private to the person who receives them and appear on their profile as an aggregate — you can't rate yourself, and you can only rate each opponent once per match.

Matches

Disputes & referees

Flagging a dispute

Any participant on a completed match can flag it as disputed if the recorded result is wrong, with a short reason. The other participants are notified, and an admin reviews it from the Admin panel — they can clear the dispute as-is, or roll the Skill Rating change back to what it was before the match and re-open it for correction.

Referee panel

If a match has a referee assigned, that person gets access to a dedicated Referee panel showing their assigned scheduled/ongoing matches, where they can update the live score directly.

Ratings & stats

Skill Rating (SR)

Every player starts at a Skill Rating of 1000. After each completed match, both sides' ratings adjust based on the result and the rating gap between them — beating a stronger opponent gains you more than beating a weaker one, and a dominant scoreline moves the rating a little further than a narrow one. Skill Rating can never drop below a floor of 100.

  • View your full rating history as an interactive chart on your Profile page.
  • A rating sparkline appears next to your name in leaderboards and tables for an at-a-glance trend.
  • Skill Rating is tracked both globally and per sport.
Ratings & stats

Stats & activity

The Stats page breaks down your record by sport — wins, losses, draws, and a match timeline. The Activity heatmap shows a GitHub-style calendar of your match activity over the last year, colour-coded by win rate, plus your longest win streak. Momentum is a 0–100 score computed from your last 10 matches, weighted toward your most recent results, with a bonus for active win streaks — shown as a trend label (hot, rising, neutral, falling, cold) wherever your recent form matters.

Ratings & stats

Compare & head-to-head

Compare puts two players side by side — overall stats, per-sport rating, badges, and rating history. Head-to-head (H2H) looks specifically at the matches between two players: overall record, a per-sport breakdown, and the recent match list between just the two of you. Both are reachable from any player's profile.

Events

Events, RSVP & check-in

Events are scheduled sessions — practices, games, tournaments, leagues, or championships — tied to a venue and date. Public events are visible without signing in at /events.

  1. Open an event and RSVP Going, Maybe, or Can't go — your response is visible to the organizer and updates the headcount.
  2. If the event has a capacity limit and fills up, you can join the waitlist; you'll be promoted automatically (with a notification) if a spot opens.
  3. At the venue, an organizer reads out a 6-digit check-in PIN specific to that event, which RSVP'd players enter to confirm they showed up.
  4. Comment on the event page to coordinate with other attendees.

Any event or match can be exported as a calendar file (.ics) to add to Google Calendar, Outlook, or Apple Calendar. Events happening soon also trigger a reminder notification (push + in-app) automatically.

Tournaments

Tournament basics

A tournament moves through Draft → Registration → In Progress → Completed (or Cancelled). During Registration, players or teams sign themselves up — organizers can also add participants directly. Some tournaments restrict entry by gender or age, which is checked both when restrictions are set and again at registration time. If buy-ins are enabled for a tournament, you pay through a secure Stripe checkout from the Participants panel.

Tournaments

Groups & knockouts

Group stage

Participants are split into named groups that play a full round-robin. Standings rank by points (win = 3, tiebreak win = 2, tiebreak loss = 1, forfeit win = 3), then head-to-head tiebreaks, then points scored.

Knockout stage

A single-elimination bracket seeded from group results (or set directly for a knockout-only tournament) — seed 1 meets the weakest opponent in the earliest round under standard bracket seeding. Winners advance automatically; the final's winner is awarded a tournament-winner badge for every player on the winning side.

Bracket predictions

Before a knockout match is played, anyone can predict its outcome from the bracket view. A per-tournament leaderboard tracks prediction accuracy.

Festivals

What is a festival?

A Sports Festival is a larger, multi-city competition — think an inter-club or inter-community tournament running several sports at once. In the app, a competing side is called a Team (a city or club entry), and a single Team-vs-Team matchup is called a Game. Each sport in a festival (e.g. "Badminton, male" and "Badminton, female" count as two separate divisions) runs its own group stage and knockout bracket, exactly like a standalone tournament.

Festivals

Teams & rosters

Organizers add each competing Team, optionally with a captain. Every Team keeps a general roster of players, populated either by an organizer/captain adding people directly, or by a player requesting to join a Team themselves — a request sits pending until that Team's captain (or an organizer/admin) accepts or rejects it. Accepting automatically withdraws any other pending requests that player made elsewhere in the same festival, since you can only represent one Team per festival.

From the general roster, each sport division gets its own per-sport roster — this is always assembled manually by a captain or organizer, not through self sign-up. For sports where a Team can field more than one lineup (e.g. multiple doubles pairs), the division can be split into lettered subteams (A, B, C…) — each plays in its own group, and the knockout bracket is arranged so same-lettered subteams from the same Team can't meet again before the final.

Festivals

Games, standings & feed

Every Game's result feeds two things: the standings for its sport division, and the Team's overall festival standing, which sums placement points earned across every sport it competed in (first/second/third/other, configured per division). The festival page shows standings, a browsable list of every sport division, and an announcements feed where organizers or captains can post updates.

Get notified
Click 🔔 Notify me on any festival page — including the public, unauthenticated one — to get a push and in-app notification whenever a Game's score is recorded or a new announcement is posted. You don't need to be a participant to follow along.
Teams

Club teams

Separate from festival Teams, a "Team" here is an ongoing club roster for one sport — create one from the Teams page and you're automatically its captain and first member.

  • Invitations — captains invite players; invited players accept or decline from their Team Invitations inbox.
  • Team polls — captains create quick polls (e.g. jersey colour, practice time) with an optional close date; members vote once each.
  • Team chemistry — win rate for every pair of teammates who've played together, colour-coded to surface your best (and weakest) duos.
  • Recruitment board — post "looking for a player" or "looking for a team" ads; others apply directly.
  • Team challenges — challenge another team in the same sport to a match.
  • Player transfers — captains/admins record when a player joins or leaves the roster, with an optional reason, building a transfer history.
Social

Friends & activity feed

Find people under Discover and send a friend request; once accepted, their completed matches, badges, and other activity appear in your Feed. React with an emoji, leave a comment, or hide items you don't want to see — you can delete your own posts from the feed, but not anyone else's.

Social

Direct messages

Friends can message each other directly from Chats. Conversations update live, and unread counts show in the sidebar and on the friend's entry.

Social

Endorsements & availability

Endorsements

On any player's profile you can endorse them for specific skills — Serving, Defense, Teamwork, Leadership, Consistency, Sportsmanship, Fitness, Tactics, Communication, and Mentorship. Each endorsement is a simple toggle; you can't endorse yourself.

Availability status

Set your status to Available, Doubtful, or Injured (with an optional note and expected return date) from your profile — this shows up wherever your name appears to teammates and opponents considering a match. Separately, blocking off specific date ranges in your Availability calendar is what powers the shared-availability view used when scheduling a match.

Progress

Badges

Badges are achievements awarded automatically — for milestones like your first match, a 10-match win streak, or winning a tournament. They're checked after every completed match, so you never have to claim one manually. Your earned badges appear on your profile in the Trophy Cabinet, sorted by rarity, and the Badges page shows progress toward ones you haven't earned yet.

Progress

Quests

Quests are daily and weekly challenges — for example, playing a certain number of matches, winning one, or making a prediction. Progress updates automatically as you play; completed quests award bonus points. Check the Quests page for what's currently active.

Progress

Rankings & leaderboards

Rankings shows cross-sport player standings with a division tier — Platinum, Gold, Silver, or Bronze — assigned by percentile within each sport. Leaderboards ranks teams and players by match points across all sports. A separate prediction leaderboard ranks players by points earned from correct match and bracket predictions, filterable by time window and sport.

Progress

Seasons

Organizers/admins can define Seasons with a start and end date. While a season is active, standings for that window are tracked separately from all-time stats, and season-end awards are recorded once it closes.

Scheduling

Availability & scheduling

The Availability heatmap shows, at a glance, which players are free on which days across the next few weeks. When you're setting up a match, the Scheduler checks everyone's blocked-off dates and suggests conflict-free time slots automatically.

Scheduling

Venues & pickup games

Venues

The Venue directory lists every venue with its event history, capacity, and courts. Anyone can book an open court slot; adding or editing venues and their courts is an admin-only capability.

Pickup games

Organizers post informal pickup games on the Pickup board; players sign up until capacity is reached (or without a cap, if none is set). Filter by sport to find one near you.

Account

Notifications

In-app notifications appear in your inbox and as a live sidebar badge count. If you enable browser push notifications (prompted the first time you use the dashboard) or use the mobile app, you'll also get push alerts for badges, friend requests, match challenges and results, disputes, new messages, event reminders, and festival updates you've subscribed to.

Account

Profile, privacy & your data

Edit your name, avatar, bio, and preferred sports from Profile. In Settings you control notification preferences and whether your stats are public — with stats set to private, only you can see your detailed match history and badges on your public profile.

Sports Portal's handling of your personal data — what's collected, why, how long it's kept, and how to request an export or deletion — is documented in full in the Privacy Policy. You can request a full data export or delete your account at any time from Dashboard → Privacy, or without signing in via the public data-deletion form. See also the Terms of Service.

Account

Mobile app

The Sports Portal mobile app (iOS/Android, built with Expo) mirrors the web dashboard's core features — live match detail with win probability and predictions, player profiles, badges, leaderboards and rankings, challenges, friends, feed, notifications, goals, recruitment, and sportsmanship ratings — with the same sign-in as the web app. Push notifications on mobile use the device's native notification system and deep-link straight to the relevant screen when tapped.

Help

Frequently asked questions

Do I need an account to browse events, tournaments, festivals, or player profiles?
No — public events, tournaments, festivals, teams, and player profiles with public stats are all viewable without signing in. You need an account to RSVP, play, or use any social feature.
How is Skill Rating different from a win/loss record?
SR accounts for opponent strength: beating a much higher-rated player moves your rating more than beating a much lower-rated one. See Skill Rating above.
I think a match result is wrong — what do I do?
Open the match and use Flag Dispute with a reason. An admin will review it and can correct the score and roll back the rating change if needed. See Disputes & referees.
Can I be on more than one team?
Yes for club Teams — you can belong to several. For a single Festival, you can only represent one Team, since standings are per-Team.
Who can create events, tournaments, or festivals?
Organizers and admins. If you need something created and don't have organizer access, ask your platform admin — see Roles & permissions.
How do I get push notifications?
On the web, accept the browser prompt the first time you visit the dashboard (or enable it later from Settings). On mobile, the app requests notification permission on first launch.
I found a bug or have feedback — who do I contact?
Reach out to your platform administrator directly. If you're an admin, the Admin panel has diagnostic tools for common issues.