- Ideen kom da jeg snakket med en venn som jobber på polet. Han hadde en visjon om en internasjonal pris-sammenligningstjeneste for alkoholholdige varer, forteller utvikler Mats Løvstrand Berntsen til kode24.
- Jeg hadde som mange andre informatikk-studenter levert oppgaver som brukte Vinmonopolets produkter tidligere, blant annet en nettside som ligner fælt på alkiskalkis.no, fortsetter han.
Disse prosjektene baserte seg på nedlasta CSV-filer, som begrensa mulighetene for blant annet oppdatert prissammenlikning. Men da Berntsen fikk høre at polet hadde fått sitt eget API, virka Prisjakt-aktige tjenester mer realistisk - og han starta på det som i dag heter Spritjakt.no.
- Ideen er at Spritjakt skal være alkoholverdens svar på Prisjakts prishistorikkfunksjon. Selv om man nok ikke vil se de samme variasjonene i pris som man gjør på andre typer produkter, er det både nyttig og interessant å kunne se hva en vinflaske har kostet tidligere, forteller Berntsen.
- Det er en flott mulighet til å finne vin og øl man ikke ellers ville lagt merke til, og kanskje gjøre et varp i samme slengen.
Serverløst hos Google
Det er ulovlig med annonserte tilbud på alkohol i Norge. Men priser kan selvfølgelig justeres - og det gjør de også, blant annet på Vinmonopolet, selv om de ikke viser deg det.
Spritjakt.no henter inn prisene på polvarer fortløpende, så den kan vise deg hvordan de endrer seg. For eksempel at du nå kan kjøpe en flaske I Custodi Alnus Etna Rosato fra 2018 til 179,90 kroner - nylig satt ned fra 259,90 kroner.
Berntsen, som til daglig jobber som backend-utvikler hos Innovasjon Norge, skryter av polets API-er, som du finner dokumentasjon for på api.vinmonopolet.no.
- Spritjakts backend er serverløs, og drives av et par Google Cloud Functions i Node.js, som daglig ber Vinmonopolets API om produktene som har endret seg det siste døgnet. Her filtreres produktene uten prisendring ut, mens de med ny pris oppdateres i min database, forteller Spritjakt-utvikleren.
«Men det er veldig enkelt å komme i gang med, som er veldig forlokkende når man er ivrig og utålmodig.»
Databasen er i dette tilfelle sanntidsdatabasen i Googles Firebase-pakke.
- Den fungerer veldig godt til enklere nettsider og applikasjoner, men du vil fort merke at den er begrensa om du trenger mer avanserte spørringer eller lignende. Men det er veldig enkelt å komme i gang med, som er veldig forlokkende når man er ivrig og utålmodig, smiler Berntsen.
Hosting "en lek"
Framsida til Spritjakt er skrevet i React, med drahjelp fra create-react-app, og stilet med tradisjonell CSS, med drahjelp fra react-transition-group for animasjoner og nivo for grafer.
- Jeg er helt forelska i CSS-Grid, og har brukt det jevnt gjennom prosjektet, forteller Spritjakt-utvikleren.
- Hele prosjektet hostes i Google Firebase. Jeg hadde noe erfaring med å sette opp prosjekter der fra tidligere. Med en React-frontend og serveløs backend er det en lek å bruke Firebase CLI til utvikling, debugging og publisering. Man kommer også langt på forbrukskvotene som følger med den gratis Spark-planen deres.
Vil du se på kildekoden til Spritjakt? Berntsen har lagt alt ut på Github, i anledning artikkelen!
Juridisk grenseland
- Hva er planene videre for Spritjakt?
- I første rekke tror jeg det er på høy tid med en del kodeopprydding og refaktorering. Sånt uteblir jo ofte i kampens hete når det viktigste er å få ting til å fungere, svarer Berntsen.
Bjørn Jarle håper PWA-en trailguide.net blir populær i sommer
I tillegg er planen å skrive om hele applikasjonen til Typescript, og å jobbe med søkefunksjonen. Sistnevnte skal være noe vrient med Firebase sin realtime-database.
- Norge har veldig strenge lover når det kommer til ting som kan kalles alkoholreklame. Har du gjort deg noen tanker rundt jussen?
- Jeg har hatt et par øyeblikk hvor jeg har stresset og kaldsvettet over hvorvidt nettsiden faktisk er lovlig. Jeg er jo ikke jurist, men tenker at den i beste fall er i grenseland med tanke på norsk lov. Formålet bak nettsiden er avgjørende, og så lenge det er en nøktern fremstilling av prishistorikk, tenker jeg at det ikke direkte er for å fremme salg av alkohol, svarer utvikleren, som ikke er alene om å bruke API-et til slikt.
- Etter å ha lest gjennom vilkårene til Vinmonopolet og bruk av deres API, har jeg i alle fall ikke sett at det er noen problemer med bruken av API-et.
Jeg drukner i uferdige hobbyprosjekter
Å starte et hobbyprosjekt? Null stress. Å gjøre det ferdig? Klin umulig. 🤷