Skip to content

About

All koden som leser vitnemålet ditt i Karakterportalen. Publisert for innsyn, så påstanden om at karakterene aldri forlater enheten din kan kontrolleres.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Karakterportalen: koden som leser vitnemålet ditt

Karakterportalen sier at karakterene dine aldri forlater enheten din. Dette repoet finnes for at du skal kunne kontrollere den påstanden selv, i stedet for å tro på den.

Her ligger all koden som rører vitnemålet ditt: filen leses, teksten hentes ut, karakterene tolkes, og snitt og poeng regnes ut. 1 836 linjer. Resten av nettsiden (datapipelines, sidegenerering, statistikkdatasettene) ligger i et privat repo og rører aldri karakterene dine.

Hva du kan verifisere

At det ikke finnes noe nettverkskall her. Ingen fetch, ingen XMLHttpRequest, ingen FormData. Filen din leses inn i minnet i nettleserfanen og blir der.

grep -rn "fetch\|XMLHttpRequest\|FormData\|navigator.sendBeacon" lib/

Det skal ikke gi treff.

For å være helt presis: koden laster to ting fra vårt eget domene når den kjører, nemlig PDF.js-workeren og (ved skannede PDF-er) OCR-motoren. Begge er programkode som lastes ned til deg. Ingen av dem sender noe fra deg.

Filene

Fil Hva den gjør
lib/pdf/extract-text.ts Leser PDF-ens tekstlag med PDF.js (Mozillas bibliotek, det samme Firefox bruker). Setter sammen linjer og kolonner ut fra koordinatene til hvert tekstelement.
lib/pdf/render-pdf.ts Tegner sider til bilde. Brukes bare når PDF-en er skannet og mangler tekstlag, så OCR må til.
lib/pdf/detect-level.ts Kjenner igjen om dokumentet er fra ungdomsskole, videregående eller universitet.
lib/pdf/parse-transcript.ts Tolker teksten til emnekode, emnenavn, studiepoeng, karakter og semester. Den største filen, og der de fleste særtilfellene bor.
lib/grades/calc.ts Regner ut snitt, karakterfordeling og semestergruppering.
lib/grades/admission-points.ts Regner ut skolepoeng og konkurransepoeng etter Samordna opptaks regler.
lib/grades/constants.ts Karakterskalaer og poengverdier.

Slik kan du teste det uten å lese en linje kode

  1. Flymodus. Last inn karakterportalen.no, skru så på flymodus. Dra inn vitnemålet. Du får fortsatt snittet og poengene dine. Man kan ikke laste opp noe uten nett.
  2. DevTools. F12, Network-fanen, dra inn PDF-en. Ingen request bærer fila.
  3. CSP-headeren. Siden kjører med en Content-Security-Policy der connect-src er låst til en kort liste med hoster. Selv om koden ville sendt data et annet sted, ville nettleseren blokkert det.

Hva som faktisk går ut på nettet

For å være presis, ikke absolutt:

  • Emnekode og lærested (for eksempel TDT4100 og ntnu) når du ber om nasjonal karakterstatistikk for et emne. Altså koden, aldri karakteren din.
  • Anonym, cookiefri besøksstatistikk. Sidevisninger, ingen sporing på tvers av sider.

Leser vi fødselsnummer fra et vitnemål, brukes kun fødselsåret til alderspoeng. Nummeret lagres aldri.

OCR

Er PDF-en skannet, brukes Tesseract.js, som er Tesseract kompilert til WebAssembly. Den kjører også lokalt i fanen. Worker, WASM-kjerne og språkmodellene serveres fra vårt eget domene og ikke fra et CDN, slik at CSP-en kan stå på script-src 'self'.

Om koden

Filene er kopiert uendret fra det private repoet, med tools/sync-revisjon.mjs. SYNKET.txt viser dato og hvilken commit kopien kom fra. Finner du avvik mellom det som står her og det som faktisk kjører, er det en feil vi vil vite om.

Koden er TypeScript og importerer noen typer og hjelpefunksjoner som ikke ligger her. Den er publisert for å leses og kontrolleres, ikke for å bygges frittstående.

Lisens

Publisert for innsyn og kontroll. Ikke en åpen kildekode-lisens: du har lov til å lese, sitere og revidere koden, men ikke til å gjenbruke den i egne produkter.

Vi valgte det bevisst framfor en permissiv lisens, fordi en lisens alltid kan løsnes senere, men aldri strammes inn igjen.

Fant du noe?

Åpne et issue, eller send en e-post. Gjelder det sikkerhet eller personvern, setter vi ekstra pris på at du sier fra før du publiserer det.

About

All koden som leser vitnemålet ditt i Karakterportalen. Publisert for innsyn, så påstanden om at karakterene aldri forlater enheten din kan kontrolleres.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages