Skole projekt
Marts 2024
Opgavebank til industriens uddannelser
En full-stack undervisnings platform bygget med svelteKit og postresql.
Et undervisnings system, hvor undervisere kan oprette projekter og ressourcer til eleverne på data og kommunikations uddannelserne.
01
Features
Systemet indeholder et email og kode login system med email bekræftelse via mail, og funktioner til at nulstille glemte adgangskoder. Hvis man er underviser eller administrator kan man logge ind. Som underviser kan man oprette projekter op lægge dem op på opgavebanken. Systemet understøtter også af filer og billeder via nodes filsystem.
02
Teknisk forklaring
Systemet er bygget med SvelteKit, som er et full-stack framework. Sidens benytter sig af en kombination af client,og server-side rendering for at optimere hjemmesidens hastighed. Projektet bruger Postgresql som primære database og jeg er lavet et ER-diagram over databasen.
03
Middle-ware / Hooks
Jeg har valgt at benytte mig af hooks til at administrere “user state” i systemet. Før hver transaktion til backenden, tjekker jeg for om brugeren er logget ind, ved at kigge på JWT token som bliver gemt i cookies ved login. Hvis brugerens er logget ind, henter siden de seneste data fra brugeren og gemmer det i en “locals” variable som er synlig overalt på backenden. På den måde kan jeg altid se om en bruger er logget ind og på adgang til oplysniger om brugeren.
04
Backend form validation
Jeg bruger SvelteKit actions til alle forms på siden. Form data’en bliver herefter sendt til backend’en hvor den bliver valideret. F.eks. at adgangskoden er mindst 8 tegn. Hvis der er fejl i datatens format bliver koden form datat’en sendt tilbage til klienten, sammen med fejl meddelelser som bliver vist under det input med forkert data. Dette gør det umuligt at snyde systemet og uploade forkert data i databasen.
05
Sentry
Hele systemet er overvåget af sentry. Det vil sige at hver gang der sker en fejl i systemet - forhåbentlig aldrig - bliver det automatisk send til sentry med en masse relevante information. Dette sker på både front- og backend, og gør det super nemt at finde og rette fejl i koden.
Links