EduLink door Joshtified

Schoolportaal voor vier rollen, in één installatie

De schooldag, van de eerste bel tot de laatste factuur.

EduLink houdt het rooster, de cijfers, het huiswerk, het verzuim en de gesprekken van een school op één plek. Voor leerlingen, ouders, docenten en de schoolleiding. Daarnaast plant het losse muzieklessen in, runt het een kinderopvang en schrijft het een groepsrapport voor de basisschool.

De demoschool is een verzonnen school met eigen voorbeelddata en is op uitnodiging open. Je krijgt een eigen inlog, zodat je team kan rondkijken zonder dat er iemand meekijkt.

4rollen met eigen toegang
4pakketten, één codebase
NLinterface en administratie
Eigenserver, eigen database

Eén inlog, vier blikken.

Elke rol ziet wat die rol nodig heeft, en niets daarbuiten. De server bepaalt dat bij elk verzoek opnieuw, ook als iemand zelf een adres intypt.

Leerling

ziet zichzelf
  • Rooster, cijfers en opdrachten, met wat er vandaag echt op het programma staat.
  • Een studieplanner tot het einde van de periode, met eigen studiemomenten die niemand anders ziet.
  • Woordkaarten, een focustimer en de vrije stukken van de dag.

Ouder

ziet het eigen kind
  • Per kind een eigen overzicht, met één knop om te wisselen.
  • Afwezigheid melden, een ouderavond boeken, een activiteit aanmelden.
  • Meelezen in een gesprek met een docent alleen als de mentor dat per kind goedkeurt.

Docent

ziet de eigen klassen
  • Rooster met uitval, cijfers invoeren, opdrachten en inleveringen.
  • Verzuim beoordelen, een klas berichten, huiswerk in de planner zetten.
  • Zorgsignalen voor de klas waar je mentor van bent, en niets daarbuiten.

Schoolbeheer

ziet de hele school
  • Personen, rollen, klassen, vakken en de koppeling tussen ouder en kind.
  • Een doorzoekbaar auditlog van wat er is gewijzigd, door wie en wanneer.
  • Inzicht per klas: cijfers, verzuim en openstaande zorg naast elkaar.

Dezelfde dinsdag, van 07:00 tot 17:00.

De onderdelen van EduLink zijn geen losse modules die je aan elkaar moet knopen. Ze delen één database, dus een cijfer, een absentie en een factuur gaan over dezelfde persoon.

07:00

De school opent

Beheer zet het rooster en de planner van de periode klaar. Een gewijzigd lokaal is meteen zichtbaar bij de klas die er les heeft.

Schoolbeheer
08:10

De eerste bel

De leerling ziet het uur van vandaag, de docent de klas, de ouder het rooster van het kind. Dezelfde les, drie keer op maat.

Leerling, docent, ouder
08:45

Verzuim

Te laat, ziek of uit de klas gestuurd: het zijn drie verschillende dingen en de docent kiest welke. De mentor beoordeelt, de ouder ziet de uitkomst bij het kind.

Docent, mentor
10:30

Een cijfer

Eén cijfer verandert het gewogen gemiddelde en de trend. Leerling en ouder zien hetzelfde cijfer met dezelfde weging, en de docent ziet wat er nog nodig is voor een doelgemiddelde.

Leerling, ouder
12:15

Lunch

Het menu van vandaag staat op het dashboard, met de allergenen en het vleesalternatief. Een klas die elders eet krijgt zijn eigen regel, en een gesloten kantine zegt dat.

Iedereen
14:00

De mentor belt aan

Een zorgsignaal opent het kindrecord: gemiddelde per vak, elke absentie en de notities van de mentor op één scherm.

Docent, schoolbeheer
15:15

De muziekschool

Een vaste reeks van acht weken komt in één keer in de agenda. Wie binnen de termijn afzegt, ziet de les van de leskaart afgaan; wie te laat afzegt, betaalt hem.

Lessen
16:30

Ophalen

De opvang registreert vertrek, met de tijd erbij. Het dagboekje van die dag gaat naar de ouder die erbij hoort, en naar niemand anders.

Kinderopvang, ouder
17:05

De maand

De maandstaat telt de geregistreerde uren op bij de contracturen, maakt de factuur met PDF en betaallink klaar en verstuurt hem met één knop.

Schoolbeheer

Vier pakketten, één installatie.

Een school kiest bij het opzetten welk pakket hij runt: school, basisschool, muziekles en bijles, of kinderopvang. Later wisselen kan, zonder gegevens te verliezen.

Elke rol heeft een eigen inlog. Berichten, nieuwsbrieven, het lunchmenu, activiteiten, huisregels en studiehulp zitten in alle vier de pakketten.

Wat er per pakket in zit. Een streepje betekent: dat onderdeel bestaat niet in dat pakket.
Onderdeel School Basisschool Muziekles Kinderopvang
School en basisschool
Rooster met uitval en lokaalwijzigingen
Cijfers, weging en trend per vak
Opdrachten met inleverbevestiging
Verzuim registreren en beoordelen
Studieplanner tot het einde van de periode
Zorgsignalen en het kindrecord
Ouderavonden met boekbare momenten
Bibliotheek en bronnen per klas
Muziekles en bijles
Losse en terugkerende lessen zonder klas
Leskaarten met een saldo dat klopt
Proeflessen met een vervolg
Factuur per leerling per maand
Kinderopvang
Kinderen, dagdelen en het bord van vandaag
Dagboekje per kind
Contracten, maandstaat en factuur
Groepen met plekken en personeelsplanning
Online aanmelden met wachtlijst
Kinddossier met documenten
Basisschool
Groepsrapport met verhaal en niveau per vak

Een onderdeel dat niet bij het pakket hoort, verdwijnt uit de navigatie, en de server antwoordt 404 als iemand het adres zelf intypt. Andersom is de opvang of de lesadministratie buiten dat pakket niet bereikbaar, ook niet voor een beheerder van een school.

Lessen die geen klas nodig hebben.

Voor de muziekschool, de bijlespraktijk of de zwemschool: leerlingen komen één of twee keer per week, betalen per maand en hebben geen rooster van vijf dagen. EduLink rekent in lessen en in geld, niet in klassen.

Wat een les is, beslis jij. Op locatie, online of bij de leerling thuis. EduLink gaat over de administratie eromheen, niet over de inhoud van de les.
Leskaarten met een echt saldoTien lessen op een kaart, drie gebruikt, zeven over. Een les telt mee bij aanwezig, afwezig of een afmelding binnen de termijn, zodat het saldo nooit losraakt van de administratie.
Een weekreeks in één keerEen vaste reeks zoals dinsdag 15:00 in studio 1 zet acht weken in één keer neer, met de vakanties eruit. Eén les verplaatsen kan daarna nog steeds.
ProeflessenEen proefles is een eigen status, geen gewone les. Je ziet wie er nog geen vervolgles heeft, zonder een tweede lijstje ernaast.
Facturen per maandPer leerling één factuur met regels, een PDF, een mail, een herinnering en een betaallink die de school zelf instelt. EduLink int niets.
Aanwezigheid per leerlingRegistreren is één klik; een correctie komt met een reden in het auditlog. Dezelfde telling telt door in de maandstaat.

Een kinderopvang draait om uren, en om wie er is.

Kinderen zonder eigen account, ouders met een eigen inlog, en een administratie die klopt met wat er echt is gebracht en gehaald. Inclusief de dingen die opvangorganisaties jaarlijks moeten kunnen aantonen.

De maandstaat is een registratie, geen toeslagberekening. Kinderopvangtoeslag rekenen is een aparte, juridisch gevoelige som. Die zit er niet in, en dat zeggen we liever vooraf.
Het bord van vandaagGepland, nu aanwezig, nog niet gebracht en al opgehaald. Aankomst en vertrek zijn te corrigeren, met de reden erbij.
Dagboekje per kindEen notitie per kind per dag. De ouder ziet alleen het dagboekje van het eigen kind; de rest van de groep blijft van de groep.
Contracten en maandstaatUren en tarief per contract. De maandstaat telt de geregistreerde uren op bij de contracturen en levert een PDF en een CSV.
Groepen met plekkenEen groep heeft een locatie en het aantal plekken waarvoor de organisatie is geregistreerd. Is de groep vol, dan weigert de server de plaatsing, ook via een aanmelding.
PersoneelsplanningPer dag wie in welke groep werkt, met verlof en ziekte apart. De planning noemt de groepen waar kinderen staan maar niemand is ingeroosterd.
Online aanmeldenEen deelbare link, aan en uit te zetten. Geen medische gegevens, een honeypot en een limiet per adres. Uit een openbaar formulier komt nooit een account.
Dossiers per kindDocumenten met soort, zichtbaarheid en een geldigheidsdatum. Ouders zien alleen wat is vrijgegeven; medische stukken blijven bij het personeel.
Het ouderportaalDe ouder ziet de opvang van vandaag met breng- en haaltijd, de week, het dagboekje en de maandstaat. Afmelden en extra opvang vragen kan, als aanvraag die de opvang goedkeurt.

Een rapport dat je kunt lezen.

In plaats van een gemiddelde per vak: een verhaal per kind en een niveau per vakgebied, in de taal die de school al gebruikt. Voor de hele groep in één keer, met een PDF die je kunt printen of mailen.

Een rapport is geen cijferlijst. De cijfers blijven in Resultaten staan. Het groepsrapport zegt wat een kind nodig heeft, en dat is iets anders.
Een verhaal per kind, per periodeGeschreven door de leerkracht, bewaard bij het kind. Niet gegenereerd uit cijfers, want een rapport gaat over meer dan rekenen.
Niveau per vakgebiedOnder, op of boven niveau, met een korte toelichting per vak. Dezelfde schaal voor de hele groep, zodat je ze naast elkaar kunt leggen.
PDF, en het eigen kindDe groep als PDF voor de map, en per kind hetzelfde rapport voor de ouder die erbij hoort. Een ouder ziet nooit een ander kind.

Zo ziet het eruit.

Drie schermen uit de demo-installatie: de dag van een leerling, de lesadministratie van een muziekschool en het beheer van een school. Dezelfde software, drie pakketten.

Dashboard van een leerling in EduLink: gemiddelde, openstaande opdrachten, aanwezigheid, het volgende uur, lessen van vandaag en recente cijfers.
De dag van een leerlingCijfers, opdrachten, absentie en berichten op één scherm. De strook bovenaan zegt wat er vandaag echt speelt, niet wat er ooit is gebeurd.
De lesadministratie van een muziekschool: één proefles van vandaag, één leerling, en de tabbladen voor reeksen, leskaarten, facturen en proeflessen.
Lessen, op de dag zelfEén proefles, één leerling, en de knop om de status te zetten. Rechts de weg naar reeksen, leskaarten en facturen.
Schoolbeheer in EduLink: tellers voor personen, klassen en materialen, en een tabel met personen, rollen en de koppeling aan een kind.
BeheerPersonen, rollen, klassen en de koppeling tussen ouder en kind. Elke wijziging komt in het auditlog, met naam en tijd.

Wat er bewust niet in zit.

Een belofte die niet klopt kost een school meer dan een ontbrekende knop. Dit zit er niet in, en dit is waarom.

Online betalen

EduLink int niets. De school zet haar eigen betaallink op de factuur, bij de bank of de betaaldienst die ze al gebruikt. Zo blijft het geld waar het hoort en hoeft er geen betaalprovider bij.

Een boekhoudkoppeling

Geen koppeling met een boekhoudpakket. De facturen komen als PDF uit en de uren als CSV, en de boekhouder doet de rest. Dat is saai, en het werkt met elk pakket.

Kinderopvangtoeslag

De maandstaat registreert uren en tarief. De toeslag berekenen hangt aan regels die per jaar veranderen, dus dat blijft buiten de software.

Medische gegevens op grote schaal

Een kinddossier kan een medische notitie bevatten, maar grootschalig gebruik daarvan vraagt nog een eigen privacytoets voordat het bij echte gezinnen draait. Liever dat dan doen alsof het al af is.

Een open API naar buiten

Geen koppelvlak waar derden bij kunnen. De uitvoer is CSV en PDF, de rest blijft binnen de installatie. Wie iets wil koppelen, doet dat op de database of via een export.

Een app in de winkel

EduLink is een website. Op een telefoon werkt hij en de leesinstellingen volgen het account, maar er is geen app om te installeren en geen meldingenpush.

Toegang, en wie hem geeft.

Een schoolportaal bevat namen, cijfers en zorgnotities. De rol van de bezoeker wordt bij elk verzoek op de server gecontroleerd, niet door het scherm verstopt.

Sessies

Een sessie is een willekeurig token in een HttpOnly-cookie; de server bewaart alleen de hash. Uitloggen, een wachtwoordwijziging of een deactivering trekt de sessie direct in.

Wachtwoorden

Bcrypt met kosten 12, minimaal tien tekens met een letter en een cijfer, en een slot na acht foute pogingen. Een dummy-hash voorkomt dat de reactietijd verraadt of een adres bestaat.

Tweestaps

Docenten en beheerders kunnen TOTP gebruiken, met acht herstelcodes. In productie staat het verplicht aan; een demo-installatie laat het bewust uit zodat een demo-account kan inloggen.

CSRF en limieten

Elke wijziging vraagt een token per sessie, cross-origin verzoeken worden geweigerd, en inlogpogingen zijn beperkt per adres en per account. In productie is dat niet uit te zetten.

Bestanden

Uploads worden op type en inhoud gecontroleerd, krijgen een willekeurige naam en gaan alleen door een geautoriseerde route naar buiten. Nooit rechtstreeks uit een openbare map.

Geen caching

Elke API-reactie is private en no-store, zodat een gedeelde computer in een klaslokaal geen cijfers van een vorige bezoeker toont.

Op je eigen server, met je eigen data.

EduLink is geen dienst waar de gegevens van een school naartoe gaan. Het is een Node-app met een PostgreSQL-database, die draait waar de school hem wil hebben: bij de eigen leverancier, in een Nederlandse cloud of op een eigen kast.

Dertig dagen voor het einde van een licentie waarschuwt de balk bovenin. Daarna is er dertig dagen respijt, en dan wordt de app alleen-lezen: kijken, zoeken en exporteren blijven werken, schrijven niet. Inloggen en een nieuwe sleutel invoeren kunnen altijd.
  1. Een server. Ubuntu 24.04 in Nederland, 1 vCPU en 2 GB is genoeg voor een school. Node 22 en PostgreSQL 16.
  2. De app. npm ci, een .env met de origin, de database en een tweestaps-sleutel, dan bouwen en starten onder systemd. De repo heeft een checklist met elke stap.
  3. De licentie. Een sleutel uit het eigen licentieregister, offline gecontroleerd met een publieke sleutel. De app belt nooit naar de verkoper om te vragen of hij mag draaien.
  4. De eerste keer. Zonder sleutel is de installatie een complete demo met een verzonnen school. Na het invoeren van een sleutel ontstaat een lege school voor de klant; de demo blijft staan als voorbeeld om naar te kijken.
  5. De back-up. Database en uploads horen samen in de back-up. Het auditspoor en de sessies zitten in dezelfde database, dus een restore zet de hele toestand terug.

Wat het kost.

Prijzen staan niet in de software en niet op deze pagina. Ze hangen af van het aantal leerlingen, de pakketten en of de school de server zelf heeft. Wat er in een voorstel staat, is wel altijd hetzelfde rijtje:

  • De licentie per jaar, met updates.
  • De installatie, op je eigen server of bij ons.
  • De invoer van de eerste leerlingen, docenten en klassen.
  • Een demoschool met je eigen gegevens, zodat het team kan oefenen voordat het echt telt.
info@joshtified.com

Je krijgt antwoord van de maker, niet van een verkoopafdeling. Noem het aantal leerlingen en welk pakket je overweegt, dan is het eerste gesprek kort.

Mail over EduLink