Skip to content

hackathon.webbu.se

Otto Roming edited this page Sep 21, 2026 · 7 revisions

Hackathon-sidan används under WebbUs årliga Hackathon-evenemang.

Hackathonet äger oftast rum tidigt på vårterminen och pågår under en helg. WebbU bjuder in studenter intresserade av webbutveckling, som får chansen bilda grupper och under helgen utveckla nytänkande hemsidor och appar.

Hemsidan visar information om evenemangets olika faser, tillåter deltagare att rösta fram ett tema och skapa projekt som sedan kan röstas på i slutet av evenemanget.

Viktigt

Applikation är utvecklad med python 3.12.8.

.env för produktion:

DJANGO_SETTINGS_MODULE=app.settings_production
UID=1002
GID=1002

Att köra docker för första gången

Innan du bygger appen för första gången behöver du skapa ett Docker-nätverk:

sudo docker network create django_network

Kör i utvecklingsläge

Skapa en virtuell miljö. Kom ihåg att köra med rätt Python-version.

python -m venv .venv

Aktivera på Windows

.\.venv\Scripts\activate

Aktivera på Linux

source .venv/bin/activate

Installera kraven för utveckling

pip install -r requirements-dev.txt

Migrera ändringar för databas- eller modelländringar

python manage.py migrate

Detta kommando behöver bara köras en gång per venv. Det motsvarar ett administratörskonto.

python manage.py createsuperuser

För att köra Django-servern

python manage.py runserver

Applikationer

Events

Denna app är till för att hantera allt som rör evenemang och deras teman. Den har vyer för startsidan och alla evenemangsfaser.

Members

Denna app är till för att hantera allt som rör användare. Den har vyer för inloggning och redigering av profiler, bland annat annat användarrelaterat.

Projects

Denna app är till för att hantera allt som rör projekt. Den har vyer för att skapa projekt och bjuda in användare, bland annat projektrelaterat.

Schedule

Denna app är till för att hantera allt som rör schemat. Administratörer kan lägga till aktiviteter för besökarna.

Bruksanvisning

Detta avsnitt beskriver den faktiska användningen av webbsidan när den är i drift. Det inkluderar förutsättningar som behövs för att sätta ihop ett evenemang, hur man går vidare genom faserna med mera.

Förutsättningar

  • Skapa ett superanvändarkonto för adminpanelen (inte teoretiskt nödvändigt, men mycket användbart).

Att sätta behörigheter

Att sätta behörigheter för användare är viktigt. Vilken personal-nivå-användare som helst kan tilldelas via Django-adminpanelen. Gå in på användarinställningarna och där finns en kryssruta för "staff" eller "superuser". Sätt dessa som du vill – de är i princip likvärdiga, med skillnaden att superanvändaren har alla behörigheter medan personalanvändaren har de flesta, men båda behövs för underhåll och tillsyn av evenemanget.

[!IMPORTANT] I den nuvarande versionen måste du manuellt tillåta användare att rösta på projekt. Du behöver alltså verifiera användare manuellt och ge dem behörighet via alternativet "can vote" som finns i användarinställningarna för varje användare. Det är detta dina personal-nivå-användare behövs för.

Att köra evenemanget/faserna

När ett evenemang skapas sätts vissa datum för evenemangets olika faser. Den nuvarande uppsättningen har 5 faser, med ytterligare en "dold" mellanfas strax innan resultaten släpps. Detta avsnitt förklarar vad var och en av dessa faser är tänkta att vara, hur man går vidare till nästa fas med mera.

Att byta fas

Faserna på Hackathon-webbsidan byts baserat på datum och tid. Framflyttningen/bytet av faser sker alltså vid de tider som satts i inställningarna för evenemanget i Django-adminpanelen. Med det sagt visar detta vikten av att en tidigare fas alltid kommer före en senare fas, annars kommer webbsidan att bete sig konstigt.

För att gå vidare till nästa fas sätter du alltså datum och tid i Django-adminpanelen, och webbsidan går vidare genom faserna vid den satta tiden. Det innebär att om du vill tvinga fram ett fasbyte ändrar du datumet för den fasen till aktuellt datum och tid. Det enda undantaget från detta är den "dolda" mellanfasen innan resultaten släpps, men det förklaras i det avsnittet istället.

Fas 1 – Temaförslag

Tanken bakom denna fas är att användare ska kunna föreslå teman som senare kan röstas på för att avgöra vad evenemangets tema ska handla om. Sätt datumet för denna fas till när du vill att folk ska kunna börja föreslå teman, vanligtvis vid släppet av evenemangsinformationen, men det är upp till dig.

Fas 2 – Temaröstning

Denna fas hanterar röstningen för de tidigare föreslagna temana. Användarna kan rösta på vilket föreslaget tema som helst. Startdatumet för denna fas är när du vill gå vidare från att folk kan föreslå teman till att röstningen faktiskt börjar. OBS – detta kommer att stänga av temaförslag, så gå inte vidare till denna fas innan du faktiskt har några temaförslag att rösta på.

Fas 3 – Projektstart

Nu kör vi! Detta signalerar starten av evenemanget och tillkännager tävlingens start. Sätt detta datum till när du vill att röstningen ska stanna och tävlingen börja, och – kanske uppenbart – evenemanget att starta.

Fas 4 – Projektröstning

Detta signalerar slutet på kodandet och bör förmodligen aktiveras samtidigt som presentationer av projekten hålls, eller strax efter dem. Inget mer avancerat händer här, det tillåter bara alla användare att rösta på alla aktiva projekt, så hur du kopplar ett projekt till en presentation får presentatörerna sköta på valfritt sätt – det görs inte på webbsidan.

Fas 5 – Presentation av resultat

Detta är fasen där resultaten presenteras för alla användare. Här kommer en brasklapp in: den innehåller en "dold" mellanfas som tillåter alla användare markerade som personal eller superanvändare i adminpanelen att se resultaten, medan andra användare inte kan se dem. Detta görs för att personalen ska kunna presentera resultaten under en presentation innan de släpps offentligt.

När du vill släppa resultaten offentligt går du in i adminpanelen, in under inställningarna för det aktiva evenemanget i kategorin "Events", där du hittar en kryssruta för "Release results". Markera denna så släpps resultaten offentligt på webbsidan, vilket markerar slutet på hela evenemanget.

Clone this wiki locally