Skip to content

Leagues, seasons, and promotion

A cup is one tournament. A league is several, year after year: four divisions this season, four again next season, and teams moving between them. TAP models that with four things, and the difference between them is the whole idea:

Term What it is Does it end?
League Who runs it. People and their roles live here. never
Competition What is played out, across years — “Premier Division”, “Cup”, “Women’s”. never
Season One run through it: “2026/27”. Holds this year’s divisions and the rules they inherit. every year
Division One class in one year: “1. Liga 2026/27”. A full tournament — own table, own fixtures, own public page. every year

A role belongs to the league, otherwise you would hand it out again every year. A points formula belongs to the season, otherwise you could not change a rule without rewriting the past.

Next to “New tournament” on the tournaments page there is “New league”. The wizard asks three things:

  1. the name of the league and its first season,
  2. once how it is played — discipline, online or on site, teams or singles,
  3. how many divisions there are and what they are called.

The order of the divisions is their rank: the first is the top class, and promotion and relegation later refer to exactly that. Everything is created in one step; what will be created is listed before you click.

Each division is a complete tournament. Everything you know from a single tournament — stages, rules, fixtures, the public page — works there unchanged.

The tournament name in the dashboard header becomes a menu: every class of this season in order, each with the number of things waiting for a decision, plus a way to the league page.

The league page has a tab “Needs you”, grouped by division — because that is how you work: open one, decide what is there, move on. It counts expired date windows, missed check-in deadlines, reported results and join requests. An open or proposed date is deliberately not counted: that is the teams’ job.

On the league page, the “Rules” tab sets four things once for the whole season, and every division follows them:

  • the points formula — it has to be the same everywhere, otherwise promotion compares tables that were counted differently;
  • the check-in window;
  • the match-window template (“Wednesday 20:00, one week”);
  • the map pool.

Change the formula and the tables of the affected divisions are recalculated immediately; the message says how many.

A division may deviate, on its own rules page. It says where a value comes from — “Inherited from the season 2026/27” with “Just this division”, or “This division deviates from the season” with “Back to the season’s rule”. The Rules tab lists which division deviates in what.

Not inherited: the match days themselves (they carry dates — the second division plays on other weekends), the per-stage rules, and everything about registration, capacity, fields and visibility.

Promotion, relegation, staying up, filling a relegation play-off and reading its result are the same thing in TAP: an edge.

Places X–Y of one tournament’s table go into another tournament.

You add them on the league page under “Season change”, at the division that is being filled — “how did this division get its teams” is one question and one place to look.

What kind of edge it is follows from the two ranks; you never pick it. From the 2nd into the 1st division is a promotion, the other way a relegation, within the same rank a “stays”. That way no arrow can claim the opposite of what it does.

A relegation play-off or a qualifier needs no new concept: create a division in the season without a rank. Fill it with edges out of the divisions, and read its result back with edges into them.

TAP computes the proposal when you look at it and puts it in front of you:

  • Waiting — the source stage is still being played. The edge says what it is waiting for: “Upper 26 is still playing — 7 of 10 matches in League are done.” Nobody is promoted from a table that can still change.
  • Ready — the table is final. Every place shows who stands there, and you take them over (or decline — a declined place is a decision, not an omission). Before you click, it says which entries will be created.
  • Out of date — a result was corrected after a place was applied, so somebody else stands there now. TAP does not quietly fix this: it shows both names. “Undo” takes the decision back and the place is open again; what was already created in the target stays until you remove it there.

What comes over is the team, not its line-up — that is set per tournament. If somebody would end up playing for two sides of the same tournament, the entry is refused by name, with “take over anyway” as a named way out.

At every season on the league page there is “Next season”. It copies the shape, not the year: all divisions with their names, ranks and rules, plus the season’s own settings. No matches, no entries, no match days — and the new divisions are not public until you release them.

The edges move one season on: what read from 25/26 in the 26/27 season reads from 26/27 in 27/28. Without that, the new season would draw its promotions from the year before last. An edge that cannot be mapped is listed, not silently dropped.

A season can have exactly one successor — otherwise promotion would not know where to go.

A league can have a public overview at /l/<league>; you switch it on on the league page.

The overview shows, per class, the top and the bottom of the table and links to the division for the rest — the full table lives in one place, not two. The section that no single division can show is “This week”: the next fixtures across all classes, grouped by day and filterable by division. What is being played right now comes first.

On every public tournament page there is now a crumb back to the league: Tap | Bundesliga › 1. Liga. It only appears when the league page actually exists.

  • No automatic promotion. The proposal card is the feature; a scheduler that moves teams while you sleep is not.
  • No global public directory of leagues. You reach a league through the address its operator hands out.
  • No shared player between divisions in the same tournament. Across tournaments it is fine — the same person may play for your first team in the 1st division and your second team in the 3rd.