Przejdź do treści
Wróć do realizacji
Produkt własny/2026

Yummy — logo
Yummy — ekran losowania z kostką 3D i aktywnymi filtrami
PizzaBurgerSushiKebabRamenOtwarte teraz5 km4,5+$ – $$
Yummy — wylosowany lokal z uzasadnieniem wyboru
4 zakładkiKostka · Lista · Mapa · Zapisane
Yummy — mapa w ciemnym stylu z wylosowanym lokalem

Nie wiesz co zjeść? Rzuć kostką.

Produkt własny · 2026
Alpha Creative © 2026
Przegląd

Yummy 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.

Rok
  • 2026
Rola
  • Projekt i wdrożenie (produkt własny)
Usługi
  • Product design
  • Aplikacja na Androida
  • Integracje Google
  • Grafika 3D
1 rzut
od wytycznych do konkretnego lokalu
3D
kostka na three.js wbudowana w aplikację — losuje też offline
Czas dojazdu
realne trasy z Routes API zamiast odległości w linii prostej

„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.

Technologie
Kotlin 2.1Jetpack ComposeMaterial 3Navigation ComposeCoroutines / FlowDataStore PreferencesPlaces SDK (New)Maps ComposeRoutes APIOkHttpthree.js (WebView)CoilR8 / App Bundle
Porozmawiajmy

Opisz krótko swój projekt — odpowiadam osobiście, zwykle w ciągu 24 godzin.

hello@alphacreative.pl

Wysyłając formularz, zgadzasz się na kontakt w sprawie projektu. Bez spamu, bez newslettera.

Następny projekt
FinApp