glanzlicht / Meinweimar_Tourguide

Intelligenter Tourguide für Weimar

Verified secure showcase
167 Files 833 KB Public size 12 Redacted Dart · Markdown · YAML · HTML · JSON · GITIGNORE

Project overview

Meinweimar_Tourguide is a verified code showcase with 167 visible project entries across 5 top-level modules. The primary detected language is Dart; protected files remain visible in the structure while their contents stay private.

README

MeinWeimar Tourguide

MeinWeimar Tourguide

Eine produktionsnahe Flutter-App fuer Stadtentdeckung, Tourplanung und Sprachlernen in Weimar. Die App verbindet eine responsive mobile und webfaehige Oberflaeche mit einer WordPress-REST-API und macht aus redaktionellen Inhalten konkrete Wege, Orte und Empfehlungen.

Dieses Repository zeigt neben der UI auch die technische Produktarbeit dahinter: API-Integration, Offline-tolerante Datenhaltung, Lokalisierung, Routing, Audio/TTS, Analytics, Deep Links und automatisierte Qualitaetssicherung.

App-Eindruecke

Start · Entdecken · Touren · Karte · Mehr

Produktumfang

  • Entdecken: POIs, Touren, Veranstaltungen, Partner und Themen mit Suche,
  • Filtern und fehlertoleranter Trefferlogik.

  • Unterwegs: Kartenansicht, Standort, Fussgaenger-Routing, Tourfortschritt,
  • Favoriten und eine persoenliche Route aus der eigenen Weimar-Liste.

  • Mehrsprachigkeit: UI und CMS-Inhalte in Deutsch, Englisch,
  • Niederlaendisch, Franzoesisch, Polnisch, Italienisch, Spanisch und Tschechisch.

  • Audio und Lernen: Guide-Audio, Flutter TTS sowie SprachGuide-Kurse und
  • Lern-Touren.

  • Redaktion und Betrieb: WordPress REST API, Oeffnungszeiten mit
  • Zeitzonenlogik, Kampagnen, Partnerplatzierungen, Deep Links und First-Party- Analytics.

  • Responsive UX: kleine Displays, grosse Systemschrift, dynamische
  • Kartenhoehen und versionierte Web-Releases ohne veraltete Service-Worker- Assets.

Technischer Steckbrief

BereichUmsetzung
FrameworkFlutter / Dart 3.4+
PlattformeniOS, Android und Web
DatenWordPress REST API, typisierte Models und Repositories
Kartenflutter_map, latlong2, Standort und Fussgaenger-Routing
Audiojust_audio, flutter_tts
Lokaler ZustandShared Preferences, begrenztes Caching und Analytics-Puffer
QualitaetFlutter Analyzer, Widget- und Service-Tests, Lokalisierungs- und API-Modelltests

Die Codebasis ist nach Verantwortlichkeiten gegliedert:

lib/
	core/          gemeinsame API-, Lokalisierungs- und Navigationslogik
	data/          Datenzugriff und DTO-nahe Strukturen
	features/      produktbezogene Screens und Flows
	models/        fachliche Modelle
	repositories/  Datenzugriff hinter stabilen Schnittstellen
	services/      Routing, Audio, Analytics und Plattformdienste
	widgets/       wiederverwendbare UI-Bausteine
test/            fokussierte Tests fuer Services, Modelle und Widgets

Lokal starten

Voraussetzungen: aktuelles Flutter SDK und das darin enthaltene Dart SDK.

flutter pub get
flutter analyze
flutter test
flutter run -d chrome

Die Anwendung verwendet standardmaessig die oeffentliche API: https://tour.meinweimar.de/wp-json/meinweimar/v1

Web-Release

Fuer einen Web-Release das versionierte Build-Skript verwenden:

./tool/build_web_release.sh

Das Skript legt den Runtime-Build unter build/web/releases/<release-id>/ ab. Launcher und Versionsendpunkt bleiben bewusst nicht cachebar, damit Browser nach einem Reload die aktuelle Version auflosen. Startup-Diagnostik ist nur mit ?mwdebug=1 aktiv.

Dokumentation

  • [Deep Links](DEEP_LINKS.md) - Web-Routen fuer Bereiche, Touren und POIs
  • [Projektstatus](PROJECT_STATE.md) - aktueller Funktions- und Integrationsstand
  • [Changelog](CHANGELOG.md) - nachvollziehbare Produkt- und UX-Iterationen
  • [API-Integration](docs/API_INTEGRATION.md) - technische Integrationsnotizen
CHANGELOG.mdMarkdown
## 0.19.18+208
- Zeigt „Deutsch lernen“ und „Neu in Weimar“ auf regulären iPhones wieder nebeneinander.
- Leitet den Umbruch aus der tatsächlich verfügbaren Inhaltsbreite ab.
- Nutzt bei sehr schmalen Ansichten oder großer Systemschrift weiterhin einen barrierearmen, vollbreiten Stapel.
## 0.19.17+207
- Behebt den Bottom-Overflow der hervorgehobenen Tourkarten auf der Startseite.
- Skaliert die Kartenhöhe robust mit der eingestellten Textgröße.
- Meldet im WordPress-Analytics wieder die tatsächliche App-Version und Buildnummer.
## 0.19.16+206
- Sichtbare UI-Texte auf Startseite, Onboarding, Tourkarten, Tourführung, Tourabschluss, Favoriten, Karte, POIs und Entdecken für alle acht App-Sprachen zentralisiert.
- Tageszeitabhängige Begrüßung und Empfehlungen auf der Startseite vollständig lokalisiert.
- Entdecken entfernt den bisherigen reinen Deutsch/Englisch-Sonderweg.
- Rohe Tour-Kategorien werden vor der Anzeige lokalisiert; technische Lernfehler werden nicht mehr direkt ausgegeben.
- Onboarding und Startseiten-Karten reagieren robuster auf kleine Displays, lange Übersetzungen und große Systemschrift.
- Kleine Tour-Bildkennzeichnung besser lesbar gemacht.
- Neuer automatischer Vollständigkeitstest für die konsolidierten Übersetzungen.
- Flutter-Analyse ohne Befund; vollständige Testsuite mit 34 bestandenen Tests.
## 0.19.15+205
- Tourenbilder unter „Entdecken → Touren“ verwenden nun ebenfalls die einheitliche Titel- und „— TOUR —“-Beschriftung.
- Die kompakte Darstellung bleibt auf die kleinen Listenvorschaubilder abgestimmt.
- Flutter-Analyse ohne Befund; vollständige Testsuite mit 26 bestandenen Tests.
## 0.19.14+204
- Tourenplaner behandelt kleine gefilterte POI-Mengen ohne ungültigen Clamp-Bereich.
- Interessen werden robust über IDs und menschenlesbare Taxonomie-Aliase erkannt.
- Familienfreundliche Demo-POIs halten den lokalen Planer-Testbestand konsistent.
- Flutter-Analyse ohne Befund; vollständige Testsuite mit 26 bestandenen Tests.
## 0.19.6
- Event-Abruf robuster: Fallback ohne Sprachfilter, flexible Datumsfelder und keine still verschwindenden Events.
- Entdecken-Inhaltsfilter wieder dauerhaft sichtbar: Orte, Touren, Events, Partner/Gastro und Themen.
## 0.19.5
- Event-Datenbindung korrigiert; keine Now-Fallbacks, vollständige Detaildaten und All-Day/Mehrtag-Darstellung.
## 0.19.2+192
- Tour featured images are now language-neutral artwork with localized Flutter text overlays.
- Tour title is centered horizontally and vertically on card/detail featured images.
- Add a consistent pink “— TOUR —” kicker below the title.
- Remove the old category pill/icon treatment from tour card artwork.
## 0.19.1+191
- Fix remaining Flutter analyzer lint warnings in Discover search scoring and map filter spreads.
# Changelog
## 0.19.0+190
- Product-wide UX pass: contextual “Was passt jetzt?” recommendations on Start.
- POI details now prioritize visit status, accessibility/family/free/audio traits and related places.
- Active tours show clearer progress and end on a dedicated completion/next-tour screen.
- Favorites can seed a personal route in the route planner (“Meine Weimar-Liste”).
- Map can switch between POIs and Nearby partners with distinct markers and detail cards.
- Discover search tolerates common typos via lightweight fuzzy matching.
- Tour cards expose family/offline/stop-count traits for faster comparison.
- First-run onboarding reduced to three focused product benefits.
- Favorite interactions now animate for clearer feedback.
- Existing POI image captions remain limited to full POI views and active-tour stops.
## 0.17.2+88
- Nearby native sponsor creative now renders image, label, headline, body and configured CTA.
- Nearby ads can be placed before the first organic result (position 0).
# Changelog
## 0.17.0+85
- Add modular sponsor packages with Splash, tour banners, app banners, side-menu and Nearby placements.
- Add generic sponsor-location networks (branches, ATMs, self-service points) from WordPress.
- Add sponsor location map, opening-hours status, route preview and native navigation handoff.
- Extend sponsor analytics with location-network events.
## 0.16.8+84
- Intelligente Öffnungszeiten-Auswertung für POIs und Partner mit Weimar-Zeit (CET/CEST).
- Status-Badges: geöffnet, geschlossen, schließt demnächst, öffnet demnächst und jederzeit zugänglich.
- Öffnungszeiten werden als Heute/Morgen plus aufklappbare Wochenübersicht direkt über der Adresse dargestellt.
- Toleranter Parser für unterschiedliche WordPress-Freitextformate; unsichere Angaben erzeugen bewusst keinen falschen Status.
- Test-/Platzhalter-Öffnungszeiten werden nicht mehr als echte Besucherinformation angezeigt.
- TTS der aktuell geöffneten POI-, Guide- oder Lerneinheit wird beim Seitenaufruf im Hintergrund vorgewärmt; keine nächste Seite wird vorgeladen.
## 0.16.7+83 — Quality pass
- Curated, localized topic taxonomy shared by Discover, Planner, Map and Tour filters.
- Planner relevance now prioritizes curated topic/era metadata over title matches.
- Planner scrolls to the generated result automatically.
- Thin one-/two-stop results explain the limitation and can increase the time budget.
- Planner shows an approximate travel/on-site time breakdown.
- POI detail adds route-to-place, website and wheelchair-accessibility actions when available.
- Audio failures now surface a user-facing message instead of failing silently.
- App version in Settings is read from package metadata instead of a stale UI string.
- Web manifest now contains app icons; theme/description/Open Graph metadata were improved.
- Missing category artwork uses a neutral category treatment rather than the repeated brand hero.
## 0.16.6+82
- Decode WordPress HTML entities and basic HTML consistently across app content and URLs.
## 0.16.5+81
- Use an always-current web launcher with versioned release assets.
## 0.16.4+80
- Restrict startup diagnostics to explicit debug mode and add production recovery handling.
## 0.16.3+79
- Bound browser storage usage and make cache/analytics persistence failures non-fatal.
## 0.16.1+77
- Load privacy and imprint content from WordPress.
## 0.16.0+76
- Add first-party product and campaign analytics.
## 0.15.2+74
- Make the full premium campaign creative tappable.
## 0.15.1
- Add responsive Lottie creative variants.
## 0.15.0
- Add premium Lottie/image campaigns and campaign target routing.
## 0.14.9
- Add web deep links for sections, tours and POIs.
## 0.14.6
- Add SprachGuide learning tours.
## 0.14.4
- Simplify bottom navigation and enable app-wide momentum scrolling.
## 0.14.3
- Integrate multilingual SprachGuide course/unit API and TTS metadata.

Architecture

High-level modules detected from the verified public snapshot. Protected implementation details are intentionally omitted.

libmodule
testmodule
docsmodule
webmodule
toolmodule

Technology stack

DartMarkdownLOCKHTMLShellHTACCESSFlutter / Dart
Dart89.9%
Markdown3.9%
LOCK3.1%
HTML1.7%
Shell0.8%
HTACCESS0.2%
YAML0.1%
METADATA0.1%