#heading[Optimalisaties en resultaten]

Tijdens de ontwikkeling van Serengo zijn meerdere optimalisatiegolven doorgevoerd op het gebied van performance, UX, architectuur en deployment. Dit hoofdstuk vat de belangrijkste stappen en hun impact samen.

== Performance- en SEO-optimalisaties

Op 7 oktober is een grote optimalisatieronde uitgevoerd gericht op SEO, PWA en laadtijden:

- *SEO-verbeteringen*
  - Toevoegen en bijwerken van meta-tags en Open Graph-data.
  - Automatische generatie van `sitemap.xml` voor betere indexeerbaarheid.
- *PWA-verbeteringen*
  - Uitbreiding van de service worker voor caching van statische assets en kernroutes.
  - Optimalisatie van `manifest.json` (iconen, naamgeving, start-URL).
- *Performance*
  - Compressie van de achtergrondafbeelding (± 50% kleiner; van ~4.2MB naar ~2.1MB).
  - Vite-configoptimalisaties en fixen van build-issues.

Gemeten resultaten (op basis van Lighthouse-logs):

- Homepageload verbeterd van ongeveer 2.5s naar 1.2s.
- Largest Contentful Paint gedaald van ±1.8s naar ±0.9s.
- Betere stabiliteit door caching en service worker-ondersteuning.

== Architecturale verbeteringen

In Phase 6 en 7 is de interne architectuur grondig herzien:

- *Overgang naar location-gecentreerd datamodel*
  - Scheiding tussen `locations` en `finds`, met meerdere finds per locatie.
  - Normalisatie van locatiedata (minder duplicatie, betere querymogelijkheden).
  - Transactieve migraties en data-integriteitscontroles tijdens de overgang.

- *Sync-service en api-sync-laag*
  - Implementatie van een centrale sync-service (`api-sync.ts`) voor optimistic updates.
  - Automatische rollback bij falende API-calls, waardoor inconsistenties worden voorkomen.
  - Vermindering van dubbele logica in componenten en eenduidige bron van waarheid voor find-, comment-, like- en ratingdata.

Deze ingrepen verhogen zowel de schaalbaarheid (efficiëntere queries, minder redundantie) als de gebruikerservaring (snellere, soepelere UI).

== UX- en mapoptimalisaties

Een belangrijke focus lag op de kaart- en navigatie-ervaring:

- *Fullscreen map + sidebar*
  - Introductie van een fullscreen kaart met een uitschuifbare zijbalk voor finds.
  - Oplossing van overscroll- en overflowproblemen in lijsten.

- *Dynamische mapcentrering*
  - Intelligente centrering van de kaart afhankelijk van sidebar-positie (desktop vs. mobiel).
  - Voorkomen van storende autozoom tijdens het volgen van locaties.

- *Marker- en layoutverbeteringen*
  - Toevoegen van location markers, clustering en betere positionering.
  - UI-finetuning voor FindPreview, CommentsList en andere componenten.

Resultaat: gebruikers zien hun find altijd in het zichtbare deel van de kaart, en navigeren vloeiend tussen locaties en finds.

== Mediaperformance en veiligheid

Om zowel performance als security te verbeteren, zijn verschillende stappen gezet rond media:

- Invoering van een lokale mediaproxy (`/api/media/[...path]`) in plaats van directe Cloudflare R2-URL's.
- CSP-fixes om externe resources gecontroleerd toe te laten.
- WebP/JPEG-pipeline voor efficiëntere afbeeldingen met fallback-ondersteuning.

Dit zorgt voor snellere laadtijden, minder kans op CSP-gerelateerde fouten en betere controle over de media-aflevering.

== Deployment- en operationele optimalisaties

Om deployments robuust en reproduceerbaar te maken zijn onder meer de volgende verbeteringen geïntroduceerd:

- Multi-stage Docker build voor kleinere, efficiëntere images.
- Verplaatsing van Drizzle naar production dependencies zodat migraties binnen de container kunnen draaien.
- Een entrypoint-script dat bij het starten van de container automatisch database-migraties uitvoert.
- Health checks en verbeterde logging voor snellere foutdetectie.

Samen maken deze optimalisaties Serengo geschikt voor langdurige, stabiele hosting met goede gebruikerservaring en onderhoudbaarheid.
