P R O J E K T YK O N T A K T

[10]

CITY 3D — MAPA MIASTA

TIER B · ROK 2026 · STATUS: DZIAŁA · JĘZYKI: TYPESCRIPT / PYTHON

Mapa 3D Sopotu: eventy, heatmapa tłumu, questy, gamifikacja

[FIG. 1] MISJA

Full-stack mapa 3D Sopotu (React 18 + deck.gl / MapLibre GL na froncie, FastAPI + async SQLAlchemy + Postgres 16 + Redis na backendzie). Przełączane warstwy: eventy z Facebooka (Apify), heatmapa tłumu sterowana suwakiem godziny, popularne miejsca (Google Places), foto-hotspoty (Wikimedia) i questy miejskie. Pętla gamifikacji: check-in → hashtag → post na Instagramie → jednorazowy kod rabatowy. Autorski dwustronny system pluginów (moduł = katalog, zero centralnych rejestrów) i graceful degradation real→fallback→mock — aplikacja stawia się jednym `docker compose up` bez żadnych kluczy API.

[FIG. 2] ARCHITEKTURA

najedź na blok, by zobaczyć opis

[FIG. 2A] MIASTO O KAŻDEJ GODZINIE

18:00

DÓŁ = PLAŻA (SZCZYT 13:00) · ŚRODEK = CENTRUM (SZCZYT 20:00)

WARSTWY

GRACEFUL DEGRADATION — KLIKNIJ, BY ODCIĄĆ ŹRÓDŁO

→ /api/health: heatmapa: real · eventy: real · miejsca: realten sam kontrakt Pydantic w obu trybach

[FIG. 3] WYZWANIA

[+][CH-01]

Działać bez żadnych kluczy API — deterministyczny mock per moduł + łańcuch fallbacków, identyczny kontrakt Pydantic w trybie real i mock.

[+][CH-02]

Rozszerzalność bez centralnego rejestru — auto-loader modułów backendu i `import.meta.glob` na froncie; nowy moduł = nowy katalog.

[+][CH-03]

Fuzja wielu API geo (Apify/FB, Google, Outscraper, Wikimedia) w jeden model warstw deck.gl.

[FIG. 4] WARSTWA AI

Mapa 3D Sopotu: eventy, heatmapa tłumu, questy, gamifikacja

[FIG. 5] GALERIA

SCREENY W DRODZE — patrz SHOTS-WANTED

[FIG. 6] STACK & LINKI

REACT 18VITEDECK.GLMAPLIBRE GLFASTAPISQLALCHEMY (ASYNC)POSTGRESQL 16REDISDOCKER COMPOSEAPIFYGOOGLE PLACES