Files
eventmap/index.html
T
dapelza ee55fb1cf9 Phase 0+1: Scaffold, Datenmodell, Karte und Liste
Reines HTML5/CSS3/JavaScript ohne Build-Tooling, lauffaehig direkt per
Doppelklick auf index.html (file://, kein Server noetig):

- Datenmodell fuer Ausflugsziele mit allen Feldern aus der Anforderung,
  15 feste Kategorien inkl. Farbe/Icon
- Zentraler Pub/Sub-Store mit LocalStorage-Persistenz und
  Migrations-Grundgeruest
- Interaktive Karte (Leaflet + Leaflet.markercluster, lokal vendored)
  mit kategoriefarbenen Markern, Clustering, Popups, Geolocation-Button
- Kartengrundlage ueber CARTO-Basemaps statt tile.openstreetmap.org, da
  dessen Referer-Pflicht file://-Aufrufe blockiert
- Seed-Daten als eingebettetes Script (data/seed.js) statt JSON-Datei,
  da fetch() auf lokale Dateien unter file:// nicht zuverlaessig
  funktioniert
- Ergebnisliste mit 10 Beispiel-Ausflugszielen, sicher gerendert ueber
  textContent/DOM-APIs statt innerHTML (Vorbereitung fuer spaeteren
  KI-JSON-Import mit Fremddaten)
- Responsives Layout (Desktop nebeneinander, Mobile gestapelt)
2026-07-24 11:24:47 +02:00

71 lines
2.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>EventMap Familienfreundliche Ausflugsziele</title>
<link rel="stylesheet" href="vendor/leaflet/leaflet.css" />
<link rel="stylesheet" href="vendor/leaflet.markercluster/MarkerCluster.css" />
<link rel="stylesheet" href="vendor/leaflet.markercluster/MarkerCluster.Default.css" />
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/variables.css" />
<link rel="stylesheet" href="css/layout.css" />
<link rel="stylesheet" href="css/components.css" />
<link rel="stylesheet" href="css/responsive.css" />
</head>
<body>
<header class="app-header">
<h1 class="app-header__title">EventMap</h1>
<p class="app-header__subtitle">Familienfreundliche Ausflugsziele auf der Karte</p>
</header>
<p id="app-status" class="app-status" role="alert" hidden></p>
<main class="app-layout">
<section class="map-panel" aria-label="Karte">
<div class="map-panel__toolbar">
<button id="locate-btn" type="button" class="btn btn--secondary">
Meinen Standort verwenden
</button>
</div>
<div id="map" class="map-panel__map">
<p class="map-panel__loading">Karte wird geladen…</p>
</div>
</section>
<aside class="list-panel" aria-label="Ergebnisliste">
<h2 class="list-panel__title">Ausflugsziele</h2>
<div id="place-list" class="list-panel__content">
<p class="list-empty">Lade Ausflugsziele…</p>
</div>
</aside>
</main>
<script src="vendor/leaflet/leaflet.js"></script>
<script src="vendor/leaflet.markercluster/leaflet.markercluster.js"></script>
<!-- Klassische Scripts statt ES-Module (import/export), damit die App
auch per Doppelklick/file:// ohne lokalen Server funktioniert.
Reihenfolge folgt der Abhängigkeitskette; alle Dateien hängen ihre
öffentliche API an das globale window.EventMap-Namespace-Objekt an. -->
<script src="js/utils/dom.js"></script>
<script src="js/utils/geo.js"></script>
<script src="js/utils/id.js"></script>
<script src="data/seed.js"></script>
<script src="js/config/constants.js"></script>
<script src="js/config/categories.js"></script>
<script src="js/models/schema.js"></script>
<script src="js/models/place.js"></script>
<script src="js/store/migrations.js"></script>
<script src="js/store/storage.js"></script>
<script src="js/store/store.js"></script>
<script src="js/map/geolocation.js"></script>
<script src="js/map/markers.js"></script>
<script src="js/map/mapController.js"></script>
<script src="js/ui/list.js"></script>
<script src="js/main.js"></script>
</body>
</html>