factcircuit
FactCircuit: an auditable claim-and-evidence verification loop with immutable provenance, staged checks, bounded retrieval, and reproducible evaluation.
Utforsk Norge gjennom åpne geodata. Boligpriser, energikart, prisvekst, ladestasjoner, inntekt, hytter og verneområder på interaktive kart.
Translation pending
DataTypeScript · JavaScriptGitHub @FemtiGramOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Fun side project
Translation pending
Taken from the repository README
Loading the full README.
Read the full 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 |