ImagiNation er et verktøy for å visualisere steder i litteratur gjennom tidene. Applikasjonen lar forskere bygge komplekse bokutvalg (korpus) og umiddelbart se deres geografiske avtrykk på et interaktivt kart.
Prosjektet er organisert som en moderne web-applikasjon med en separat backend:
- Frontend (Dette repoet): En React PWA som håndterer interaksjon, kart-rendering (Leaflet) og korpus-bygging.
- Backend (sqlite-backend): En FastAPI-server som snakker direkte med
imagination.db. - Database: SQLite med postings-støtte for raske fulltekst- og steds-søk.
For mer dybdeinformasjon, se den nye dokumentasjons-huben i docs/:
- Arkitektur Overview – Oversikt over teknologivalg og React-struktur.
- Prosjekt Manifest – Filosofien bak data-pipelinen og de overordnede målene.
- Database Modell – Detaljer om SQLite-skjemaet og
json_eachmønsteret. - Legacy Dash Guide – Referanser til den opprinnelige Plotly/Dash prototypen (
Dash_Imagination).
- Installer avhengigheter:
npm install - Kjør frontenden:
npm run dev - Kjør backenden: Gå til
sqlite-backendrepoet og kjøruv run uvicorn api_imagination:app --port 8080 --reload.
Som standard bruker appen OpenFreeMap Positron uten API-nøkkel. Symbol-lagene fjernes i klienten, og ImagiNation legger egne land- og havnavn oppå vektorkartet. Hvis OpenFreeMap ikke kan lastes, brukes OpenStreetMap som fallback.
Følgende Vite-variabler kan brukes for å overstyre standarden:
VITE_OPENFREEMAP_STYLE_URL: alternativ OpenFreeMap-kompatibel stilVITE_BASEMAP_URL: Leaflet-kompatibel tile-URL med{z},{x}og{yVITE_BASEMAP_ATTRIBUTION: påkrevd attribusjon fra kartleverandørenVITE_BASEMAP_MAX_ZOOM: valgfri maksimal zoom, standard19
Hvis VITE_BASEMAP_URL settes, brukes rasterflisene i stedet for OpenFreeMap.
En eventuell leverandørnøkkel må være begrenset til appens domene fordi alle
Vite-variabler er synlige i den ferdige frontend-bundlen. Rasterleverandøren må
også tillate CORS for at PNG-eksport av kartet skal fungere.
Land- og havetikettene er en kompakt, generert fil basert på Natural Earth
(CC0), ISO-landkoder og norske marine navn fra Wikidata. Oppdater filen med
npm run generate:map-labels.
For trygg samhandling i repoet anbefales denne oppsettet:
- Tilganger: Gi
Write-tilgang til medutviklere og eventuelle bot-/service-kontoer som skal opprette brancher/PR. - Branch protection: Beskytt
mainmed krav om Pull Request og minst 1 review før merge. - CI-krav: Krev grønn GitHub Actions-build før merge (for eksempel Pages-build og eventuelle tester/lint).
- Arbeidsflyt: Gjør endringer i feature-branch, åpne PR, og unngå direkte push til
mainnår flere jobber parallelt.
Utviklet av Nasjonalbiblioteket / DHLab.