Everything you need to go from sign-up to a live public standings page — with annotated screenshots at every stage.
From zero to a working dashboard in under two minutes.
Want to see it working first? Browse live competitions at league.asabya.com/en/explore — no account needed. The Muscat Premier League shows exactly what a published page looks like.
Click Start free on the landing page, or go directly to league.asabya.com/en/sign-in. Sign in with Google, or enter your email to receive a one-click magic link — no password needed.
First-time sign-in takes you to a welcome screen. Choose Create an organization, give it a name, set visibility to Public or Private, and click Create & continue.
Public vs Private: Public means your org appears in Explore and competition pages are shareable with one link. Private means only your team can see it. You can change this any time in Settings.
Go to Settings → People & invites → Create invite link. A 20-character code is generated, valid for 14 days. Share the link — recipients are added as staff automatically after signing in.
Name it, pick a format, and the platform sets everything up automatically.
From your Dashboard, click Create your first competition. You'll land on the format picker. Give your competition a name — you can rename it later.
Click a format card to select it. If you're unsure, expand ▶ Not sure? Help me choose and answer two questions:
| Question | Answer | Recommendation |
|---|---|---|
| One-time event or ongoing season? | One day / one event | Knockout or Groups + knockout |
| One-time event or ongoing season? | A season over weeks | League or Swiss |
| Should every team get the same number of games? | Yes — fair & equal | League, Swiss, or Groups + knockout |
| Should every team get the same number of games? | No — win or go home | Knockout or Double elimination |
The platform picks a format and selects it for you. You can override it by clicking a different card.
For Groups + knockout, two extra fields appear: Number of groups and Qualifiers per group. Set these before clicking Create — e.g. 4 groups, top 2 qualify → 8-team bracket.
Before clicking Create, tick Add sample data so I can see it working. The platform fills your new division with example clubs, a generated schedule, and results so you can explore the full experience before entering real data. A banner lets you keep it or clear it at any time.
The division workspace guides you through four numbered steps automatically.
Type a club name in New club name and click Add & register. Repeat for each team. You need at least 2 clubs before generating a schedule.
Club numbers are seeds — they control bracket seeding and how fixture imports match team names. Auto-assigned 1, 2, 3… but you can override. Example: a fixture list with 1: 1v2, 3v4 means club #1 plays #2, club #3 plays #4.
Privacy: Club and team names become public when you publish. Never use a student's full name as a club or team name.
Click the 2 · Schedule tab. What you see depends on your format:
Import a pre-made schedule: Expand Add fixtures manually (advanced) and paste one matchday per line: 1: 1v2, 3v4. Numbers are club numbers, or use club names directly. Platform previews and validates before importing.
Type scores and standings update the moment you save.
Click 3 · Results. Each match shows Home and Away score fields. Enter the final score and click Save. Standings and the public page update immediately.
For Chess competitions, instead of scores you'll see three buttons per match: Home win, Draw, Away win. Half-point scoring is applied automatically.
Scroll to Scorekeepers in the division workspace and click Create scorekeeper link. Set a label, choose whether scores need approval before going live, and set an expiry. Share the link with a referee or volunteer — they enter results from any device with no account. In approval mode, submissions appear in Pending approvals for you to review first.
What each format is, when to use it, and what organizers do.
Every team plays every other team once. Standings rank by points (3 win, 1 draw, 0 loss). The fairest format — one bad match can't eliminate a team. One click generates the full schedule.
Like League but every pair plays twice — once at home, once away. Doubles match count. Rewards consistency across both legs.
Win or go home. Bracket seeded automatically from club numbers. Top seeds get byes when count isn't a power of two. Fast to run; one bad match ends a team's run.
Teams must lose twice to be out. Winners' and losers' brackets feed a grand final. If the winners' champion wins the final, it's over; if the losers' champion wins, a reset match is played.
Teams paired each round by current score — strong vs strong. No one is eliminated. Set number of rounds up front. Generate each round only after all results from the previous round are entered.
Teams play in small groups (mini round-robins), then top finishers advance to a single-elimination bracket. Cross-group seeding means group rivals can't meet until the final.
The most complex format, broken down step by step.
On the format picker, select Groups + knockout. Two extra fields appear: Number of groups and Qualifiers per group. The platform creates one division per group (Group A, Group B…) plus one Knockout division — you don't create them manually.
Open each group division and add the teams for that group. Each group is a separate mini round-robin. Distribute teams evenly across groups where possible.
Open each group division → click 2 · Schedule → click Generate schedule. A full round-robin is created for that group. Repeat for every group.
Enter scores in 3 · Results for each group as matches finish. Group standings update in real time on the public page. Continue until every match in every group is scored.
All group matches must be completed before seeding the knockout. The platform shows progress (e.g. "3 of 4 groups complete") and blocks Seed knockout until every group finishes.
Open the Knockout division and click Seed knockout. The platform takes the top N finishers from each group and seeds them cross-group — e.g. 1st Group A vs 2nd Group B. Teams from the same group cannot meet until the final. The bracket is generated immediately.
Need to correct a group result after seeding? Click Re-seed knockout in the Knockout division. This discards the bracket and unlocks the groups for editing. After correcting, seed the knockout again. A confirmation dialog shows how many results would be lost.
Enter results for each knockout match. Winners advance automatically. When the final is scored, the Champion banner appears on the public page.
Standings columns and result entry adapt automatically to your activity.
Standings columns: P W D L GF GA GD Pts. Enter numeric home and away scores. 3 pts for a win, 1 for a draw, 0 for a loss. Goal difference breaks ties.
Standings columns: P W D L PF PA PD Pts. Identical to football but labeled PF/PA/PD — useful when match scores run into the hundreds. Same win/draw/loss point system.
For/against columns disappear entirely. Standings show: P W D L Pts. Each match has three buttons: Home win, Draw, Away win. Wins = 1 pt, draws = ½ pt. Buchholz and Sonneborn–Berger tiebreaks computed automatically.
Set the type on the league settings page: open the league → scroll to Competition type → select Chess → Change type.
Announcements, team registration, reactions, promotion rules, and more.
From the league admin page, use the Announcement composer. Target the whole league, a specific division, or a club. Up to 120-character title, 1,000-character body. Appears on the public page and in the notification bell. Toggle Also send by email to notify members by email too.
Enable from the season admin page. Set a deadline, max capacity, and welcome message. Share the registration link — teams submit a short form with no account needed. In the Pending tab, approve a team into a division (a club is created automatically) or reject. Confirmation emails go out automatically.
From the league admin page, find Community settings and toggle Reactions or Comments on. Reactions (🔥 👏 😮 💪 🎉) are open to anyone with a display name — no account. Comments default to pre-moderation: submissions appear in your Pending queue and go public only after you approve.
In the division workspace, expand Promotion / relegation rules (advanced). Set how many positions from the top are promoted and from the bottom relegated. This labels positions in the standings — it doesn't move clubs automatically.
The Adj column is a manual points adjustment — positive or negative — on top of computed points. Use it for walkovers, rules violations, or administrative decisions. Contact support@asabya.com to apply one.
Pull live standings, bracket data, and event info without authentication. Endpoints: /api/v0/events, /api/v0/events/[id]/standings, /api/v0/events/[id]/bracket. Responses cached 60s. CORS open. Full API docs →
Running a Groups + knockout robotics event from scratch in 8 steps.
Dashboard → Create your first competition → name it → select Groups + knockout → 4 groups, 2 qualifiers → Create competition.
Open the league → Competition type → Robotics → Change type. Standings will show PF / PA / PD instead of GF / GA / GD.
Open Group A → add 4 teams. Repeat for Groups B, C, D. 16 teams total.
In each group: 2 · Schedule → Generate schedule. 6 matches per group = 24 group-stage matches total.
Enter scores in 3 · Results as matches finish. Scores in robot points (e.g. 120–85). Standings and public page update in real time.
After all 24 group matches: open the Knockout division → Seed knockout. Top 2 from each group seeded cross-group into the bracket automatically.
Enter knockout results as matches finish. Quarter-finals → semi-finals → final. Champion banner appears when the final is scored.
Back to season → Publish card → confirm no student full names → Publish. Copy the link and share on WhatsApp, or download a share image for Instagram.