



Nie wiesz co zjeść? Rzuć kostką.
Produkt własny · 2026Yummy to aplikacja na Androida, którą zbudowałem na własne potrzeby — bo najtrudniejszą częścią wyjścia ze znajomymi jest ustalenie, gdzie w końcu idziemy. Zaznaczasz wytyczne: rodzaj kuchni, przedział cen, minimalną ocenę, promień i to, czy lokal ma być teraz otwarty — a potem rzucasz kostką. Aplikacja losuje jedno miejsce spośród tych, które spełniają kryteria, i od razu pokazuje, dlaczego akurat to: ocena, godziny otwarcia, czas dojazdu i nawigacja jednym przyciskiem. Zamiast półgodzinnej dyskusji, w której każdy ma ochotę na co innego, decyzję podejmuje rzut — i wszyscy się na to godzą. Zaprojektowałem i napisałem całość od zera w Kotlinie i Jetpack Compose.
- 2026
- Projekt i wdrożenie (produkt własny)
- Product design
- Aplikacja na Androida
- Integracje Google
- Grafika 3D
„Gdzie idziemy?” to pytanie, które potrafi zająć więcej czasu niż sam posiłek. Jedna osoba ma ochotę na pizzę, druga na burgera, trzecia nie chce iść daleko, a mapy pokazują sto lokali posortowanych tak, że i tak trzeba je przejrzeć jeden po drugim. Problemem nie jest brak informacji — jest jej za dużo i nikt nie chce wziąć na siebie decyzji. Chciałem odwrócić ten schemat: zamiast kolejnej wyszukiwarki z listą wyników — narzędzie, które z sensownych opcji wybiera jedną i zdejmuje z grupy ciężar wyboru. Losowanie musiało jednak zostać uczciwe: wynik ma trafiać w ustalone wcześniej wytyczne, żeby nikt nie czuł, że kostka wybrała coś, na co nie było zgody.
Rdzeniem produktu jest rytuał, a nie wyszukiwarka: najpierw wspólnie ustawiacie warunki brzegowe — rodzaj kuchni, przedział cenowy, minimalną ocenę, promień i „otwarte teraz” — a dopiero potem rzucacie. Kostka jest prawdziwa: to scena 3D w three.js osadzona w WebView, z biblioteką i modelami wbudowanymi w assety aplikacji i serwowanymi przez WebViewAssetLoader (moduły ES nie ładują się z file://, więc potrzebny był wirtualny host https). Nic nie pobiera się z sieci, więc rzut wygląda tak samo w domu i w podziemnym parkingu. Dane o lokalach biorę z Places API (searchByText, autouzupełnianie adresu, zdjęcia), pozycję z play-services-location, a odległości liczę Routes API po REST — po drogach, nie w linii prostej, bo przy wyborze knajpy liczy się czas dojazdu, a nie dystans na mapie. Wylosowany lokal dostaje sekcję „dlaczego ten lokal”, która wprost wypisuje spełnione kryteria — to ona zamienia losowanie w decyzję, którą grupa akceptuje. Po stronie kodu świadomie zostałem przy prostocie: cała aplikacja to jeden ViewModel z jednym UiState w StateFlow, ekrany są czysto prezentacyjne, a trzy repozytoria wstrzykuje ręczny kontener DI — przy tej skali Hilt byłby samym narzutem. Ulubione, oceny, filtry i historia losowań siedzą w DataStore, więc apka pamięta ustawienia i to, gdzie już byliście. Do tego cztery zakładki w jednym NavHost: kostka, lista, mapa w ciemnym stylu i zapisane miejsca.
Wyjście ze znajomymi zaczyna się od rzutu, a nie od dyskusji — i to działa, bo decyzja jest zewnętrzna, a jednocześnie mieści się w tym, na co wszyscy wcześniej się zgodzili. Zamiast przeglądać listę, dostajesz jedno miejsce, powód, dla którego pasuje, i nawigację jednym przyciskiem. To projekt autorski, pisany pod własne, wieczorne użycie: natywny Compose, wszystko od Androida 8.0 wzwyż, wydanie jako App Bundle ze splitami i R8, po polsku i po angielsku.
Opisz krótko swój projekt — odpowiadam osobiście, zwykle w ciągu 24 godzin.
hello@alphacreative.pl