factcircuit
FactCircuit는 불변 출처와 단계별 검증, 제한된 검색, 재현 가능한 평가를 제공하는 감사 가능한 주장·증거 검증 루프입니다
오픈 지리 데이터를 통해 노르웨이를 탐색하고, 주택가격·에너지 지도·가격 상승·충전소·소득·별장·보호구역을 인터랙티브 지도에서 확인
Utforsk Norge gjennom åpne geodata. Boligpriser, energikart, prisvekst, ladestasjoner, inntekt, hytter og verneområder på interaktive kart.
데이터TypeScript · JavaScriptGitHub @FemtiGram온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Fun side project
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Interactive maps built entirely on free, open Norwegian geodata. No paid APIs, no authentication required — just public data from Kartverket, SSB, NVE, MET.no, and OpenStreetMap.
Live at: datakart.no
| Feature | Route | Description | Docs |
|---|---|---|---|
| Stedsprofil | /kommune/[slug] | One dashboard per kommune (357 pages) combining population, income, housing, schools, energy, natur, charging, weather, and an interactive locator map with 6 toggleable layers | |
| Boligpriser | /bolig | Housing prices (kr/m²) per municipality — bubble map with kommune comparison and Finn.no deep-links | |
| Skoler og barnehager | /skoler | All 3 100+ skoler and 5 500+ barnehager in Norge with student/child counts, type and ownership. Data from Utdanningsdirektoratet (NSR + NBR) | |
| Helsetilbud | /helse | Kommune choropleth of fastlege data — ledig kapasitet, andel uten fastlege, gjennomsnittlig listelengde. SSB tabell 12005. Optional OSM overlay for sykehus and legevakt | |
| Energikart | /energikart | Wind, hydro, offshore wind, oil and gas — plus an animated timeline of the build-out from 1900 to today | docs/maps/energi.md |
| Magasinkart | /magasin | Regulated water reservoirs with live fill levels | docs/maps/magasin.md |
| Ladestasjoner | /lading | All EV charging stations in Norway | docs/maps/lading.md |
| Turisthytter | /hytter | Mountain huts and wilderness cabins | docs/maps/hytter.md |
| Høydekart | /map | Click anywhere for elevation (m.o.h.) and live weather | docs/maps/hoyde.md |
| Inntektskart | /lonn | Choropleth: median household income per municipality with kommune comparison | docs/maps/inntekt.md |
| Verneområder | /vern | Choropleth: protected nature area per municipality (km²) | docs/maps/vern.md |
| Kostnader | /kostnader | Choropleth of what it costs to live in each municipality: kommunale årsgebyr (water, sewage, waste, chimney) and eiendomsskatt (property tax) with Sammenlign comparison feature. SSB tables 12842 + 14674 | |
| Valgkart | /valg | Stortingsvalg 2025/2021 and Kommunestyrevalg 2023/2019 per kommune — vinnerparti choropleth, stemmefordeling, frammøte and endring from previous election. Compare two kommuner side by side. Animated timeline of all 21 Stortingsvalg 1945–2025 on today's kommuner. Data from Valgdirektoratet and SSB | docs/maps/valg.md |
| Prisvekst | /prisvekst | Inflation dashboard: KPI, categories, trends, Nordic comparison |
The home and three category landing pages (/energi, /natur, /samfunn) are tiered hubs that introduce each theme and link out to the maps above. /energi previously hosted the energy MAP — that moved to /energikart in May 2026; a conditional 301 in next.config.ts preserves Stedsprofil deep-links.
| Variable | Required | Description |
|---|---|---|
NOBIL_API_KEY | Required | API key from NOBIL — charging station data for the build-time fetch script |
ENOVA_RT_API_KEY | Optional | API key from data.enova.no (NOBIL Real-time product) — enables live charging station availability |
NVE_API_KEY | Optional | API key from NVE HydAPI — enables live river discharge and water level data on hydro plant and reservoir cards |
Set in Vercel under Project Settings → Environment Variables, or locally in .env.local. |
npm install
# Seed the pre-built static data files
node scripts/fetch-stations.mjs
node scripts/fetch-cabins.mjs
node scripts/fetch-production.mjs
node scripts/fetch-reservoirs.mjs
node scripts/fetch-kommuner.mjs
node scripts/fetch-finn-locations.mjs
node scripts/fetch-schools.mjs
node scripts/fetch-health.mjs
node scripts/fetch-valg.mjs
node scripts/build-kommune-profiles.mjs
npm run dev
scripts/fetch-valg-historikk.mjs (Stortingsvalg 1945–2025 for the /valg timeline) is not part of the seed or prebuild: historical results don't change, and its output is committed. Rerun it after a new Stortingsvalg or a kommune reform.
Open http://localhost:3000.
The seed scripts are also run automatically as a prebuild hook when deploying. If Overpass is unreachable, the existing files in public/data/ are kept.
scripts/analytics.mjs prints read-only Google Analytics 4 and Search Console reports (overview, pages, sources, hosts, queries, gsc-pages, query-pages /valg). It authenticates with a service account whose JSON key lives outside the repo; set GOOGLE_SERVICE_ACCOUNT_KEY, GA_PROPERTY_ID and GSC_SITE in .env.local. The GA tag only loads when VERCEL_ENV === "production", so localhost and preview visits are not counted.
| Data | Source | Refresh |
|---|---|---|
| Charging stations | NOBIL / Enova (datadump API) | Build-time static JSON |
| Charging status | NOBIL Real-time (Enova WebSocket) | Live via WebSocket |
| Tourist cabins | OpenStreetMap (Overpass API) | Build-time static JSON |
| Wind and hydro power | NVE ArcGIS (Vindkraft2, Vannkraft1) | 1-hour server cache |
| Reservoirs | NVE ArcGIS (Vannkraft1 layer 6) | 1-hour server cache |
| Offshore wind zones | NVE ArcGIS (Havvind2023) | 1-hour server cache |
| Oil and gas facilities | Sodir FactMaps (WGS84 MapServer) | 1-hour server cache |
| River observations | NVE HydAPI | Per-request |
| Housing prices | SSB table 06035 (Selveierboliger) | 24-hour server cache |
| Population | SSB table 07459 | Build-time static JSON |
| Income | SSB InntektStruk13 | 24-hour server cache |
| Schools | Utdanningsdirektoratet NSR (data-nsr.udir.no) | Build-time static JSON |
| Kindergartens | Utdanningsdirektoratet NBR (data-nbr.udir.no) | Build-time static JSON |
| Fastlege data | SSB table 12005 (Fastlegelister og fastlegekonsultasjoner) | Build-time static JSON |
| Kommunale gebyrer | SSB table 12842 (vann, avløp, avfall, feiing) | Build-time static JSON |
| Eiendomsskatt | SSB table 14674 (Eiendomsskatt per kommune) | Build-time static JSON |
| Eierstatus (boforhold) | SSB table 14891 (selveier, andelseier, leier per kommune) | Build-time static JSON |
| Boligtyper | SSB table 06265 (enebolig, småhus, blokk, ...) | Build-time static JSON |
| Utdanningsnivå | SSB table 09429 (grunnskole / vgs / høyere utdanning) | Build-time static JSON |
| Sykehus and legevakt | OpenStreetMap (Overpass, amenity=hospital/clinic scoped to Norway) |
Map tiles: Kartverket WMTS (topo, topograatone) and OpenTopoMap.
See CLAUDE.md for architecture decisions, code patterns, component conventions, and instructions for working with this codebase.
| Build-time static JSON |
| Election results | Valgdirektoratet (valgresultat.no) — Stortingsvalg 2025/2021, Kommunestyrevalg 2023/2019 | Build-time static JSON |
| Election history | SSB table 08092 (Stortingsvalg per kommune 1945–2025) + SSB Klass 131 (kommune changes) | Static JSON, regenerated manually |
| Finn.no location codes | Scraped from finn.no/realestate/homes/search.html | Build-time static JSON |
| Inflation (KPI) | SSB tables 03013 + 05327 | Loaded once on mount |
| Policy rate | Norges Bank API | Loaded once on mount |
| Nordic inflation | Eurostat HICP | Loaded once on mount |
| Protected areas | SSB table 08936 | 24-hour server cache |
| Weather | MET.no locationforecast | 30-minute server cache |
| Elevation | Kartverket høyde-API | Per-request |
| Municipality boundaries | GitHub (robhop/fylker-og-kommuner) | Build-time static GeoJSON |
| Address search | Geonorge adresser API (via /api/sok proxy) | 1-hour edge cache + 24-hour stale-while-revalidate |