v1.025 Oct 2026
tableport.ggLeagues: a season for your game, run by the players
A league is a standing home for one game. It runs season after season, any community can host one, and a season is played in drop-in league nights: show up, play a game or three, and every game counts toward the standings. No appointed judge, no clocks, no fixed roster.
- a game, arrive and leave when you like
- 60–90 min
- the table confirms its own result
- No judge
- scores, at any café in the league
- Every game
Why this, now
Everything we built so far needed other people to already be there: a table needs players nearby, a community needs members, a seek needs someone to answer it. With few users there was little reason to post anything, and with little posted there was little reason to come back. That loop ran against us.
So the roadmap for this season is two bets that pay off for the first person who uses them, with nobody else on the site yet:
-
Post once, and every other channel follows. For the people who already run things — community hosts, café staff, club organizers — tableport should be the easiest place to keep what is happening up to date, and never "one more channel to maintain". Plan an event here and it is posted to your Telegram, your Discord, your calendar and your website, with a ready-made image for Instagram and Facebook. That is useful to one organizer on day one, and every event they post is content that was not on the site before.
-
Content that exists nowhere else. A drop-in league — nights you can walk into, a season that counts every game, a rating that follows you — is something no café can run on a spreadsheet and no other site offers. The first one is a Catan league in Helsinki. If it works for one café it is the same software for the next, for any game, and the league's standings and history are a reason to come back that does not depend on who else is online tonight.
The rest of this page is what those two bets need.
What a league is
A league is an activity with its own page: the season now running, its standings, past seasons and their champions, the nights coming up at every café that has joined, and the communities admitted to it. Any community can create a league for a game it cares about. Other communities ask to join once; after that every league night they plan counts toward whichever season is running — no re-applying each season.
A season is a run of league nights with a start, an end, a scoring table, and a final for the top of the standings. Each season keeps its standings and champion on the league page for good.
- Next League pages, seasons minted from the league, communities joining the league once.
- Exists today Seasons that count other hosts' tournaments, with standings and a designated final.
Catan League
League · hosted by tableport.gg
Current season
Season 3
Week 5 / 938 players · next night Tue at Halfmoon
Cafés
2 communities admitted · Halfmoon, …
Past seasons
Season 2
Champion Noora V. · 41 players
Season 1
Champion Mikko L. · 27 players
IllustrationNext
Catan League
League · hosted by tableport.gg
Current season
Season 3
Week 5 / 938 players · next night Tue at Halfmoon
Cafés
2 communities admitted · Halfmoon, …
Past seasons
Season 2
Champion Noora V. · 41 players
Season 1
Champion Mikko L. · 27 players
IllustrationNext
A league night
A league night is a tournament that runs itself. The host opens it and closes it; the players and the app do the rest.
Scan to check in. The host's screen shows a code that changes every minute. Scan it with your camera when you walk in and you are in the pool; a registered player who never arrives holds nobody up. After a game, one tap puts you back in the pool, or says you are done for tonight.
League night · check-in
482 019
changes in 37 s
Scan with your camera, or type the code
ready 3 · playing 8 · went home 2
IllustrationNext
A table offer on your phone. When four people are ready, the app offers them a table. Each one accepts or declines; a decline sends the others back to the pool. The app avoids seating people who already played together tonight.
League night
Halfmoon Game Café · you are ready
Your table is ready
Catan · table 3 · you, Sara, Aino and Mikko
Table offer
Four players are ready. Accept or decline.
Seat order is drawn once all four accept.
IllustrationNext
The board is ready before you sit down. The table's card carries a link to a balanced board layout for this game — no 6 next to an 8, no two of the same number touching. Lay the hexes to match and start in a minute instead of ten.
Everyone has an account. A league night has no guest seats: every seat is a player with a rating and a result, which is what lets the table confirm its own result and every game count.
Report the result yourselves. One player enters the placements; the result stands when most of the table has confirmed it, or when nobody objects within half an hour. The table can still fix a mistake until the night closes, and Call the host is one tap for anything the table cannot settle.
Every night has a podium. When the host closes the night, its page names the night's top three from the games played, so a night is something you can win on its own — and something the host can post.
- Next Presence and the night code, table offers, board link, result confirmation, Call the host, the host's live board.
Table 3 · Catan
League night · game 2 of 3
Board layout
Placements
- 1Sara H.10 VP6
- 2You8 VP3
- 3Aino K.7 VP2
- 4Mikko L.5 VP1
IllustrationNext
League night · check-in
482 019
changes in 37 s
Scan with your camera, or type the code
ready 3 · playing 8 · went home 2
IllustrationNext
How a season scores
Every game scores. A win is worth 6 points, second 3, third 2, and last place still gets 1 — a bad game never wastes the evening. Points for a place are worth a little more at a strong table and a little less at a weak one: the app keeps a league rating for every player, and if the three people you sat with average 100 rating points above a newcomer, your place points are worth 25% more (never more than +50%, never less than 80%). Beating the regulars counts for more than beating first-timers.
The rating itself is the familiar one from chess, applied to each opponent at your table: at an equal table the winner gains 30, second 10, third loses 10 and last loses 30 — more when the result was unexpected. It is yours for the game, across every season and every league you play in; the season page shows the rating you reached and how much it moved this season.
Every game counts, up to three a night. The season standings are the sum of every league game you played; a fourth game on a night is just a game. So the standings reward showing up as well as placing, the rating tells you how well you play, and the final decides the champion.
Ties in the standings break by points, then wins, then games counted, then who got there first. The exact tables are the season's own and a league may adjust them for its next season.
- Next Per-game results, table strength, season and profile rating.
Catan League · Season 3
Standings · week 5 of 9
| # | Player | Games | Rating | Pts |
|---|---|---|---|---|
| 1 | Aino K. | 12 | 1612 +84 | 31.5 |
| 2 | Mikko L. | 11 | 1574 +41 | 27 |
| 3 | Sara H. | 9 | 1548 +19 | 24.5 |
| 4 | You | 7 | 1496 +8 | 19 |
| 5 | Eero S. | 8 | 1472 -12 | 16.5 |
| 6 | Liisa P. | 5 | 1430 +15 | 11 |
| 7 | Noora V. | 6 | 1408 -4 | 8.5 |
Every game scores 6 / 3 / 2 / 1 by place, worth more at a strong table. Up to three games a night count.
IllustrationNext
Catan League · Season 3
Standings · week 5 of 9
| # | Player | Games | Rating | Pts |
|---|---|---|---|---|
| 1 | Aino K. | 12 | 1612 +84 | 31.5 |
| 2 | Mikko L. | 11 | 1574 +41 | 27 |
| 3 | Sara H. | 9 | 1548 +19 | 24.5 |
| 4 | You | 7 | 1496 +8 | 19 |
| 5 | Eero S. | 8 | 1472 -12 | 16.5 |
| 6 | Liisa P. | 5 | 1430 +15 | 11 |
| 7 | Noora V. | 6 | 1408 -4 | 8.5 |
Every game scores 6 / 3 / 2 / 1 by place, worth more at a strong table. Up to three games a night count.
IllustrationNext
The final
When a season's qualification closes, the top 16 eligible players are invited to the final. Eligible means at least six counted games (two nights or so); the host sets the number. Every invitation has a date to confirm by; a seat that is declined or left unanswered passes to the next player in the standings, so the final is played by the people who earned it and showed up. On the day, any seat still empty goes to the reserve players present at the venue, in standings order.
The final is a proper tournament: four preliminary tables, three games, one final table — under the official rules of the game if the league wants.
- Exists today Qualification close, the top of the standings as qualifiers, a final whose door reads the qualifier list.
- Next Minimum games, invitations with a confirm-by, the reserve.
Your stats
The season page shows every player's rank, points, games, wins, average place and rating; your profile shows your rating, games, wins and best finishes per game, across every league you have played in. Everything is computed from the games that were actually played and confirmed.
- Next Standings detail and profile stats.
- Later Leaderboards by city and country, based on where you played.
Rooms that end when the season does
A league has an announcement channel in its community. Each season has its own chat for the people who actually played a night in it, and each night has its own. When a night or a season is over, its room leaves your chat list but stays readable from the page, so your list is only the rooms that are alive.
- Exists today Night chats, archived after the night.
- Next Season chats.
For organizers: post it once
Organizers post the same event to Telegram, Discord, Instagram and WhatsApp by hand every week. Connect a Discord channel or a Telegram group to your community once, choose which moments to announce — when an event goes up, the day before, when a night starts, when results are in — and every table, event, tournament and league night you plan is posted there with the same card people already see when a link is shared. For Instagram, Facebook and WhatsApp status, every activity gets a one-tap post and story image plus a caption with the link, ready to paste. A calendar feed covers everyone's calendars.
- Next Post and story images with captions; Discord and Telegram connectors; calendar feed.
- Later Generic webhooks; results and standings cards.
Broadcast
Community settings
Audiences
- Discord #eventsConnected
- Telegram · Catan HelsinkiConnected
Triggers
- New activity
- Day-before reminder
- Night started
- Results
- Series mint
Share kit
Post 1080×1080 · Story 1080×1920 · Copy caption
IllustrationNext
Broadcast
Community settings
Audiences
- Discord #eventsConnected
- Telegram · Catan HelsinkiConnected
Triggers
- New activity
- Day-before reminder
- Night started
- Results
- Series mint
Share kit
Post 1080×1080 · Story 1080×1920 · Copy caption
IllustrationNext
For venues: your website, our register
Your site lists the events; tableport holds the registrations, cancellations, waitlist and results, so one place always has the whole picture. Paste one snippet into your event page and it shows the live count and a sign-up button; paste another and your upcoming events list stays current without editing. A public example store shows every embed and how it looks.
- Exists today Link cards and event metadata for every public activity.
- Next Embeddable event card and upcoming-events list; the example store.
- Later Public calendar and JSON feeds for a venue's events.
Where this stands
The first league is a Catan league in Helsinki, piloted with a game café this winter: a few trial nights as Season 0, then a first full season on weekday evenings. Everything above marked [next] is being built for that season, in the order a night needs it: check-in and offers, then results and scoring, then the final.
Tell us what is missing: hello@tableport.gg.