Help & features guide

Everything Asabya League can do, and how to do it.

Getting started

Create an organization
Go to sign in → choose Google or email → you'll land on the welcome screen → choose Create an organization → name it → you're in.
Invite people
Settings → People & invites → Create invite link → share the link or code.
Your first competition
Dashboard → New league → choose a format or use Help me choose → add teams → generate schedule → enter scores → publish.

Competition formats

League (round-robin)
Everyone plays everyone — the fairest way to rank a field over a season.
Home & away
A league where every pair plays twice — once at home, once away.
Knockout
Win or go home — fastest way to a champion; great for one-day events.
Swiss
Many players, few rounds — opponents matched by record. Built for chess and large fields.
Double elimination
One loss isn't the end — a losers' bracket gives everyone a second chance.
Groups + knockout
Group stage to sort the field, then a knockout to crown a winner — the World Cup format.
Chess scoring
Half-points, Swiss pairing and Sonneborn-Berger tiebreaks built in.

Activities & scoring

Football
Goals for, against, difference — GF / GA / GD columns.
Robotics
Points for, against, difference — PF / PA / PD columns, typically larger totals.
Chess
Wins, draws, losses, points — goal columns disappear automatically.
Other activities
Any activity that fits a league, knockout, group or Swiss structure works — the scoring adapts.

Sharing & embedding

Publish a public page
From the competition workspace, toggle visibility to Public and click Publish.
Share on WhatsApp
On any public competition page, scroll to Share → Share on WhatsApp — opens WhatsApp with the link pre-filled.
Download a share image
Share → Download share image — branded 1200×630 PNG for Instagram posts.
Download an Instagram Story image
Share → Download Instagram Story — 1080×1920 PNG.
Embed on your website
Share → Embed on your website → copy the iframe code → paste into any website's HTML editor.
Public API
Developers can pull live standings and event data from /api/v0/events. See API docs →

Inviting people & joining

Create an invite
Settings → People & invites → Create invite link → a 20-character code is generated, valid for 14 days.
Share by link
The full link auto-opens the join flow after sign-in.
Share by code
Recipients go to the welcome screen → Join an existing organization → enter the code.
Joining
The recipient signs in → accepts → lands on the dashboard with your organization.

Language & accessibility

Arabic & English
Toggle EN|ع in any page header to switch. All pages — including public competition pages — work fully in Arabic with right-to-left layout.
No login for fans
Public competition pages are viewable by anyone with the link — no account needed.

Account & organization

Sign in options
Google or email magic link.
Organization settings
Settings → Organization (name, visibility).
Programs
Settings → Programs — add activity programs your leagues can use.

Club profiles

Club profiles
Every club has a public profile page at /clubs/[id]. It shows the club name and colors, a short bio (editable by organizers), the club's current standings in each division they compete in, upcoming fixtures, recent results with scores, and the squad list. Club names throughout the platform — in standings tables and fixture lists — link to their profile. To add a bio: go to the division workspace, find the club in the roster list, and click the bio edit disclosure.

Scorekeeper access

Scorekeeper access
Create a scoped access link that lets a designated person submit match results for a division without a full organizer account. Go to the division workspace, open the Scorekeepers panel, and click Create scorekeeper link. Set a label, choose whether submissions require your approval, and set an expiry. Copy the generated link and share it. The scorekeeper sees only the matches in their division. Results submitted directly go live immediately and trigger a standings recompute. Results submitted in approval mode appear in the Pending approvals queue for you to review first.

Announcements

Announcements
Publish a broadcast to your league, a specific division, or a specific club. Go to your league admin page and use the Announcement composer. Set a title (up to 120 characters), write the body (up to 1,000 characters), choose the target audience, and publish. The announcement appears on the public league page and in the notification bell for all org members. Optionally send it as an email to all org members by toggling Send email.

Notifications

Notifications
The bell icon in the admin header shows unread notifications. You receive a notification when: an organizer publishes an announcement, a match result is confirmed, a scorekeeper submits a result that needs your approval, or a match reminder fires 24 hours before a scheduled fixture. Click the bell to see recent notifications. Click Mark all read or click an individual notification to clear it.

Activity feed

Activity feed
The public league page shows a chronological feed of league activity. Result cards show both clubs, their colors, the score, the matchday, and the division. Club names link to their profile pages. Use the share button on any result card to copy a direct link. When standings change after a result, a movement indicator appears in the feed. Announcements also appear in the feed as broadcast cards. The feed updates within 60 seconds of new activity.

Reactions and comments

Reactions and comments
Go to your league admin page, find the Community settings card, and toggle Reactions or Comments on. Reactions are always open — anyone can react to a result card with 🔥 👏 😮 💪 🎉 by entering a display name. Comments default to pre-moderation: submitted comments appear in your Pending comments queue and only go public once you approve them. Toggle off pre-moderation if you want comments to go live immediately. Turn off reactions or comments entirely at any time — existing reactions and approved comments remain visible.

Team registration

How does team registration work?
Enable registration on any season from the admin panel (Leagues → season → Registration card). Set an optional deadline, max team capacity, and a welcome message. Share the registration link — teams fill in a short form with no account required. Review applications in the Pending tab: approve a team into a division (a club is created automatically) or reject with one click. Confirmation and rejection emails are sent automatically.