Skip to content
Back to work
Own Product/2026

Yummy — logo
Yummy — the roll screen with the 3D dice and active filters
PizzaBurgerSushiKebabRamenOpen now5 km4.5+$ – $$
Yummy — the drawn venue with the reasoning behind the pick
4 tabsDice · List · Map · Saved
Yummy — dark-styled map with the drawn venue

No idea what to eat? Roll the dice.

Own product · 2026
Alpha Creative © 2026
Overview

Yummy is an Android app I built for my own needs — because the hardest part of going out with friends is agreeing on where. You set the ground rules: cuisine, price range, minimum rating, radius and whether the place has to be open right now — and then you roll the dice. The app draws one venue from those that match, and immediately shows why that one: rating, opening hours, drive time and navigation in a single tap. Instead of a half-hour debate where everyone fancies something else, the roll makes the call — and everyone goes along with it. I designed and wrote the whole thing from scratch in Kotlin and Jetpack Compose.

Year
  • 2026
Role
  • Design & Build (own product)
Services
  • Product Design
  • Android App
  • Google Integrations
  • 3D Graphics
1 roll
from the ground rules to one specific venue
3D
a three.js dice bundled into the app — it rolls offline too
Drive time
real routes from the Routes API instead of straight-line distance

Where are we going? is a question that can take longer than the meal itself. One person fancies pizza, another a burger, a third does not want to walk far, and the maps hand you a hundred venues sorted so that you end up going through them one by one anyway. The problem is not a lack of information — there is too much of it, and nobody wants to own the decision. I wanted to flip that around: instead of yet another search with a list of results, a tool that picks one option out of the sensible ones and takes the weight of choosing off the group. The draw had to stay honest, though — the result has to land inside the rules agreed beforehand, so nobody feels the dice chose something that was never on the table.

The core of the product is a ritual, not a search box: first you set the boundaries together — cuisine, price range, minimum rating, radius and open now — and only then do you roll. The dice is real: a three.js 3D scene embedded in a WebView, with the library and the models bundled into the app assets and served through WebViewAssetLoader (ES modules will not load from file://, so a virtual https host was needed). Nothing is downloaded, so the roll looks the same at home and in an underground car park. Venue data comes from the Places API (searchByText, address autocomplete, photos), the position from play-services-location, and distances from the Routes API over REST — along roads rather than in a straight line, because when picking a restaurant it is the drive time that counts, not the gap on the map. The drawn venue gets a why this one section that spells out the criteria it meets — that is what turns a random draw into a decision the group accepts. On the code side I deliberately stayed simple: the whole app is one ViewModel with a single UiState in a StateFlow, the screens are purely presentational, and three repositories are wired by a hand-written DI container — at this scale Hilt would be pure overhead. Favourites, ratings, filters and the roll history live in DataStore, so the app remembers the settings and where you have already been. On top of that, four tabs in a single NavHost: dice, list, a dark-styled map and saved places.

A night out now starts with a roll rather than a debate — and it works, because the decision comes from outside the group while still sitting inside what everyone agreed to beforehand. Instead of browsing a list you get one venue, the reason it fits, and navigation in a single tap. It is a personal product, written for my own evening use: native Compose, everything from Android 8.0 up, shipped as an App Bundle with splits and R8, in Polish and English.

Tech stack
Kotlin 2.1Jetpack ComposeMaterial 3Navigation ComposeCoroutines / FlowDataStore PreferencesPlaces SDK (New)Maps ComposeRoutes APIOkHttpthree.js (WebView)CoilR8 / App Bundle
Let's talk

Describe your project briefly — I reply personally, usually within 24 hours.

hello@alphacreative.pl

By sending this form you agree to be contacted about your project. No spam, no newsletter.

Next project
FinApp