Yfirlit

Hugmyndin að bjórveðri kom þegar ég var með vinum í HR að læra fyrir lokapróf og það var glampandi sól úti. Okkur fannst algjör synd að við vorum fastir inni í svona góðu veðri, og fóru þeir að lýsa veðrinu sem „bjórveður.“ Þannig datt mér í hug að það væri svalt að búa til vefsíðu sem mælir með bjór eftir veðri.

Það voru tvær reglur sem ég setti fyrir þegar ég hóf verkefnið: ég má ekki harðkóða bjóra við ákveðin veður, og tveir notendur á sama stað og sama tíma verða að fá sömu bjórmeðmæli.

Pörunar líkan

Hverjum bjór er lýst með 5 eiginleikum: ferskju, hlýju, þyngd, beiskju og áfengismagni. Þær upplýsingar eru settar upp sem vigur (eða vektor) í gagnagrunni og fær hver eiginleiki gildi á milli 0 og 1. Nýr vigur er síðan fundinn fyrir veðrið sem myndi lýsa hinum fullkomna bjór fyrir það veður Með smá línulegri algebru er þá fundinn nálægasti vigur hans í gagnagrunni og er sá bjór birtur.

Kuldi ýtir t.d undir bjóra sem eru hlýrri og þyngri og hærri í prósentu, og hiti ýtir undir ferskari og léttari bjóra. Vindur, úrkoma og skýjaþekja hafa einnig áhrif á niðurstöðuna.

Bakendi

Bakendi er skrifaður í Python og notar FastAPI fyrir framenda til að sækja gögn. Þar á pörunarlíkanið heima ásamt gagnagrunns bjóranna, sem er bara CSV skjal með hverjum bjór og þeirra vigur. Með þessari uppsetningu á verkefni þar sem ekkert er harðkóðað er virkilega auðvelt að bæta við nýjum bjórum. Bara setja inn nafn, upplýsingar og smíða vigur fyrir þann bjór og bakendinn mun strax taka tillit til hans.

Í fyrri útgáfu var ég að nota API frá 2 veitum, annan fyrir veður og hinn fyrir nafn á staðsetningu. Pælingin þar var að geta cachað niðurstæður fyrir staði til að köllum á veður APAnn, en nafn á íslenskum staðsetningum vory skrýtnar eða virkuðu jafnvel ekki með íslenskum stöfum. Þannig ég breytti í Google weather API og nota Google reverse geocoding API til að fá nafn staðsetningu út frá hnitum. Ástæðan fyrir þessari breytingu var til að færi kerfið yfir í einn veitanda upp á samræmi, en hafði einnig þær afleiðingar að Google Weather API getur skilað niðurstöðum á íslensku, sem ýtti undir mitt sýn að hafa alla vefsíðuna á íslensku.

Framendi & UX

Framendi er byggður á React og Next.js. Ég er mikið fyrir minimalisma og vildi ekki að bjórveður væri að gera mikið meira en það þarf. Eitt skemmtilegt sem ég vildi hinsvegar var að bakgrunnur síðunnar breytist eftir veðri.

heiðskírt · dagur
skýjað
rigning
heiðskírt · nótt
Bakgrunnar bjórveðurs eftir veðri.

Seinna meir get ég ímyndað mér að bæta við bjórveðurspá, til að sjá hvernig bjórveður verður fram í tímann, eða að geta skoðað bjórveður á öðrum stöðum í heiminum.