StudyGroup application

StudyGroup

Hopp til teknisk beskrivelse

Om prosjektet

StudyGroup er en mobilapplikasjon som har som hensikt å motivere til samarbeid og bistand mellom studenter på tvers av sosiale nettverk, studieretninger og studieår. Studenter kan legge ut innlegg med spørsmål om fag og oppgaver, eller annet de skulle ønske bistand med, innenfor fagene de tar. Kun studenter som tar samme fag kan se innleggene de er kategorisert under. Andre studenter på plattformen kan se disse innleggene, og svare om de kan hjelpe, ønsker hjelp med det samme, eller ingen av delene. Når noen svarer at de kan bistå, blir en gruppe automatisk dannet med de som ønsker hjelp og de som kan bistå med hjelp. De får da tilgang til en anonym møtefokusert chat hvor de kan avtale når og hvor de møtes. Den er anonym for å rette fokus mot bistand, samarbeid, og gruppedannelse fremfor hvem som deltar.

Hjem-siden til studygroup

Språk og teknologier

  • Kotlin
  • Android studio
  • Jetpack compose
  • SQLite
  • Firebase
  • Golang

Roller og bidrag

  • Product manager
  • Utforming av UI design
  • Backend system design
  • Backend utvikling
  • Frontend utvikling
  • Planlegging av UI-komponenter
  • Design av database-struktur
  • Prosjektstyring
Hjem-siden til studygroup
Visning av egne inlegg
Login skjerm til StudyGroup
StudyGroup registreringsside 1
StudyGroup registreringsside 2

Teknisk

Arkitektur - hele systemet

StudyGroup består av en Android-applikasjon, en lokal SQLite-database, et REST API skrevet i Golang, og Firestore. Applikasjonen håndterer CRUD-operasjoner mot den lokale SQLite-databasen direkte, mens kommunikasjon med Firestore går utelukkende gjennom API-et. Selv om Firestore tilbyr en native SDK for direkte klientintegrasjon, rutes all kommunikasjon gjennom API-et for å sikre konsistent brukeridentifisering og tilgangskontroll. Autentisering håndteres via JWT, som benyttes for klient-til-API-kommunikasjon. Innlegg og brukerdata persisteres i Firestore, mens meldinger lagres både lokalt i SQLite og i Firestore. API-et har i tillegg ansvar for operasjoner som involverer flere brukere, som opprettelse av studiegrupper og håndtering av tilhørende oppføringer i Firestore.

Arkitektur - API

API-et er skrevet i Golang med net/http, og bruker en egenutviklet router som organiserer ruter i et binary tree. Hver rute er koblet til en middleware-chain, hvor relevant middleware som autentisering kjøres før requesten når controlleren. Controlleren fungerer som en orkestrator og delegerer business logic til gjenbrukbare service-funksjoner. Det er service-funksjonene som håndterer kommunikasjon med Firestore direkte, og returnerer resultatet tilbake til controlleren.

Arkitektur - UI

Applikasjonen er skrevet i kotlin og bygget med Jetpack Compose, hvor navigasjon håndteres via NavHost. Ruter som krever innlogging er beskyttet basert på om brukeren har en gyldig access token, som blokkerer tilgang til skjermer som krever autentisering. MainActivity har ansvar for å hente sensordata og global styling, som sendes videre som parametere til relevante skjermer. Hver skjerm eier sin egen state og bruker delte, gjenbrukbare komponenter, layouts og utility-funksjoner. Layout-komponenten importeres per skjerm fremfor på NavHost- eller MainActivity-nivå, da ikke alle skjermer bruker den.