Aachen Basketball

Aachen Got Game — und das muss gezeigt werden. Auf dieser Webseite findest du alle nötigen Infos zu Basketball in Aachen – Vereine, deren Teams, die entsprechenden Standings und sogar die Kreisliga Playoffs im Bracketstyle. Filter nach Gebiet (Stadtteil/Umland), Geschlecht, Liga und Verein. Alles wird für Anfänger erklärt!

Andreas Dymek

Andreas Dymek

Software-Entwickler in Aachen. Die Idee entstand, weil ich die Kreisliga-Playoffs für mich selbst erst richtig durchblicken wollte — mit einer visuellen, an NBA-Brackets angelehnten Darstellung. Daraus wurde nach und nach Karte, Tabellen und der Rest der Seite; im Kern geht es mir darum, Basketball in und um Aachen greifbar und nachvollziehbar zu machen.

Status

Verbinde mit Backend…

Herren

  • 1. Regionalliga Herren
  • Landesliga 01 Herren
  • Bezirksliga 01 Herren
  • Kreisliga Herren A & B

Damen

  • Regionalliga Damen
  • Oberliga 1 Damen
  • Landesliga 2 Damen
  • Bezirksliga 1 Damen (Vorrunde Gr. A)

Jugend-Ligen (U18–U12) sind in der Konfiguration vorbereitet, aber noch nicht aktiv.

So funktioniert’s

Der Datenfluss vom Verband bis in den Browser — inklusive, wie das Scraping im Backend läuft.

🏀

basketball-bund.net

Offizielle Tabellen auf basketball-bund.net (DBB-Portal; Auswertung im Parser wie in der Bibliothek vorgesehen, typischerweise Druck-/Listenansicht pro Liga-ID).
🔍

dbb-ranking-parser

Open Source auf GitHub: ruft pro liga_id die Tabellendaten von basketball-bund.net ab und liefert strukturierte Zeilen (Rang, Teams, Statistik) — Details zum genauen Seitenaufbau siehe Repository.
🚀

FastAPI Backend

  • Zwei Phasen: zuerst Kreisliga Aachen — alle dort neu gefundenen Vereine werden als Aachener (is_aachen) markiert. Danach höhere Ligen: die kompletten Tabellen werden importiert; neu entdeckte Vereine außerhalb der Kreisliga sind zunächst nicht als Aachener geflaggt.
  • Teamnamen wie „BG Aachen 5“ werden dem Basisverein zugeordnet (ein Verein, viele Mannschaften).
  • Scheduler (Standard 6 h, siehe AGG_SCRAPE_INTERVAL_HOURS). Tabellen in rankings; zusätzlich Action=103-Ergebnisse für Kreisliga A/B und die Playoff-Liga in playoff_games sowie der gedruckte Spielplan nur für die Playoff-Liga. Die Playoff-Webseite liest vor allem die Playoff-Liga aus dieser Tabelle und die Seeds aus rankings. HTTP-GET-APIs fürs Frontend.
🗄️

SQLite Datenbank

Datei data.db: Vereine, Ligen, Tabellenzeilen in rankings (Mannschaften pro Liga als Zeilen) sowie Spieldaten in playoff_games.
🗺️

Next.js Frontend

Karte (react-leaflet), Tabellen, Playoffs — z. B. auf Vercel.

Technik & Datenquellen

Was im Projekt wirklich eingesetzt wird — gekoppelt an die jeweiligen Datenquellen.

Frontend & Sprachen

Stack: Next.js 16 (App Router), React 19, TypeScript, Tailwind CSS 4, react-leaflet 5 / Leaflet 1.9. Die Oberfläche ist über ein kleines i18n-Setup auf Deutsch und Englisch umschaltbar (Navbar).
Hosting: Statisches Frontend üblich auf Vercel; API-Aufrufe laufen gegen dein FastAPI-Backend (lokal oder eigener Host).

Karte, Bezirke & Koordinaten

Technik: react-leaflet lädt Kacheln von CARTO — im Code light_all bzw. dark_all (Hell-/Dunkelmodus), mit OSM-/CARTO-Attribution in der Karte.
Daten: Stadtteil-Polygone als GeoJSON in src/data/districts.ts (Koordinaten in WGS84, Longitude/Latitude wie üblich bei GeoJSON). Quelle: Open-Data-Portal der Stadt Aachen — genaue Lizenzangaben beim jeweiligen Datensatz auf offenedaten.aachen.de prüfen. Vereinskoordinaten stehen in der SQLite-DB (Seed); bei der Pflege u. a. mit Nominatim ermittelt und manuell geprüft — die Website ruft Nominatim zur Laufzeit nicht auf.

Backend, Scraping & API

Stack: FastAPI, Uvicorn, Python-Standard-sqlite3 auf eine data.db, APScheduler (Intervall konfigurierbar, Standard 6 h). Tabellenabruf über die Bibliothek dbb-ranking-parser von basketball-bund.net (Druckansicht).
Daten: DBB über basketball-bund.net; organisatorisch hängen NRW-Ligen u. a. am WBV. Zusätzlich zum Ranking-Scrape: Ergebnislisten (Action=103) für Kreisliga A/B und die Playoff-Liga sowie der gedruckte Spielplan nur für die Playoff-Liga. Struktur und Saisoninfos ergänzend vom Basketballkreis Aachen; konkrete liga_id-Werte stehen in backend/app/config.py.

Vereinslogos auf Karte & in Tabellen

Technik: Route /api/club-icon: zuerst passende Datei unter public/club-icons/, sonst Favicon der Vereinswebsite über den Google-s2-Dienst; wenn nichts passt, zeigt die UI farbige Initialen.
Daten: Logos/Favicons der Vereine bzw. manuell abgelegte PNGs im Repo.

Made with care in Aachen