No description
  • Astro 43.7%
  • CSS 42.4%
  • TypeScript 9.7%
  • JavaScript 2.5%
  • Dockerfile 0.9%
  • Other 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-02 15:48:32 +00:00
public Jitsi: readable notifications (white background, dark text) 2026-11-02 15:05:52 +00:00
src Update Sider “om” 2026-11-02 15:48:32 +00:00
.dockerignore Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
.fallowrc.jsonc Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
.gitignore Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
.nvmrc Upgrade to latest tooling, Node 26 and fix all npm audit findings 2026-11-02 06:22:52 +00:00
.prettierignore Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
.prettierrc.json Add strict code-quality tooling and restructure into small components 2026-11-02 06:03:44 +00:00
.stylelintrc.json Add strict code-quality tooling and restructure into small components 2026-11-02 06:03:44 +00:00
astro.config.mjs Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
DESIGN.md Add strict code-quality tooling and restructure into small components 2026-11-02 06:03:44 +00:00
Dockerfile Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
eslint.config.js Add strict code-quality tooling and restructure into small components 2026-11-02 06:03:44 +00:00
LICENSE Initial commit 2026-11-01 22:54:44 +01:00
nginx.conf nginx: allow other ITPU domains to load the Maj font (CORS) 2026-11-02 14:31:52 +00:00
package-lock.json Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
package.json Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00
README.md Sveltia via egen Forgejo, Jitsi-tekster 2026-11-02 14:56:24 +01:00
tsconfig.json Move to Codeberg and Coolify: CI in Dockerfile, Sveltia via Codeberg 2026-11-02 11:39:41 +01:00

ITPU — Enhedslistens IT-politiske udvalg

Website for IT-Politisk Udvalg (ITPU). Statisk site bygget med Astro, redigeret med Sveltia CMS.

Kom i gang

npm install
npm run dev        # http://localhost:4321
npm run build      # statisk site i ./dist
npm run preview
npm run check      # alle kvalitetstjek (køres også i CI)

Kodekvalitet

npm run check kører alle tjek og skal være grønt før merge. Der er ingen separat CI: tjekkene kører i Dockerfile, når Coolify bygger sitet (se Hosting og deploy). Kør derfor npm run check lokalt før push.

Script Værktøj Tjekker
check:types astro check + TypeScript strictest Typer i .ts- og .astro-filer, inkl. templates
lint ESLint: typescript-eslint strict + stylistic (typebaseret), eslint-plugin-astro, jsx-a11y strict (via eslint-plugin-jsx-a11y-x) Fejl, usikre typer, tilgængelighed
lint:css Stylelint (stylelint-config-standard, BEM-klassenavne, ingen !important/id-selektorer) CSS
format:check Prettier (+ Astro-plugin) Formatering. CMS-indhold er undtaget, så redigeringer i Sveltia ikke bryder CI
fallow fallow med --fail-on-issues Død kode, ubrugte afhængigheder, duplikering, kompleksitet

npm run format retter formateringen automatisk.

Struktur

src/
  components/
    layout/        Header, Footer
    ui/            Logo, PageHeader, ProseSection, ContactDetails
    home/          Forsidens sektioner
    program/       Indholdsfortegnelse og sektioner til principprogrammet
    news/          Nyhedsliste og artikelhoved
    designsystem/  Sektionerne på /designsystem/
  content/         Markdown fra CMS'et (principper, nyheder, sider)
  data/            Indstillinger (JSON fra CMS'et) + typede moduler (site.ts, palette.ts)
  lib/             collections.ts (data), links.ts (URL'er), format.ts, types.ts
  scripts/         Klientside-TypeScript (mobilmenu)
  styles/          tokens.css (designtokens) og global.css (base + fælles komponenter)
  pages/           Ruter

Afhængigheder

Opdateringer tjekkes manuelt, fx med npx npm-check-updates, efterfulgt af npm run check. Der er ingen automatiske opdaterings-PR'er. To bevidste valg:

  • TypeScript 6. TypeScript 7 (den nye Go-version) har endnu ikke det JavaScript-API, som typescript-eslint og astro check bygger på; @astrojs/check kræver højst TypeScript 6, og npm ci fejler med 7. Opgradér, når værktøjerne følger med.
  • overrides.minimatch. ESLint og typescript-eslint afhænger af minimatch 10, som har en kendt sårbarhed (rettet i 11). API'et er det samme, så package.json tvinger version 11. Fjern overriden, når afhængighederne selv kræver 11.

Hver komponent har sin CSS i en fil ved siden af (fx Header.astro + header.css) med BEM-klassenavne præfikset med komponentens navn.

Sider

Side Fil Indhold fra
/ src/pages/index.astro src/data/forside.json, principper, nyheder
/principprogram/ src/pages/principprogram.astro src/content/sider/principprogram.md + src/content/program/*.md
/nyheder/ src/pages/nyheder/ src/content/nyheder/*.md
/om/ src/pages/om.astro src/content/sider/om.md, src/data/settings.json
/kommissorium/ src/pages/kommissorium.astro src/content/sider/kommissorium.md
/designsystem/ src/pages/designsystem.astro Levende oversigt over designsystemet
/rss.xml src/pages/rss.xml.ts Nyheder som RSS

Redigering med Sveltia CMS

CMS'et ligger på /admin/ og er konfigureret i public/admin/config.yml.

Lokalt (anbefalet til udvikling): Kør npm run dev, åbn http://localhost:4321/admin/ i Chrome eller Edge, vælg Work with Local Repository og peg på mappen med repoet. Ændringer skrives direkte til filerne.

Online: Sveltia gemmer ændringer som commits i repoet itpu/itpu-website på ITPU's egen Forgejo, https://git.itpu.dk (gren main). Redaktører skal have en bruger dér med skriveadgang til repoet og kan logge ind på to måder:

  1. Forgejo-login — via OAuth2-appen ITPU website CMS i organisationens indstillinger på git.itpu.dk (offentlig klient, redirect-URI https://itpu.dk/admin/). Dens client ID står som app_id i public/admin/config.yml.
  2. Adgangstoken — vælg Sign in with Token og indsæt et Forgejo-adgangstoken med repository: read and write.

CMS-scriptet serveres fra sitet selv (/admin/sveltia-cms.js). Det kopieres fra node_modules ved npm install og er ikke i git.

Sitet genbygges automatisk efter hver ændring, se nedenfor.

Deploy

  • Byggekommando: npm run build
  • Output-mappe: dist
  • Node 26 (aktiv LTS, se .nvmrc)
  • Sæt miljøvariablen SITE til det endelige domæne (bruges til kanoniske URL'er og RSS), og opdater site_url i public/admin/config.yml.

Designsystem

Se DESIGN.md og /designsystem/ på sitet.

  • Maj er Enhedslistens egen skrift (ÅBC/Kontrapunkt), udgivet under en open source-licens, der giver partiets medlemmer ret til at bruge den uændret.
  • Logo-filerne i public/images/ er konverteret fra Enhedslistens officielle .ai-filer.

Licens

Koden er udgivet under GNU AGPL v3 — se LICENSE. Enhedslistens logo og skriften Maj er ikke omfattet af AGPL-licensen.

Hosting og deploy

Repoet ligger på ITPU's egen Forgejo (https://git.itpu.dk). Sitet bygges og hostes selv:

  • Coolify bygger Dockerfile: npm ci, npm run check (alle kvalitetstjek), npm run build, og serverer derefter dist/ med nginx (nginx.conf). Fejler et tjek, fejler deployet, og den kørende version bliver stående.
  • Build-variablen SITE sætter det endelige domæne (standard https://itpu.dk).
  • Pangolin står foran og håndterer HTTPS.
  • Nye commits på main (også fra Sveltia CMS) opdages inden for et minut og deployes automatisk.

Branding af Jitsi

public/jitsi/branding.json styrer farver og logo i ITPU's Jitsi (moede.itpu.dk / møde.itpu.dk). Jitsi henter filen via DYNAMIC_BRANDING_URL, derfor sender nginx en CORS-header for /jitsi/. Farverne følger designguiden: mørkegrøn baggrund og grønne knapper (ingen rød op ad grøn).

Tekster overskrives med labels-da.json og labels-en.json (samme struktur som Jitsis lang/main.json; kun de nøgler, der skal ændres).