Finn nærmeste offentlige tilfluktsrom i Norge — Android-app + PWA
  • Kotlin 49.1%
  • TypeScript 40.6%
  • CSS 4.5%
  • Shell 4%
  • HTML 1.8%
Find a file
Ole-Morten Duesund c603e81b2a PWA: synleg del-ikon og ekte autoupdate utan å avbryte aktiv bruk
- Bytt del-knappen frå tekstpila ↪ til ein innebygd Material-stil
  SVG (20×20). Den førre Unicode-pila vart teikna mykje mindre enn
  ℹ og ↻ av dei fleste fontar — no har alle tre ikona same visuelle
  vekt på tvers av nettlesarar og operativsystem.
- Lagt til ein controllerchange-lyttar som utløyser ein omlasting
  *neste* gong appen vert lagt i bakgrunnen (visibilityState ===
  'hidden'), ikkje umiddelbart. Slik tek nye distribusjonar effekt
  utan brukarinngrep, men utan å rive vekk skjermen midt i ein
  tilfluktsromnavigering. registerType: 'autoUpdate' åleine sørgjer
  for at den nye SW-en skipWaiting + clientsClaim, men det reload-ar
  ikkje den allereie køyrande JavaScripten — denne lyttaren stettar
  det utan å bryte noregisseringsflyt.

Påverkar ikkje fråkopla bruk: omlasting skjer berre etter at ein ny
SW har vorte aktivert, og ein ny SW kan berre installerast medan
nettverket er tilgjengeleg. Sjølve omlastinga løyser alle ressursar
frå presjekken og fungerer fråkopla.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 16:28:31 +02:00
.maestro Legg til F-Droid-skjermbilete og Maestro-automatisering 2026-03-10 19:17:16 +01:00
app Bump versjon til v1.10.1 (versionCode 16) 2026-04-27 16:11:34 +02:00
fastlane/metadata/android Bump versjon til v1.10.1 (versionCode 16) 2026-04-27 16:11:34 +02:00
gradle/wrapper Initial commit: Norwegian emergency shelter finder app 2026-03-08 16:14:19 +01:00
pwa PWA: synleg del-ikon og ekte autoupdate utan å avbryte aktiv bruk 2026-04-27 16:28:31 +02:00
scripts Bundle shelter data in APK and add shared versioning 2026-03-08 18:33:38 +01:00
.gitignore Flytt signeringskonfigurasjon til gitignorert keystore.properties 2026-03-10 20:29:53 +01:00
ACCESSIBILITY.md Bump versjon til v1.9.1 (versionCode 14) 2026-04-18 19:13:56 +02:00
ARCHITECTURE.md Stabile djuplenker og fleire bruksforbetringar 2026-04-27 16:11:28 +02:00
build.gradle.kts Initial commit: Norwegian emergency shelter finder app 2026-03-08 16:14:19 +01:00
CLAUDE.md Fjern hjemmeskjerm-widget 2026-04-20 09:57:45 +02:00
F-DROID.md Førebu F-Droid-metadata med fastlane-struktur (#8) 2026-03-09 10:07:01 +01:00
gradle.properties Initial commit: Norwegian emergency shelter finder app 2026-03-08 16:14:19 +01:00
gradlew Initial commit: Norwegian emergency shelter finder app 2026-03-08 16:14:19 +01:00
gradlew.bat Initial commit: Norwegian emergency shelter finder app 2026-03-08 16:14:19 +01:00
LICENSE Legg til MPL-2.0-lisens 2026-03-08 18:38:22 +01:00
PRIVACY.md Legg til hybrid lokasjon, dataferskheit, widget og personvern (v1.2.0) 2026-03-08 19:10:57 +01:00
README.md Fjern utdatert notis om 24-timers GPS-utløp i README 2026-04-20 10:02:14 +02:00
settings.gradle.kts Initial commit: Norwegian emergency shelter finder app 2026-03-08 16:14:19 +01:00
SOURCES.md Legg til sentralisert datakildeoversikt (SOURCES.md) 2026-03-09 09:41:48 +01:00
STANDING_ON_SHOULDERS.md Fjern hjemmeskjerm-widget 2026-04-20 09:57:45 +02:00

Tilfluktsrom

Finn nærmeste offentlige tilfluktsrom i Norge. Appen er bygd for nødsituasjoner og fungerer uten internett etter første gangs bruk.

Kartvisning med tilfluktsrom i Bergen sentrum Valgt tilfluktsrom med avstand og retningspil Kompassnavigasjon med nordindikator Sivilforsvarsinfo: hva du skal gjøre om alarmen går Om-side med personvernerklæring

Slik fungerer appen

Kartvisning — Appen viser alle 556 offentlige tilfluktsrom i Norge på et OpenStreetMap-kart. De tre nærmeste tilfluktsrommene vises i bunnen med avstand, kapasitet og romnummer. Trykk på en kartmarkering eller et listeelement for å velge et tilfluktsrom.

Kompassnavigasjon — Trykk på kompassknappen for å bytte til retningspil-visning. En stor pil peker mot det valgte tilfluktsrommet, med avstand i meter eller kilometer. En diskret nordindikator vises på kanten slik at du kan verifisere kompasskalibreringen. Fungerer uten internett — bare GPS og kompassensor.

Sivilforsvarsinfo — Trykk på info-knappen for å se trinn-for-trinn-veiledning fra DSB om hva du skal gjøre når alarmen går: viktig melding-signal, flyalarm, finn dekning, lytt til NRK på DAB-radio, og faren over.

Om og personvern — Appen samler ikke inn persondata. Alt skjer lokalt på enheten. Se om-siden i appen for fullstendig personvernerklæring, datakilder og opphavsrett.

Funksjoner

  • Finn nærmeste tilfluktsrom — viser de tre nærmeste med avstand og kapasitet
  • Kompassnavigasjon — retningspil som peker mot valgt tilfluktsrom, med nordindikator
  • Frakoblet kart — kartfliser lagres automatisk for bruk uten nett
  • Velg fritt — trykk på en markering i kartet for å navigere dit
  • Del tilfluktsrom — send adresse, kapasitet og koordinater til andre
  • Sivilforsvarsinfo — veiledning fra DSB om hva du skal gjøre når alarmen går
  • Flerspråklig — engelsk, bokmål og nynorsk
  • Tilgjengelighet — TalkBack-støtte, fokusindikatorer og tilstrekkelig kontrast

Plattformer

Android-app (app/)

Native Kotlin-app med OSMDroid-kart og Room-database.

  • Minstekrav: Android 8.0 (API 26)
  • Bygg: ./gradlew assembleDebug
  • Installer: adb install app/build/outputs/apk/debug/app-debug.apk

Nettapp / PWA (pwa/) — ikke testet

OBS: PWA-versjonen er under utvikling og er foreløpig ikke manuelt testet i nettleser. Koden kompilerer og enhetstester passerer, men den er ikke verifisert i praksis.

Progressiv nettapp med Vite, TypeScript og Leaflet. Kan installeres på alle enheter via nettleseren.

  • Avhengigheter: bun install
  • Hent tilfluktsromdata: bun run fetch-shelters
  • Utviklingsserver: bun run dev
  • Bygg for produksjon: bun run build
  • Kjør tester: bun test

Datakilde

Tilfluktsromdata er offentlig informasjon fra DSB (Direktoratet for samfunnssikkerhet og beredskap), distribuert via Geonorge som GeoJSON i UTM33N-projeksjon (EPSG:25833). Koordinatene konverteres til WGS84 (bredde-/lengdegrad) for visning i kartet.

Datasettet inneholder ca. 556 offentlige tilfluktsrom med adresse, romnummer og kapasitet (antall plasser).

Arkitektur

tilfluktsrom/
├── app/                    # Android-app (Kotlin)
│   └── src/main/
│       ├── java/.../
│       │   ├── data/       # Room-database, nedlasting, GeoJSON-parser
│       │   ├── location/   # GPS, nærmeste tilfluktsrom
│       │   ├── ui/         # Retningspil, liste-adapter, om-dialog
│       │   └── util/       # UTM→WGS84-konvertering, avstandsberegning
│       └── res/            # Layout, strenger (en/nb/nn), ikoner
├── pwa/                    # Nettapp (TypeScript)
│   ├── src/
│   │   ├── data/           # IndexedDB-cache
│   │   ├── location/       # GPS, kompass
│   │   ├── ui/             # Kart, kompass, liste
│   │   ├── cache/          # Kartfliser for frakoblet bruk
│   │   └── i18n/           # Oversettelser
│   └── scripts/            # Bygg-tidsskript for datakonvertering
└── CLAUDE.md               # Prosjektdokumentasjon for AI-assistert utvikling

Frakoblet bruk

Appen er designet etter «offline-first»-prinsippet:

  1. Tilfluktsromdata lagres lokalt etter første nedlasting (Room / IndexedDB)
  2. Kartfliser caches automatisk for området rundt brukeren
  3. GPS og kompass fungerer uten internett
  4. Data oppdateres automatisk i bakgrunnen når det er eldre enn 7 dager

Sikkerhet

  • All nettverkstrafikk går over HTTPS (klartekst er deaktivert)
  • Content Security Policy (CSP) i PWA-versjonen
  • Tilfluktsromdata valideres ved parsing (koordinater innenfor Norge, gyldige felt)
  • Databaseoppdateringer er atomiske (transaksjon) for å unngå datatap
  • GPS-posisjon lagres ikke — den brukes bare i minnet mens appen er i bruk
  • Egendefinert User-Agent forhindrer enhetsfingeravtrykk

Personvern

Appen samler ikke inn, sender eller deler noen personopplysninger. Det finnes ingen analyse, sporing eller tredjepartstjenester. GPS-posisjonen brukes bare lokalt på enheten for å finne nærmeste tilfluktsrom, og sendes aldri til noen server. Se om-siden i appen for fullstendig personvernerklæring.

Opphavsrett

Copyright (c) Ole-Morten Duesund olemd@glemt.net

Lisens

Kildekoden er lisensiert under Mozilla Public License 2.0.

Appen bruker åpne data og tjenester fra flere kilder. Se SOURCES.md for en fullstendig oversikt over datakilder, URL-er og lisenser.

Se også