TannenTails ist eine moderne, interaktive mobile Anwendung, die Besucher durch den Walderlebnispfad in Goslar führt. Mit GPS-Navigation, interaktiven Karten und spannenden Rätseln wird der Waldspaziergang zu einem unvergesslichen Abenteuer.
- 🗺️ Interaktive Karte - Leaflet-basierte Karte mit GPS-Navigation
- 📍 Standort-basierte Stationen - Automatische Erkennung von Waldstationen
- 🧩 Interaktive Rätsel - Multiple Choice, True/False und Schätzfragen
- 🌟 Erfolgs-Animationen - Belohnungen mit goldenen Sternen-Explosionen
- 📱 Cross-Platform - Läuft auf Web, iOS und Android
- 🎨 Modernes Design - Glass Morphism und handschriftliche Effekte
- 🔔 Smart Notifications - Informative Benachrichtigungen
- ♿ Accessibility - Unterstützt Barrierefreiheit
- Ionic 8 - Cross-platform mobile framework
- Angular 20 - Modern web framework
- Standalone Components - Latest Angular pattern
- Leaflet - Interactive maps
- Capacitor Geolocation - GPS functionality
- Geolocation Utils - Distance calculations
- SCSS - Advanced styling
- CSS Animations - Custom animations and transitions
- Glass Morphism - Modern UI design trend
- Google Fonts (Kalam) - Handwritten typography
- TypeScript - Type-safe development
- ESLint - Code linting
- Karma & Jasmine - Testing framework
- GitHub Actions - CI/CD pipeline
TannenTails/
├── src/
│ ├── app/
│ │ ├── core/ # Core services and models
│ │ │ ├── models/ # Data models
│ │ │ │ ├── dataset.ts # Static trail data (stations, path, questions)
│ │ │ │ ├── station.model.ts
│ │ │ │ ├── badge.ts
│ │ │ │ └── questions.model.ts
│ │ │ └── services/ # Business logic services
│ │ │ ├── game-service.ts
│ │ │ ├── location-service.ts
│ │ │ ├── auth.service.ts
│ │ │ ├── badges.service.ts
│ │ │ └── notification.service.ts
│ │ ├── views/ # UI components and pages
│ │ │ ├── components/ # Reusable components
│ │ │ │ ├── animations/
│ │ │ │ │ └── stars/ # Star explosion animation
│ │ │ │ ├── notification/ # Notification system
│ │ │ │ ├── overview/ # Map overview
│ │ │ │ └── question-card/ # Interactive questions
│ │ │ └── pages/ # Application pages
│ │ │ ├── home/ # Onboarding and intro
│ │ │ └── station/ # Station details
│ │ └── app.component.ts # Root component with icon preloading
│ ├── assets/ # Static assets
│ │ ├── data/ # JSON data files
│ │ ├── icons/ # App icons
│ │ ├── logos/ # Logos and branding
│ │ ├── map/ # Map-related assets
│ │ └── stations/ # Station-specific content
│ └── theme/ # Global styling
├── .github/ # GitHub workflows and templates
│ ├── workflows/ # CI/CD pipelines
│ │ ├── pr-main.yml # Pull request workflow
│ │ └── create-labels.yml # Auto-label creation
│ └── PULL_REQUEST_TEMPLATE/ # PR templates
└── capacitor.config.ts # Capacitor configuration
- Node.js (v18 oder höher)
- npm oder yarn
- Ionic CLI (
npm install -g @ionic/cli) - Capacitor CLI (wird automatisch installiert)
git clone https://github.com/your-username/TannenTails.git
cd TannenTailsnpm installionic serveDie App ist nun unter http://localhost:8100 verfügbar.
ionic build --prodionic cap add android
ionic cap sync android
ionic cap open androidionic cap add ios
ionic cap sync ios
ionic cap open iosnpm testnpm run lint- Transparente Karten mit Backdrop-Filter
- Subtile Schatten und Glanzeffekte
- Moderne, luftige Optik
- Google Font "Kalam" für natürliche Handschrift
- Typewriter-Animationen (programmierbar steuerbar)
- Ink-Flow Effekte bei Texterscheinung
- Goldene Sterne-Explosionen bei richtigen Antworten
- GPU-beschleunigte Animationen
- Responsives Design für alle Bildschirmgrößen
- Interaktive Karten mit Zoom und Pan
- Custom Marker für Waldstationen
- GPX-Pfad Import und Anzeige
- Verschiedene Kartenprovider
- Native Geolocation API (Web)
- Capacitor Geolocation (Mobile)
- Standort-basierte Station Detection (25 m Radius)
- Intelligente Permissions-Verwaltung
- GPS Mock Mode —
LocationService.watchPosition(true)spielt die aufgezeichneten Pfad-Koordinaten ab (1 s Takt), um den Trail ohne physische Bewegung zu testen
- Drei Typen: Success, Warning, Error
- Animierte Ein-/Ausblendungen
- Auto-Hide Timer
- Custom Aktionen
- Automatische Benachrichtigung beim Erreichen einer Station
- Kontextuell relevante Informationen
- Respekt für Nutzer-Präferenzen
- Multiple Choice Fragen
- Externe Aufgaben (Foto posten, etc.)
- Sofortiges visuelles Feedback
- Besuchte Stationen merken
- Erfolgreiche Antworten speichern
- Gesamtfortschritt anzeigen
- Firebase Auth — E-Mail/Passwort sowie OIDC via Goslar-ID (
oidc.goslar_id) AuthServicewraps alle Auth-Operationen mit Fehlerbehandlung
users/{uid}/badges/ # Verdiente Badges des Nutzers
badgeTemplates/{badgeId}/ # Badge-Vorlagen (Titel, Bild, Text)
BadgeServicelädt Badges nach Login automatisch- Jede Station hat eine optionale
badgeId, die nach dem Lösen vergeben wird Badge.fromFirestore()verknüpft User-Badge-Daten mit dem Template
// src/environments/environment.ts
export const environment = {
production: false,
googleMapsApiKey: '...',
firebaseConfig: {
apiKey: '...',
authDomain: '...',
projectId: '...',
storageBucket: '...',
messagingSenderId: '...',
appId: '...',
databaseId: 'bridge',
},
};Do not commit real API keys. Replace values with your own Firebase project credentials.
// capacitor.config.ts
const config: CapacitorConfig = {
appId: 'com.tannentails.app',
appName: 'TannenTails',
webDir: 'dist',
plugins: {
Geolocation: {
permissions: ['location']
}
}
};- Pull Request Checks - Code quality, tests, builds
- Automatic Labeling - Smart PR categorization
- Bundle Size Analysis - Performance monitoring
- Security Audits - Dependency scanning
- ESLint validation
- TypeScript type checking
- Unit test coverage
- Build verification
- Lazy Loading für Komponenten
- OnPush Change Detection
- Optimierte Bundle Size
- Service Worker für Caching
- Bundle Size Tracking
- Performance Metrics
- Memory Leak Prevention
- Fork das Repository
- Erstelle einen Feature Branch (
git checkout -b feature/amazing-feature) - Commit deine Änderungen (
git commit -m 'Add amazing feature') - Push zum Branch (
git push origin feature/amazing-feature) - Öffne einen Pull Request
- Befolge die ESLint Regeln
- Verwende TypeScript Types
- Schreibe aussagekräftige Commit Messages
- Füge Tests für neue Features hinzu
Dieses Projekt steht unter der MIT Lizenz. Siehe LICENSE Datei für Details.
- Entwicklung - Dein Name
- Design - Stadtforst Goslar
- Konzept - Walderlebnispfad Goslar
- Ionic Team - Für das fantastische Framework
- Angular Team - Für die solide Basis
- Stadtforst Goslar - Für die Zusammenarbeit
- OpenStreetMap - Für die Kartendaten
🌲 Erlebe den Wald digital - mit TannenTails! 🦊
Demo • Dokumentation • Issues
