# 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
<p align="center">
<img src="docs/screenshots/start.png" alt="Startseite" width="180">
<img src="docs/screenshots/entdecken.png" alt="Entdecken" width="180">
<img src="docs/screenshots/touren.png" alt="Touren" width="180">
<img src="docs/screenshots/karte.png" alt="Karte" width="180">
<img src="docs/screenshots/mehr.png" alt="Mehr-Menue" width="180">
</p>
<p align="center"><sub>Start · Entdecken · Touren · Karte · Mehr</sub></p>
## 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
| Bereich | Umsetzung |
| --- | --- |
| Framework | Flutter / Dart 3.4+ |
| Plattformen | iOS, Android und Web |
| Daten | WordPress REST API, typisierte Models und Repositories |
| Karten | `flutter_map`, `latlong2`, Standort und Fussgaenger-Routing |
| Audio | `just_audio`, `flutter_tts` |
| Lokaler Zustand | Shared Preferences, begrenztes Caching und Analytics-Puffer |
| Qualitaet | Flutter Analyzer, Widget- und Service-Tests, Lokalisierungs- und API-Modelltests |
Die Codebasis ist nach Verantwortlichkeiten gegliedert:
```text
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.
```bash
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:
```bash
./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

