Fotos & Erinnerungen: Bild-Pipeline, Media-Tabelle, Karten-Fotos, Code-Splitting, Backups#1
Open
chicohaager wants to merge 6 commits into
Open
Fotos & Erinnerungen: Bild-Pipeline, Media-Tabelle, Karten-Fotos, Code-Splitting, Backups#1chicohaager wants to merge 6 commits into
chicohaager wants to merge 6 commits into
Conversation
Removes legacy documentation, GitHub Actions workflows, docker-compose variants, helper shell scripts and other files no longer used. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ting Image pipeline: - Shared image utility: validate, auto-orient, resize, WebP compression, thumbnails, EXIF capture time + GPS extraction; used by all upload sites. - HEIC/HEIF (iPhone) support via pillow-heif. - Frontend galleries use thumbnails + lazy loading. Media table (source of truth for photos): - New media model (caption, taken_at, GPS, dimensions, order) with idempotent backfill from legacy photos arrays (run_migrations + Alembic 0002). - /api/media endpoints (caption, delete, trip gallery); clean cutover with a derived photos[] for backward compatibility; PDF and GDPR export use media. - Caption display + inline editing in the diary lightbox. Map: - Geotagged diary photos shown as thumbnail markers on the trip map (toggle). - Fix: TripMap called a non-existent placesService.getByTrip -> getPlaces. Performance: - Route-level code-splitting via React.lazy with stale-chunk reload recovery (main bundle ~694KB -> ~315KB). Tests: 27 backend tests pass, incl. new media lifecycle tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Avoids the very common port 8000. Updated across backend default (BACKEND_PORT), Dockerfiles (EXPOSE/healthcheck/bind), nginx proxy_pass, frontend API fallback, .env.example and the architecture doc. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- backup_database.py: also archive the uploads directory (photos) as a timestamped tar.gz paired with the DB dump; --uploads-dir / --skip-uploads; --keep retains N of each type. - restore_database.py (new): restore database and/or uploads with a safe tar extraction and a confirmation prompt (--yes to skip). - docs/BACKUP.md (new): backup/restore guide, cron example, 3-2-1 rule and a ZimaOS appendix (docker exec, /DATA, zima-cron). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- GET /api/search: searches the user's trips, diary entries, places and photo captions; grouped, ranked results with snippets. Dialect-aware — PostgreSQL to_tsvector/websearch_to_tsquery/ts_rank, SQLite ILIKE fallback. User-scoped. - GIN full-text indexes (run_migrations + Alembic 0003), sharing the document expressions with the search queries. - Frontend: debounced GlobalSearch dropdown in the navbar (React Query) linking to the matching trip/entry/place; searchService + i18n (de/en). Tests: 30 backend tests pass (incl. cross-entity + user-scoping search tests). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Macht TravelMind zu einer belastbaren App für Urlaubserinnerungen: Fotos werden vollwertige Entitäten mit Metadaten, sind auf der Karte sichtbar, durchsuchbar, laden schneller — und es gibt ein verifiziertes Backup/Restore für die unersetzlichen Daten.
Was drin ist
1. Bild-Pipeline — gemeinsame Utility für alle Uploads: Validierung, Auto-Rotation (EXIF), Resize, WebP, Thumbnails, EXIF (Aufnahmedatum + GPS); HEIC/HEIF via
pillow-heif; Frontend-Galerien mit Thumbnails + Lazy-Loading.2. Media-Tabelle (Source-of-Truth) — Fotos mit Caption,
taken_at, GPS, Maßen, Reihenfolge; idempotenter Backfill (run_migrations+ Alembic0002);/api/media-Endpunkte; sauberer Cutover mit abgeleitetemphotos[]; PDF- und DSGVO-Export nutzen Media; Caption-Inline-Edit in der Diary-Lightbox.3. Geo-Fotos auf der Karte — geotaggte Tagebuch-Fotos als Thumbnail-Marker (Toggle). Fix:
TripMapnutzte ein nicht existierendesplacesService.getByTrip->getPlaces.4. Volltextsuche —
GET /api/searchüber Reisen/Tagebuch/Orte/Captions, gruppiert + gerankt; Postgres FTS mit SQLite-ILIKE-Fallback, GIN-Indizes (Alembic0003); debounced Navbar-Dropdown.5. Performance — Route-Level-Code-Splitting (
React.lazy, Stale-Chunk-Reload). Haupt-Bundle ~694 KB -> ~315 KB.6. Backup/Restore —
backup_database.pysichert DB + Uploads; neuesrestore_database.py(mit Bestätigung);docs/BACKUP.mdinkl. cron, 3-2-1 und ZimaOS-Anhang.Außerdem: Default-Backend-Port 8000 -> 8137; obsolete Docs/CI/Docker/Helper-Skripte entfernt; Roadmap aktualisiert.
Tests
🤖 Generated with Claude Code