diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b47bca --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# mapy-mg + +Web-App für Foto-Uploads, EXIF-Positionen und Kartenanzeige. + +## Zielbild + +- Fotos per Webinterface hochladen +- GPS-Daten aus EXIF lesen +- Bilder als Marker auf OpenStreetMap anzeigen +- zeitbasierte Route grob verbinden +- Bilder beim Marker-Klick im Vollbild anzeigen + +## Struktur + +- `src/index.ts` Einstiegspunkt +- `src/server/` HTTP-Schicht +- `src/shared/` gemeinsame Hilfsfunktionen +- `src/domain/` fachliche Modelle +- `src/features/` Anwendungslogik nach Bereichen + diff --git a/src/domain/photo.ts b/src/domain/photo.ts new file mode 100644 index 0000000..81bba2d --- /dev/null +++ b/src/domain/photo.ts @@ -0,0 +1,9 @@ +export interface Photo { + id: string; + fileName: string; + capturedAt: string | null; + latitude: number | null; + longitude: number | null; + thumbnailUrl: string | null; +} + diff --git a/src/domain/route.ts b/src/domain/route.ts new file mode 100644 index 0000000..429163a --- /dev/null +++ b/src/domain/route.ts @@ -0,0 +1,7 @@ +export interface RoutePoint { + photoId: string; + capturedAt: string; + latitude: number; + longitude: number; +} + diff --git a/src/features/map/map-service.ts b/src/features/map/map-service.ts new file mode 100644 index 0000000..490a00d --- /dev/null +++ b/src/features/map/map-service.ts @@ -0,0 +1,6 @@ +import type { RoutePoint } from "../../domain/route.js"; + +export function buildRoute(points: RoutePoint[]): RoutePoint[] { + return points.slice().sort((a, b) => a.capturedAt.localeCompare(b.capturedAt)); +} + diff --git a/src/features/photos/photo-service.ts b/src/features/photos/photo-service.ts new file mode 100644 index 0000000..c64307f --- /dev/null +++ b/src/features/photos/photo-service.ts @@ -0,0 +1,6 @@ +import type { Photo } from "../../domain/photo.js"; + +export function listPhotos(): Photo[] { + return []; +} +