Rakkaat! Kuten osa seuraajistani jo tietääkin, saimme lapsen vuosi sitten. Vaimoni palailee tossa ensi viikolla työelämään ja minulla on puolestani ilo ja oikeus jäädä lapsen kanssa hoitovapaalle elokuuhun saakka. Ja jos nyt joku mussuttaa siellä, että muijat töihin sieltä, niin sellainen kommmentti, että ei voi mennä, kun EI SITÄ LASTA SAA MIHINKÄÄN HOITOON KESKEN KEVÄTTÄ. Toki tällaisina telaketjufeministeina ihan ajateltiin vanhempainvapaa jakaa tasan, mutta sitten tajuttiin, että lapsi olisi menossa helmikuussa päivähoitoon. Asumme Töölössä ja täälläpäin ei saa lapselle paikkaa lähiseudulta edes silloin elokuussa, joten nouveihousei, että onnistuisi keväälläkään. Noh, koska olemme kuitenkin etuoikeutettuja kermaperseitä ja vakinaisissa työsuhteissa, tehtiin sitten näin, että käytetään vanhempainvapaiden päälle vielä puolisen vuotta tuota hoitovapaata. Kiitos muuten Helsingin kaupunki, kun ystävällisesti poistitte Helsinki-lisän. Ei se mua saanut hoitovapaata peruuttamaan, mutta kyllä me vähän pohditaan, että onko stadi meidän asuinpaikka tulevaisuudessa, kun kerta ollaan vaan taakaksi.
Noh, mutta, asiaan. Elikäs, kun vaimo on ollut kotona, hän on myös ihanasti jaksanut hoitaa ruokatilaukset (koska toki tilaamme kaiken kotiin). Nyt tämä valtikka siirtyy mulle ja koska olen luovuudeltani jossain sokeritoukan tasolla, en keksi hitto vie millään ruokalistoja. Hätä ei onneksi ole tämännäköinen, sillä onhan meillä ATK. Päätinkin, että teen sovelluksen, johon voin syöttää meillä usein käytetyimmät reseptit ja löytäessäni jotain uusia ja sitten arpoa aina niistä satunnaisen listan seuraavaksi viikoksi tietyin reunaehdoin. Reunaehdot tässä tarkoittavat ruokatyyppejä eli meille sopiva ruokasetti on sellainen, jossa on muutama uuniruoka, muutama eines (älä saakeli tuomitse siinä), yksi keitto jne.
Käyttöliittymä on tosi ruma, maailman yksinkertaisin ja raakile, mutta toimii. Ihan material-ui:n peruspalikoilla mentiin.
Yksinkertaisin, ns. “pikahaku” on tilanteisiin, jossa vaan kaipaan ihan mitä vaan vinkkejä muutamasta reseptistä.

Tuloksena on lista resepteistä haluamani määrä ja kun tyydyn tulokseen, voin vielä generoida ostoslistan.

Monimutkaisemmassa haussa voin päättää, minkä tyyppisiä ruokia kaipaan:

Vastauksena tähänkin ruokalajit ja ostoslista. Tähän on semmonen parannus tekeillä, että osan arvotuista voisi “kiinnittää” ja arpoa uudestaan vaan ne ruokajit, mitä ei silä hetkellä kelpuuta.

Ruokia pitää tietysti myös pystyä syöttämään, siksipä syöttösivu:

Rajapintoja on muutama, yksi yksinkertaiselle listageneroinnille, toinen sellaiselle, jossa haluaa tarkemmin rajata sen, minkätyyppisiä ruokia haluaa (voihan joskus vaikka haluta keittoa koko viikon) ja sitten uusien reseptien syöttämiselle omansa.

Kannassa on siis vaan reseptit, niiden ainekset ja sitten näiden yhdistelemiseen taulut:

Bäkkäri perusclojurea, kantana postgres, migraatiot flywaylla. Frontti react+clojurescript eli re-framella, jossa komponentit material-ui:lla. Homma pyörii ihan perinteisesti webbiserverillä (Hetzner – on muuten halpa!), ei mitään serverlesshassutuksia tällä kertaa. Sen verran aws toki käytössä, että löysin postgressiä snapshottaavan docker-imagen, joka tyrkkää cronilla haluaminani väliajoin kantadumpin S3:een. Kauheen kätsy ja säästän yhden rds-instanssin verran, kun voi pyöritellä tota possuakin vaa dockerissa tuolla ubuntupannulla ja reseptit on silti varmistettu. Kikkeliskokkelis!
Deployhommeleihin kokeilin github actionssia, onhan se kyllä aika kätevä, melkein kaikelle löytyy workflow!
Koodit löytyvät täältä bäkkärille (mukana myös migraatioskriptit kantaan) sekä maailman yksinkertaisimmalle frontille täältä.