Nuketown er en interaktiv kartapplikasjon for beredskap som hjelper brukere med å lokalisere og navigere til kritisk infrastruktur under nødsituasjoner. Applikasjonen visualiserer tilfluktsrom, politistasjoner og sykehus i Norge, og gir viktig informasjon om kapasitet, befolkningsdekning og ruteplanlegging.
- 🚨 Tilfluktsrom: Viser lokasjon og kapasitetsinformasjon med befolkningsanalyse
- 👮 Politistasjoner: Viser politistasjoners plassering med kontaktinformasjon
- 🏥 Sykehus: Visualiserer sykehusplasseringer med akuttjenesteinformasjon
- 🗺️ Sanntidsnavigasjon: Gir gangveibeskrivelser til nærmeste fasiliteter
- 🏗️ 3D-bygningsvisualisering: Veksle mellom 2D og 3D bygningsvisning
- 🛣️ Vegnettverk-integrasjon: Valgfri overlay av detaljert vegnett
- 📱 Responsivt Design: Fungerer uavhengig av skjermstørrelse
- 🎯 Geolokasjon: Automatisk brukerposisjon og nærmeste fasilitet-finding
- Frontend: React med TypeScript og Vite for en hyppig utviklingsprosess
- Kartrendering: MapLibre GL JS for rask og fleksibel rendering av interaktivt kart, med støtte for tilpassede stiler og 3D-visninger.
- UI-komponenter: Material-UI (MUI) for moderne og tilgjengelige brukergrensesnitt, med ferdige komponenter og et tilpassbart designsystem.
- Backend/Database: Supabase med PostGIS for geografiske data og spørringer.
- Ruteplanlegging: Mapbox Directions API for beregning av gangruter basert på sanntidskartdata.
- Ikoner: FontAwesome, et omfattende ikonbibliotek som gir enkle og skalerbare vektorikoner for UI-elementer.
- Styling: CSS-in-JS med MUI System som muliggjør dynamisk og temabasert styling direkte i TypeScript-koden.
- Befolkningsdekning for tilfluktsrom
- Avstandsberegninger med Haversine-formel
- Estimering av gangtid
- Kapasitet vs. befolkningsratio
- Varmekartvisualisering av anleggsdekning
# Klon repositoriet
git clone https://github.com/simonportillo/nuketown.git
# Naviger til prosjektmappen
cd nuketown
# Installer avhengigheter
npm install
# Opprett .env fil med API-nøkler
cp .env.example .env
# Start utviklingsserveren
npm run devVITE_REACT_APP_SUPABASE_URL=din_supabase_url
VITE_REACT_APP_SUPABASE_KEY=din_supabase_nøkkel
VITE_MAPBOX_TOKEN=din_mapbox_token
.
└── src/
├── components/
│ ├── LandingPage.tsx
│ ├── MapPage.css
│ └── MapPage.tsx
├── .env
├── App.css
├── App.tsx
├── index.css
├── main.swx
└── vite-end.d.ts
Applikasjonen implementerer en fullstack-løsning hvor:
- Romlige data lagres i Supabase med PostGIS-utvidelser
- Frontend bruker MapLibre GL JS for kartrendering
- Sanntids geolokasjons-sporing for brukerposisjon
- Komplekse romlige spørringer for nærmeste fasilitet-søk
- Dynamisk ruteberegning mellom bruker og fasiliteter
- Interaktiv lag-veksling for ulike datavisualiseringer
- Stor refactor
- Støtte for offline-modus
- Mer detaljert fasilitetsinfo
- Integrasjon av sanntids beredskapsvarsler
- Forbedringer av tilgjengelighet
- Støtte for flere språk
- Mobil app-versjon
demo video:
nuketown_demoo.mp4
Landningsside
2D-Kart
3D-Kart
Vegnett aktivert
Varmekart
Politiloggen se https://api.politiet.no/politiloggen/index.html
