Project: Atlas
Atlas is an organisation-neutral information platform that aggregates public data about every large Norwegian NGO. The product surface is a Next.js App Router web app at atlas.helpers.no (TypeScript, React Server Components, Digdir Designsystemet for UI, MapLibre for maps). The data behind it is produced by a separate pipeline (atlas-data/) that ingests Norwegian public-sector sources (SSB, FHI, Brreg, Kartverket, Bufdir, IMDi, NAV, Lottstift, Innsamlingskontrollen, …), transforms them through dbt, and serves them as marts.* tables in PostgreSQL.
Atlas runs on the Urbalurba Infrastructure Stack (UIS) at uis.sovereignsky.no — a sovereign Kubernetes platform that already provides Postgres, observability, identity, networking, and GitOps deploy. New platform services Atlas needs (Dagster, Metabase, PostgREST) are filed as INVESTIGATE-*.md documents in the UIS repo's website/docs/ai-developer/plans/backlog/.
For the user-facing description, personas, status, and key product decisions, read the repo-root README.md first — that is the authoritative product overview.
Repository structure
This repo holds three co-located concerns: the customer-facing Next.js app (atlas-frontend/, PostgREST consumer; rebuilt under PLAN-005), the contributor diagnostic Next.js app (atlas-contributor-frontend/, direct Postgres for ingestion verification), and the data platform (atlas-data/, intended to be split into a separate atlas-data repo later — see atlas-data/README.md for the split-trigger conditions).
atlas/
├── README.md — product overview (read this first)
│
├── atlas-frontend/ — Next.js customer app (atlas.helpers.no, PostgREST consumer; rebuilt under PLAN-005)
│ └── (under construction)
│
├── atlas-contributor-frontend/ — Next.js diagnostic app for contributors (direct Postgres; dev/staging only)
│ ├── package.json — Node 20+
│ ├── next.config.ts, tsconfig.json — Next.js config
│ ├── app/ — App Router pages and layouts
│ ├── src/ — shared code (components, lib)
│ ├── public/ — static assets
│ ├── postcss.config.mjs, components.json — PostCSS, shadcn config
│ └── design-tokens/ — Digdir Designsystemet token sources
│
├── atlas-data/ — future separate `atlas-data` repo, colocated for now
│ ├── README.md — what atlas-data is, contract with frontend
│ ├── ingest/ — TypeScript ingestion (one folder per source)
│ │ ├── package.json — `@atlas-data/ingest`, Node 20+
│ │ ├── scripts/migrate.ts — runs SQL files in ../migrations/
│ │ └── src/sources/<id>/ — one folder per data source (19 implemented)
│ │ ├── index.ts — entry point, exports SOURCE_ID + run()
│ │ └── README.md — source-specific notes
│ ├── dbt/ — dbt Core project (Python)
│ │ ├── dbt_project.yml — project config
│ │ ├── profiles.yml — connection profiles
│ │ ├── models/ — SQL transformations raw.* → marts.*
│ │ └── packages.yml — dbt_utils etc.
│ └── migrations/ — raw.* schema SQL, numbered 001_*.sql onwards
│
├── atlas-private-data-repo/ — per-NGO private data folders (sample-ngo committed; real NGOs gitignored)
│
├── website/ — user-facing documentation; Docusaurus-shaped, Docusaurus not yet installed
│ ├── README.md — layout conventions, helpers-projects sister-site references, Docusaurus install plan
│ └── docs/ — MD pages, Docusaurus-compatible
│ ├── index.md — landing page
│ ├── about/ — what Atlas is, who it's for
│ ├── sector/ — Norwegian NGO sector context
│ ├── getting-started/ — orientation for first-time consumers of marts.*
│ ├── concepts/ — one page per canonical entity (kommune, NGO, chapter, …)
│ ├── measurements/ — one page per (source_id, contents_code) pair
│ └── sources/ — one page per ingest source