feat: Großes v3-Update – Sterne-Rating, Ranking, Kommentare, eigene Ideen gleichberechtigt

 Sterne-Bewertungs-System (1-5 pro Person, Till + Lea unabhängig)
🏆 Dynamische Ranking-Liste mit Top-3-Badges (Gold/Silber/Bronze)
💬 Kommentare unter jeder Karte (aufklappbar, eigene löschbar)
👤 User-Profil-Switch (Till ↔ Lea) – Header-Pill mit Modal
💜 Eigene Ideen sind jetzt vollwertige Karten (im Ideen-Tab gemischt)
✏️ Eigene Ideen bearbeitbar + löschbar (eigener Tab)
📊 Sortierung: Ranking / Status / Preis / Name / Eigene zuerst
📈 Live-Stats: Ideen, Bewertet, Kommentare, Tage bis Reise
🎨 Bottom-Navigation mit 5 Tabs + Badge für eigene Ideen
📋 JSON-Export aller Daten für Codex
🔧 Daten-driven: destinations.json + dynamisches Rendering
📱 Mobile-optimiert mit Safe-Area-Insets

Datenstruktur:
- localStorage.f24_ratings, f24_comments, f24_own, f24_user
- 18 built-in Destinations aus data/destinations.json
- Gleiche Render-Pipeline für built-in und own
This commit is contained in:
Till Heidrich
2026-05-26 14:03:55 +00:00
parent eca5dbd866
commit f622dc0619
3 changed files with 1336 additions and 1075 deletions
+104
View File
@@ -0,0 +1,104 @@
# Fredi24 Feature-Übersicht
**Live:** https://holiday.heidrich-digital.de · Passwort: `frediurlaub26`
## Kern-Features (v3.0)
### ⭐ Sterne-Bewertungs-System
- Jede Destination kann von Till + Lea unabhängig bewertet werden (15 Sterne)
- Klick auf Stern setzt/entfernt Bewertung
- Durchschnitt wird automatisch berechnet
- Persistent in localStorage (`f24_ratings`)
### 🏆 Dynamische Ranking-Liste
- Eigener Tab "Ranking" (Bottom-Nav)
- Sortiert automatisch nach Durchschnitt aller Sterne
- Top 3 bekommen Gold/Silber/Bronze Badge
- Klick auf Ranking-Eintrag → springt zur Detail-Karte
- Zeigt Till's und Lea's Bewertungen separat
### 💬 Kommentar-System
- Unter jeder Karte aufklappbar
- Aktiver User (Till oder Lea) postet als sich selbst
- Eigene Kommentare löschbar
- Timestamp ("gerade", "5 Min", "2 Std", Datum)
- Lea's Kommentare in coral, Till's in teal markiert
### 👤 Profil-Switch
- Top-rechts: User-Pill mit aktuellem Profil
- Klick → Modal: Till oder Lea auswählen
- Aktive Identität wird für Sterne + Kommentare verwendet
- Speichert in localStorage (`f24_user`)
### 💡 Eigene Ideen einreichen (gleichberechtigt!)
- FAB-Button rechts unten (✚)
- Modal mit allen Feldern (Emoji, Name, Land, Budget, Status, Begründung, Subtext, Flugzeit)
- **Eigene Ideen erscheinen im Ideen-Tab gleichberechtigt** (lila Border, "💜 Eigener Vorschlag"-Marker)
- Können bewertet & kommentiert werden wie alle anderen
- Eigener Tab "💜 Eigene" zeigt nur eigene Vorschläge
- Bearbeitbar + löschbar (nur eigene)
- Badge auf Nav-Item zeigt Anzahl
### 📊 Sortierung (im Ideen-Tab)
- Bewertung (höchste zuerst) nutzt Sterne-Durchschnitt
- Status (TOP → SPÄTER)
- Preis aufsteigend / absteigend
- Name A-Z
- Eigene zuerst
### 📈 Live-Statistik-Dashboard
- 4 Kacheln oben im Ideen-Tab:
- Ideen gesamt (built-in + eigene)
- Bewertet (wie viele schon Sterne haben)
- Kommentare (Summe aller)
- Tage bis Reise (Countdown zum 13. Juli 2026)
### 🎨 Mobile-First UI
- Bottom-Navigation (5 Tabs: Ideen, Ranking, Eigene, Archiv, Info)
- Sticky Header mit User-Profil
- Safe-Area Padding für iOS Notch
- Optimiert für Touch (große Tap-Targets)
- 1-Spalten-Layout auf < 660px
### 🔓 Passwort-Schutz
- Client-side Gate (`frediurlaub26`)
- Session-basiert (`sessionStorage`)
- Schützt vor zufälligem Zugriff (kein hartes Security)
### 📋 Daten-Export
- JSON-Export aller Bewertungen + Kommentare + eigener Ideen
- Direkt in Zwischenablage → Codex kann auslesen
- Im Ranking-Tab über "📋 Export"-Button
## Datenstruktur
### LocalStorage Keys
- `f24_user` → aktiver User: "Till" | "Lea"
- `f24_ratings``{destId: {Till: 1-5, Lea: 1-5}}`
- `f24_comments``{destId: [{user, text, ts}]}`
- `f24_own` → Array eigener Destinationen
- `sessionStorage.f24` → "1" wenn eingeloggt
### Built-in Destinations (data/destinations.json)
18 vorgefertigte Destinationen mit allen Feldern:
- Sardinien, AIDA, Algarve, Glamping, Schweiz, Côte d'Azur
- Taurito, Fuerteventura, Menorca, Kapverden, Malta, Lanzarote, Costa del Sol
- MSC, Korsika, Madeira (später), Schweden (später), Bali (später)
## Codex-Integration
Codex kann über git.heidrich-digital.de/till/holiday-2026:
1. `data/destinations.json` erweitern → neue eingebaute Destinationen
2. Aus `export`-JSON die User-Daten auslesen → Ratings/Kommentare analysieren
3. HTML-Templates erweitern (siehe README.md für Card-Format)
4. Auto-Deploy via Coolify bei Push auf main
## Roadmap (Ideen für später)
- [ ] Bilder pro Destination (CDN/Unsplash)
- [ ] Wettervorhersage-Widget je Reisezeitraum
- [ ] Direkte Booking-Links (HRS, Booking.com)
- [ ] PDF-Export einer "Shortlist"
- [ ] Reise-Notizen pro Destination (Hotel-Links, Mietwagen-Codes)
- [ ] Felix-Geburtstag-Counter ("Felix ist X Jahre alt während Reise")
- [ ] Multi-Year-Planning (2026, 2027, 2028)
+446
View File
@@ -0,0 +1,446 @@
[
{
"id": "sardinien",
"emoji": "🏖️",
"name": "Sardinien",
"country": "🇮🇹 Italien",
"sub": "Nordsardinien · Hotel 4★ · Mietwagen",
"status": "TOP",
"isRecommendation": true,
"price": 3150,
"priceLabel": "für 3 Pers. 7N",
"priceBadge": "Im Budget ✓",
"priceBadgeClass": "pb-mid",
"scoreFelix": 100,
"scoreLea": 80,
"scoreCar": 100,
"flight": "2h 20",
"from": "HAM→OLB",
"climate": "3035°C",
"available": "ab 13.Jul ✓",
"highlight": "Karibik-Strände · EU-Kindersitz-Standard · Neuland",
"pros": ["Direktflug HAMOlbia 2:20h", "Traumstrände (La Pelosa, Principe)", "Lea hat Sardinien okayed", "Sehr kinderfreundlich"],
"cons": ["3035°C im Juli heiß", "Kein AI = Eigenplanung", "Hochsaison teuer + voll"],
"note": "Hotels: Club Hotel Baja Sardinia (4★), Sporting Beach Hotel. Nordsardinien bevorzugen.",
"felixMinAge": 0,
"season": ["6","7","8","9"]
},
{
"id": "aida-kreuzfahrt",
"emoji": "🚢",
"name": "AIDAcosma Kreuzfahrt",
"country": "🇮🇹 Mittelmeer",
"sub": "Korsika · Sardinien · Rom · Marseille · Barcelona",
"status": "TOP",
"price": 3320,
"priceLabel": "Schiff + Flug HAM→PMI",
"priceBadge": "Im Budget ✓",
"priceBadgeClass": "pb-mid",
"scoreFelix": 100,
"scoreLea": 100,
"scoreCar": 20,
"flight": "2h",
"from": "HAM→PMI",
"climate": "2528°C",
"available": "Prüfen!",
"highlight": "Kreuzfahrt-Wunsch erfüllt · Lea muss nichts planen · Vollpension",
"pros": ["Korsika + Sardinien + Rom kombiniert", "Felix Kids-Club 36J + Rutschen", "AIDA kennt ihr seit 2 Reisen", "Kinder 35% Rabatt"],
"cons": ["Korsika-Route: 4.Juli oder 15.Aug", "18.Juli = Gibraltar (weniger gut)", "Kein echtes Mietwagen-Feeling"],
"note": "⚠️ aida.de Route PMI07307 direkt prüfen: Sardinien-Route 13.16. Juli verfügbar?",
"felixMinAge": 0,
"season": ["5","6","7","8","9","10"]
},
{
"id": "algarve",
"emoji": "🌊",
"name": "Algarve",
"country": "🇵🇹 Portugal",
"sub": "Carvoeiro · Lagos · Atlantik-Klippenküste",
"status": "TOP",
"price": 2950,
"priceLabel": "günstigste TOP-Option",
"priceBadge": "Budget-Tipp 💚",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 100,
"scoreLea": 65,
"scoreCar": 100,
"flight": "3h 30",
"from": "HAM→FAO",
"climate": "2528°C",
"available": "ab 13.Jul ✓",
"highlight": "Mildestes Klima für Felix · Spektakuläre Mietwagen-Touren",
"pros": ["2528°C ideal für Kleinkind", "Cabo de São Vicente, Lagos, Sagres", "Carvoeiro, Praia da Luz ruhig", "Günstigstes Budget aller TOPs"],
"cons": ["Lea etwas zögerlich (neu)", "Weniger AI-Auswahl als Kanaren"],
"note": "HP statt AI ihr esst täglich unterwegs bei Mietwagen-Touren.",
"felixMinAge": 0,
"season": ["4","5","6","7","8","9","10"]
},
{
"id": "glamping",
"emoji": "🏕️",
"name": "Glamping Village",
"country": "🇮🇹 Italien",
"sub": "Bungalow direkt am Meer · Pool · Kinderanimation",
"status": "NEW",
"price": 2500,
"priceLabel": "günstigste Option!",
"priceBadge": "Preis-Tipp 💚",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 100,
"scoreLea": 70,
"scoreCar": 80,
"flight": "2h",
"from": "HAM→VCE",
"climate": "2833°C",
"available": "ASAP!",
"highlight": "Tipp vom Meister: Bungalow am Meer mit Pool unterschätzt!",
"pros": ["Direkter Meerzugang + eigener Pool", "Kinderclub, Animation, Strand", "3050% günstiger als Hotel", "Absolutes Neuland"],
"cons": ["Kein 4★-Hotelkomfort", "Qualität je nach Anlage variabel", "Juli-Plätze schnell weg"],
"note": "Top: Union Lido/Cavallino (Venetien), Punta Lunga/Vieste (Gargano). Buchung: acsi.eu · pitchup.com",
"felixMinAge": 0,
"season": ["5","6","7","8","9"]
},
{
"id": "schweiz",
"emoji": "🏔️",
"name": "Schweiz + Norditalien",
"country": "🇨🇭 Schweiz",
"sub": "Fribourg · Gruyères · Lago Maggiore",
"status": "OK",
"price": 2000,
"priceLabel": "günstigster Kurztrip",
"priceBadge": "Budget-Winner 💚",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 60,
"scoreLea": 90,
"scoreCar": 80,
"flight": "860 km",
"from": "Caddy*",
"climate": "2228°C",
"available": "Flexibel",
"highlight": "Lea würde es sofort machen · Freunde besuchen · Château de Gruyères",
"pros": ["Lea will Schweiz ausdrücklich", "Château de Gruyères Felix findet Burgen spannend!", "Tagestour Lago Maggiore (2,5h)", "Freunde bei Fribourg = ggf. günstig"],
"cons": ["860 km Caddy (Dienstwagen)", "Schweizer Hotels teuer", "Kein klassischer Strandurlaub"],
"note": "*Caddy ist Dienstwagen HHGmbH keine persönlichen Kosten. Alternativ: Flug HAM→GVA + Mietwagen.",
"felixMinAge": 3,
"season": ["5","6","7","8","9","10"]
},
{
"id": "cote-azur",
"emoji": "🇫🇷",
"name": "Côte d'Azur",
"country": "🇫🇷 Frankreich",
"sub": "Nizza · Antibes · Familien-Feriendorf",
"status": "OK",
"price": 3000,
"priceLabel": "Flug + Hotel/Feriendorf",
"priceBadge": "Im Budget ✓",
"priceBadgeClass": "pb-mid",
"scoreFelix": 80,
"scoreLea": 85,
"scoreCar": 90,
"flight": "2h",
"from": "HAM→NCE",
"climate": "2833°C",
"available": "ab 13.Jul ✓",
"highlight": "Lea würde sofort Frankreich machen · Charmant",
"pros": ["Lea mag Frankreich", "Nizza direkt ab Hamburg 2h", "Traumküste + Mietwagen (Monaco, Cannes)", "Familienfreundliche Feriendörfer"],
"cons": ["Juli sehr teuer an der Côte d'Azur", "Wenig AI-Hotels"],
"note": "Feriendorf-Tipp: Center Parcs Les Lacs de l'Escapade (Var) oder Antibes direkt.",
"felixMinAge": 0,
"season": ["5","6","7","8","9"]
},
{
"id": "taurito",
"emoji": "🌴",
"name": "Taurito Princess",
"country": "🇪🇸 Gran Canaria",
"sub": "TUI KIDS CLUB · All Inclusive",
"status": "OK",
"price": 3100,
"priceLabel": "AI Pauschal inkl. Flug",
"priceBadge": "Im Budget ✓",
"priceBadgeClass": "pb-mid",
"scoreFelix": 100,
"scoreLea": 100,
"scoreCar": 60,
"flight": "5h",
"from": "HAM→LPA",
"climate": "2528°C",
"available": "ab 13.Jul ✓",
"highlight": "Lea's ausdrücklicher Favorit · Felix Mini-Club ab 3J",
"pros": ["Lea will es", "Felix Mini-Club + Kinderpool", "AI-Vollversorgung", "Wasserpark 5 Min entfernt"],
"cons": ["4. Kanaren-Reise in 4 Jahren", "Till will was anderes", "AI-Bunker ohne echte Touren"],
"note": "Link: c.24.de/pr/F8F2FX · Kinderfestpreis (212J) MaiSep 2026.",
"felixMinAge": 3,
"season": ["1","2","3","4","5","6","7","8","9","10","11","12"]
},
{
"id": "fuerteventura",
"emoji": "🏜️",
"name": "Fuerteventura",
"country": "🇪🇸 Kanaren",
"sub": "Aldiana / Robinson · Ruhiger als GC",
"status": "OK",
"price": 3200,
"priceLabel": "AI-Clubhotel",
"priceBadge": "Im Budget ✓",
"priceBadgeClass": "pb-mid",
"scoreFelix": 90,
"scoreLea": 80,
"scoreCar": 60,
"flight": "4h 30",
"from": "HAM→FUE",
"climate": "2428°C",
"available": "ab 13.Jul ✓",
"highlight": "Ruhigste Kanareninseln · Riesige Sandstrände",
"pros": ["Weniger touristisch als GC", "Aldiana/Robinson Club-Konzept", "Riesige flache Strände für Felix"],
"cons": ["Kanaren = nochmal dasselbe", "Windig (Kitesurf-Destination)"],
"felixMinAge": 0,
"season": ["1","2","3","4","5","6","7","8","9","10","11","12"]
},
{
"id": "menorca",
"emoji": "🏝️",
"name": "Menorca",
"country": "🇪🇸 Balearen",
"sub": "Ruhigste Baleareninsel · Cala Galdana",
"status": "OK",
"price": 2900,
"priceLabel": "HP 4★ + Flug",
"priceBadge": "Günstig ✓",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 85,
"scoreLea": 75,
"scoreCar": 90,
"flight": "2h 30",
"from": "HAM→MAH",
"climate": "2833°C",
"available": "ab 13.Jul ✓",
"highlight": "Ruhiger als Mallorca · Türkises Wasser",
"pros": ["Ruhiger als Mallorca + Ibiza", "Biosphärenreservat sauber", "Schöne Buchten mit Mietwagen"],
"cons": ["Weniger Kinderclub-Angebot", "Sehr heiß im Juli"],
"felixMinAge": 0,
"season": ["5","6","7","8","9","10"]
},
{
"id": "kapverden",
"emoji": "🌍",
"name": "Kapverden",
"country": "🌍 Atlantik",
"sub": "Sal · Boa Vista · AI-Resort · Exotisch",
"status": "OK",
"price": 3400,
"priceLabel": "AI Direktflug",
"priceBadge": "Knapp am Budget",
"priceBadgeClass": "pb-pricey",
"scoreFelix": 80,
"scoreLea": 75,
"scoreCar": 40,
"flight": "6h",
"from": "HAM→SID",
"climate": "2730°C",
"available": "ok",
"highlight": "Exotisch ohne langen Flug · Kilometer-Strände",
"pros": ["Direktflug 6h kein Umsteigen", "Riesige flache Strände (Felix-Gold)", "RIU/Iberostar All Inclusive", "Echtes Neuland"],
"cons": ["Knapp am Budget", "Wenig Mietwagen-Sightseeing", "Windige Insel"],
"felixMinAge": 2,
"season": ["1","2","3","4","5","6","7","8","9","10","11","12"]
},
{
"id": "malta",
"emoji": "⛪",
"name": "Malta",
"country": "🇲🇹 Malta",
"sub": "Gozo · St. Julian's · Familienhotel 4★",
"status": "OK",
"price": 2400,
"priceLabel": "günstig für Europa",
"priceBadge": "Preis-Tipp 💚",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 75,
"scoreLea": 70,
"scoreCar": 75,
"flight": "3h",
"from": "HAM→MLA",
"climate": "3034°C",
"available": "ab 13.Jul ✓",
"highlight": "Kleinste Insel Europas · EU · Günstig · Englisch",
"pros": ["Direktflug 3h, günstig", "EU-Standards, kein Visum", "Gozo für Mietwagen-Touren"],
"cons": ["Kaum Sandstrand (Felsküste)", "Sehr heiß + touristisch im Juli"],
"felixMinAge": 0,
"season": ["4","5","6","7","8","9","10"]
},
{
"id": "lanzarote",
"emoji": "🌋",
"name": "Lanzarote",
"country": "🇪🇸 Kanaren",
"sub": "Vulkaninsel · Puerto del Carmen",
"status": "OK",
"price": 2800,
"priceLabel": "HP + Flug",
"priceBadge": "Günstig ✓",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 80,
"scoreLea": 70,
"scoreCar": 80,
"flight": "4h 45",
"from": "HAM→ACE",
"climate": "2528°C",
"available": "ab 13.Jul ✓",
"highlight": "Ruhigste Kanareninseln · Vulkan-Landschaft · César Manrique",
"pros": ["Ruhiger als GC/Teneriffa", "Timanfaya Vulkan per Mietwagen", "Passat-Klima: 2528°C"],
"cons": ["Kanaren = schon dreimal", "Weniger Kinderclub-Auswahl"],
"felixMinAge": 0,
"season": ["1","2","3","4","5","6","7","8","9","10","11","12"]
},
{
"id": "costa-sol",
"emoji": "🌞",
"name": "Costa del Sol / Málaga",
"country": "🇪🇸 Andalusien",
"sub": "Nerja · Marbella · Direktflug HAM",
"status": "OK",
"price": 2700,
"priceLabel": "HP + Direktflug",
"priceBadge": "Günstig ✓",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 80,
"scoreLea": 70,
"scoreCar": 90,
"flight": "3h 20",
"from": "HAM→AGP",
"climate": "3238°C",
"available": "ab 13.Jul ✓",
"highlight": "Günstig · Andalusien Mietwagen-Touren",
"pros": ["Direktflug HAM→Málaga 3h20", "Nerja (schön + ruhig)", "Mietwagen: Granada, Alhambra, Ronda"],
"cons": ["3238°C im Juli sehr heiß", "Viele Touristenstädte"],
"felixMinAge": 0,
"season": ["4","5","6","9","10"]
},
{
"id": "msc-kreuzfahrt",
"emoji": "🛳️",
"name": "MSC / TUI Cruises",
"country": "🚢 Mittelmeer",
"sub": "Alternative zu AIDA",
"status": "MAYBE",
"price": 3000,
"priceLabel": "inkl. Flug",
"priceBadge": "Im Budget",
"priceBadgeClass": "pb-mid",
"scoreFelix": 90,
"scoreLea": 80,
"scoreCar": 20,
"flight": "2h",
"from": "Flug FCO/VCE",
"climate": "2530°C",
"available": "Prüfen",
"highlight": "Alternative Reederei · Evtl. günstigere Routen",
"pros": ["MSC Grandiosa familienfreundlich", "Evtl. günstigere Kabinen", "Mein Schiff deutschsprachig"],
"cons": ["Kein AIDA-Erfahrungsvorteil", "Kinderprogramm variiert"],
"felixMinAge": 0,
"season": ["5","6","7","8","9","10"]
},
{
"id": "korsika",
"emoji": "⛰️",
"name": "Korsika direkt",
"country": "🇫🇷 Frankreich",
"sub": "Palombaggia · Porto-Vecchio · Bonifacio",
"status": "MAYBE",
"price": 3200,
"priceLabel": "Ferienwohnung + Flug",
"priceBadge": "Im Budget",
"priceBadgeClass": "pb-mid",
"scoreFelix": 70,
"scoreLea": 70,
"scoreCar": 100,
"flight": "via Paris",
"from": "Umsteigen!",
"climate": "2832°C",
"available": "Hochpreis",
"highlight": "Schönste Strände Europas · Lea hat Korsika okayed",
"pros": ["Palombaggia: traumhaft", "Lea okay für Korsika"],
"cons": ["Kein Direktflug ab HAM/HAJ", "Hochpreisinsel im Sommer"],
"note": "Besser als AIDA-Stopp in Ajaccio als Kreuzfahrt-Erlebnis.",
"felixMinAge": 0,
"season": ["5","6","7","8","9"]
},
{
"id": "madeira",
"emoji": "🌺",
"name": "Madeira",
"country": "🇵🇹 Portugal",
"sub": "Dritter Anlauf · Levadas · Porto Moniz",
"status": "SPÄTER",
"price": 3000,
"priceLabel": "Flug + Hotel HP",
"priceBadge": "Im Budget",
"priceBadgeClass": "pb-mid",
"scoreFelix": 40,
"scoreLea": 80,
"scoreCar": 100,
"flight": "4h 30",
"from": "HAM→FNC",
"climate": "2225°C",
"available": "2028?",
"highlight": "Lea: \"wenn Felix älter ist\" · 2× Corona-Storno · 3. Anlauf!",
"pros": ["2225°C mildestes Klima", "Mietwagen-Paradies (Levadas)", "Vertraut 2× geplant gewesen"],
"cons": ["Kaum Sandstrand für Felix", "Lea: explizit \"warten bis Felix größer\""],
"note": "📅 Ab Felix 5J+ (ca. 2028/29)",
"felixMinAge": 5,
"season": ["1","2","3","4","5","6","7","8","9","10","11","12"]
},
{
"id": "schweden",
"emoji": "🦌",
"name": "Schweden",
"country": "🇸🇪 Schweden",
"sub": "Bohuslän · Astrid Lindgrens Welt",
"status": "SPÄTER",
"price": 2800,
"priceLabel": "Ferienhäuser + Mietwagen",
"priceBadge": "Günstig ✓",
"priceBadgeClass": "pb-cheap",
"scoreFelix": 85,
"scoreLea": 50,
"scoreCar": 100,
"flight": "1h 20",
"from": "HAM→GOT",
"climate": "1824°C",
"available": "2027",
"highlight": "Till's Herzensthema · Astrid Lindgrens Welt!",
"pros": ["Astrid Lindgrens Welt (Felix mit 4J+)", "Direktflug HAM→Göteborg 1:20h", "Natur pur: Seen, Wälder, Schären"],
"cons": ["Lea: \"nicht meine Vorstellung von Sommerurlaub\"", "Wetter wechselhaft"],
"note": "📅 Ab Felix 4J (ca. 2027) Astrid Lindgrens Welt!",
"felixMinAge": 4,
"season": ["6","7","8"]
},
{
"id": "bali",
"emoji": "🌴",
"name": "Bali",
"country": "🇮🇩 Indonesien",
"sub": "Jenny's Verbindung · Ubud · Seminyak",
"status": "SPÄTER",
"price": 6000,
"priceLabel": "Flug + Villa",
"priceBadge": "Über Budget",
"priceBadgeClass": "pb-pricey",
"scoreFelix": 50,
"scoreLea": 95,
"scoreCar": 80,
"flight": "~14h",
"from": "Umsteigen",
"climate": "2832°C",
"available": "2030+",
"highlight": "Lea's Freundin Jenny hat Mann aus Bali",
"pros": ["Traumziel für beide", "Günstige Luxusvillen mit Pool", "Jenny als Insider-Kontakt"],
"cons": ["Langer Flug + Zeitzone (+6h)", "Gesundheit/Impfungen", "Aktuell zu teuer"],
"note": "📅 Ab Felix 78J (ca. 2030)",
"felixMinAge": 7,
"season": ["4","5","6","7","8","9"]
}
]
+786 -1075
View File
File diff suppressed because one or more lines are too long