Sjálfboðaliðakerfi Andrésar Andar leikanna
Umsjón sjálfboðaliða á elsta skíðamóti barna á Íslandi
Frá PIN-númeri til úthlutunar á sekúndum — kerfi í rekstri fyrir elsta skíðamót barna á Íslandi. Um hundrað sjálfboðaliðar, sautján greinar, 96 próf og engar tölvupóstkeðjur.
“Besta sjálfboðaliðakerfið er ósýnilegt sjálfboðaliðanum en gagnsætt skipuleggjandanum.
Áskorunin
Að samhæfa um hundrað sjálfboðaliða á þriggja daga skíðamóti með sautján greinum hafði hvílt á símtölum, töflureiknum og minni skipuleggjendanna. Hlutverkum var úthlutað í höndunum, árekstrar sáust ekki fyrr en þeir komu upp uppi í fjalli og ekkert eitt yfirlit var til yfir það hver væri hvar. Sjálfboðaliðar skráðu sig án þess að vita hvort vaktin og hlutverkið sem þeir helst vildu væru enn laus. Umsjónarfólk hafði ekkert stjórnborð — bara innhólf sem stækkaði.
Nálgunin
PIN-varið skráningareyðublað safnar því hvenær fólk getur mætt, eftir degi og vakt, og kallar svo á eitt PostgreSQL-RPC miðlaramegin sem stofnar sjálfboðaliðasniðið, skráir umsóknina, úthlutar sjálfkrafa í laus hlutverk og ver gegn tvískráningu — allt í einni ferð. Stjórnborð umsjónarfólks sýnir mönnun hverrar greinar jafnóðum, heldur utan um verkefnaborð matsalarins og sendir hóppóst gegnum Resend. Stöðuskjáirnir uppi í fjalli nota þröngt RPC sem aðeins les, svo keppnisstöðvar sjái mönnunina án þess að hafa aðgang að stjórnborðinu. Kóðanum er skipt upp og hann hlaðinn seinkað, sem heldur skráningareyðublaðinu léttu á farsímaneti.
Niðurstöður
Mótið
Andrésar Andar leikarnir eru elsta skíðamót barna á Íslandi. Mótið er haldið árlega í Hlíðarfjalli á Akureyri og var haldið í fimmtugasta sinn árið 2026. Þrír keppnisdagar, sautján greinar í alpagreinum og um hundrað sjálfboðaliðar gera það að einu umfangsmesta íþróttamóti utan höfuðborgarsvæðisins sem rekið er á sjálfboðaliðum.
Að halda mótið krefst þess að manna hlutverk við hvert hlið og hverja marklínu, fylgjast með því hverjir eru lausir hvern dag, gefa öllum að borða í matsalnum og halda tugum skipuleggjenda samstilltum uppi í fjalli. Árum saman fór sú samstilling fram í símtölum, töflureiknum og góðvilja.
Skráningarferlið
Sjálfboðaliðar opna eyðublaðið með lykilorði mótsins — lítill þröskuldur, ekki öryggisgirðing. Þaðan safnar eyðublað í þremur flipum (fimmtudagur, föstudagur, laugardagur) óskum um vaktir fyrir og eftir hádegi. Hverri vakt fylgir val á hlutverki, og hvaða hlutverk standa til boða ræðst af samhenginu — í leikjabrautinni eru aðrir kostir í boði en á venjulegum brekkustöðvum. Sannprófun með Zod og íslenskum villuskilaboðum grípur ófullnægjandi skráningar áður en þær komast til miðlarans.
Við innsendingu keyrir eitt submit_volunteer_registration RPC-fall inni í PostgreSQL-færslu: stofnar eða uppfærir sjálfboðaliðasnið, setur inn skráningarfærslu, úthlutar sjálfkrafa í laus hlutverk og ver gegn tvískráningu. Hafi RPC-fallið ekki enn verið sett upp í umhverfinu, grípur biðlarinn til eldri leiðar og skrifar beint — þannig brýtur gagnagrunnsfærsla aldrei skráningareyðublað sem er í notkun.
Að skráningu lokinni birtir staðfestingarskjárinn yfirlitsspjald, QR-kóða inn í WhatsApp-hóp sjálfboðaliðanna og PDF-skjal með úthlutuninni sem hægt er að hlaða niður.
Stjórnborð umsjónarmanna
- Greinastjórnun — stofna og breyta greinum, tengja við þau hlutverk sem þarf og sjá mönnunarstöðuna eftir vöktum.
- Sjálfboðaliðaskrá — leitanlegt yfirlit með ítarupplýsingum í sama glugga, handskráning fyrir þá sem mæta óskráðir og ársía yfir sögu margra ára.
- Verkefnaborð matsalarins — minnispunktar hvers dags um matseld og mat fyrir sjálfboðaliðana.
- Greinaskýrslur — minnispunktar hvers dags og mönnunaryfirlit í prentsniði til nota uppi í fjalli.
- Hóppóstur — mótsfréttir sendar á alla skráða sjálfboðaliða gegnum Resend, auðkennt í Supabase Edge Function svo lykillinn fari aldrei af miðlaranum.
Opinberir stöðuskjáir
Hver keppnisstöð hefur sína vefslóð sem sýnir mönnunina jafnóðum — hverjum hefur verið úthlutað á hana og á hvaða vöktum. Þessar síður kalla á get_public_tournament_assignments, þröngt RPC sem aðeins les og skilar nákvæmlega þeim reitum sem stöðuskjárinn þarf og engu sem krefst auðkenningar. Síðurnar eru gerðar til að hlaðast hratt í síma þar sem sambandið uppi í fjalli er stopult.
Arkítektúr
- Framendi — React 18, TypeScript (strangur hamur), Vite 8, React Router v6 (HashRouter fyrir kyrrstæða hýsingu), Tailwind CSS, shadcn/ui, React Hook Form + Zod, TanStack Query, Lucide táknmyndir, jsPDF.
- Bakendi — Supabase PostgreSQL með níu töflum og fullri Row Level Security. Þrjú föll miðlaramegin sjá um skráningu, opinberan lestur úthlutana og samræmingu símanúmera.
- Kóðaskipting — allar fjórtán leiðir stjórnborðsins hlaðast seinkað með
React.lazy(). Skráningarknippið helst lítið fyrir þá sem koma í síma. - Samfelld smíði og útgáfa — GitHub Actions keyrir tagaprófun, lint og smíði við hverja ýtingu. Vercel birtir þegar greinum er rennt inn á main.
- Prófanir — 83 enda-í-enda-prófanir með Playwright í sjö prófskrám, keyrðar á vefinn í rekstri. Þrettán samþættiprófanir með Vitest ná yfir skráningarrökin og varaleiðina þegar RPC-fallið vantar.
Gagnagrunnsskema
Níu töflur með keðjutengdum venslum og fullri RLS-stýringu:
tournaments→events→event_roles→assignmentstournaments→volunteer_registrations→profilestournaments→canteen_notes,event_reports,tournament_implementation_notes
Einkvæmniskorða á úthlutanir kemur í veg fyrir tvítekningar, líka þegar margar skráningar berast á sama augnabliki. Fallið normalize_phone hreinsar sniðið áður en flett er upp, svo að „+354 5551234“ og „5551234“ vísa á sama sjálfboðaliðann.
Tæknistaflinn
Tenglar og heimildir
Lærdómar
- Eitt RPC-fall miðlaramegin, sem gerir skráninguna óskipta, útrýmdi kapphlaupinu sem varð þegar tveir sjálfboðaliðar sendu inn á sama augnabliki og skrifað var biðlaramegin — færslan gengur annaðhvort í gegn í heild eða gengur öll til baka.
- Hlutverkalisti sem ræðst af samhengi — hliðvörður og brautarstarf falla burt á vöktum í leikjabrautinni — fækkar skráningarvillum án þess að nokkur þurfi að útskýra muninn. Eyðublaðið kann reglurnar.
- Þröngt opinbert RPC fyrir stöðuskjáina er traustara en að endurnýta fyrirspurnir stjórnborðsins — það skilar nákvæmlega því sem skjáirnir uppi í fjalli þurfa og engu sem krefst auðkenningar.
- Varaleiðin — reyndu nýja fallið, farðu í eldri skrifleiðina sé það ekki til — gerði útgáfu nýrra gagnagrunnsfærslna áhættulausa. Eyðublaðið hélt áfram að virka meðan fallið var sett upp.
- Seinkuð hleðsla allra stjórnborðsleiða hélt knippi sjálfboðaliðanna litlu — skráningin var áfram snörp, líka á farsímaneti uppi í fjalli.