Randy Verschueren
Senior Creative Designer
← Back to home
randy@viesign.be
Instagram ↗LinkedIn ↗
Case studyUX & UI DesignAndroid

Snap it. It's a list.

How I designed and built VieListr, an Android app built on one idea: one list does not fit all. Five list types, each with its own way to rank and organise, and the interface decisions behind them. My own pin collection was just the first thing I threw at it.

Role
Concept, UX and UI design, product, build
Type
Own product, Android app
Year
2026
Status
In private beta
Tools
Kotlin, Jetpack Compose, Claude Code, Photoshop
VieListr app screens with the app icon
Enamel pins laid out on a table, phone in hand, about to photograph them

01Why I built my own

I make lists for everything: films to watch, gear to buy, soda flavours sorted by yum level. The one that finally pushed me to build my own app was a box of enamel pins I kept buying twice, because my only real overview was my memory.

A pin is the ideal list item. It needs no title or description, you just need to see it, so the photo list app I already used should have been perfect. It failed in two ways, and both were about design, not features.

The first was friction. Getting one item in took six steps:

  1. Open the camera and take the photo
  2. Switch to the list app
  3. Add an item
  4. Choose add photo, then gallery
  5. Find it among everything else in the gallery
  6. Type a name and save

Fine once. Not for a whole collection, which is exactly when a list earns its keep.

The second was worse. Photos I had added over the years were quietly turning into grey boxes. The app had only ever stored a link to each picture in my gallery, so clearing the camera roll or changing phones left the link pointing at nothing.

I did not need a better way to sort. I needed a faster way to capture, a list that would not forget, and the right kind of list for each job.

02Not every list is a ranking

Pins are just one use. The app itself started from a simple observation: people make lists to answer different kinds of questions, and each question deserves its own interaction.

  • What is my order of preference?RankedDrag into place. Position is the ranking.
  • Roughly how good is each one?Tier listS to F rows. Buckets, not exact places.
  • What would I give it out of ten?ScoredRate each item. The list sorts itself.
  • I honestly cannot choose.PairwisePick the better of two, again and again. Elo builds the ranking.
  • What still needs doing?To-doCheckboxes and reminders. Not an opinion at all.
A ranked travel list with a large photo on every item
Ranked
A tier list sorting movies into S to F rows
Tier list
A scored list of pizza toppings sorted by score
Scored
A pairwise comparison asking which of two albums is better
Pairwise

03Designing a camera that never waits

Photo batch opens a camera inside the app that stays open between shots. Every tap of the shutter becomes an item. You work your way along the table, one pin, one tap, and never leave the screen.

The whole screen is designed around the rhythm of that moment: eyes on the pin, thumb on the shutter.

Anatomy of the batch camera, seven pins in
  1. 1A safe way outClosing with photos taken asks first, with Keep shooting right there as the way back. One stray tap should not cost you twenty pins.
  2. 2Finish counts for youDisabled until the first shot, then it shows the running total. Progress without a separate counter.
  3. 3Nothing but the pinA full-bleed viewfinder with no settings or modes. The camera favours speed over maximum quality, because the next pin is already waiting.
  4. 4A strip, not a galleryIt appears after the first shot. Tap a blurry one to remove it now, instead of cleaning up an item later.
  5. 5Shutter under the thumbStacked below the strip, never covered by it, right where your thumb already rests.

What happens to the photos is just as deliberate. They go straight into the app and never touch the gallery, so a session of pins does not bury your holiday photos. Each shot is resized and compressed on the way in, to roughly 120 to 300 KB. A fifty-pin session takes up somewhere between 6 and 15 MB.

Capture is one job, organising is another. The camera should never wait for the app.

04Decide what it is at the end

Most apps ask what kind of list you want before you have added anything. Batch flips that around. You shoot first, tap Finish, and only then choose, when you can see what you actually collected.

The Finish sheet offers two paths: make a new list and pick its type, or add everything to a list that already exists. That second option is what makes it work for a collection. After the next shopping spree, the new pins go straight into the list I already have.

It was tempting to ship photo batch as its own list type. I kept it as a way of creating items instead. The pin list that comes out is an ordinary list, and can do everything any other list can.

Later I added text batch, the same idea without a camera. Paste a list separated by commas or new lines and every entry becomes an item, ending on that same Finish step.

Text batch with five pasted entries previewed as chips and a Finish button showing the count
Text batch: pasted instead of photographed, same Finish step.

05The pin collection, in practice

Because names are optional, the list was usable the second I tapped Finish. For a pin collection, the photo is the item. I switched it to large photos and had the overview I had wanted for years.

From there it grows at whatever pace suits me. The special ones get a name or a note. Favourites get dragged to the top. And because any list can be converted into another type, the whole collection can become a tier list the day I want to settle which ones are S tier.

  • 0names needed to start a list
  • 1tap per pin to add it
  • 5list types to choose from
The finished pin list with large photos, next to the Finish capture sheet where you name the list and pick its type

06A list that does not forget

The grey boxes in my old app came down to one decision nobody ever sees: storing a link to a photo instead of the photo itself.

VieListr copies every image into its own storage, whether it comes from the batch camera, the gallery or the desktop editor. That sounds like an engineering detail. For a memory tool, it is the product. Here is what it changes in practice.

When you…Photo linkedPhoto copied
Clear out your camera rollGrey boxStill there
Move to a new phoneLinks point nowhereOne export file brings every photo along
Duplicate a listBoth share the same fileEach copy owns its own photos
Delete the item the cover came fromCover disappearsCover stays

The same thinking runs through the rest of the app. There is no account and no cloud. Your lists stay on your phone, and even the desktop editor I built for typing long lists on a real keyboard only works on your own WiFi.

What people feel as trust gets decided in the data model, long before anyone draws a button.

07Small calls that add up

I used every build of the app daily. Most of these came from catching a small annoyance and refusing to get used to it.

Colour means type

Each list type owns a colour, used on its badge, card, picker chip and widget. You read the type before the name. The colours are customisable, the rule is not.

Contrast is calculated

Let people pick any colour and someone picks yellow. Text on badges and tinted rows works out light or dark from the background, so it always stays readable.

Only show what applies

Filter by colour only appears once a list has coloured items, and only offers the colours in use. A control that does nothing is still something to read.

Fair fights

Pairwise first matched random items, so you got asked whether your favourite album beats your least favourite. Now it picks an opponent from the few items closest in score, so every question is one you actually have to think about.

A pairwise comparison asking which of two albums is better

No prelude

Scoring once hid its slider behind an Add rating button. One tap too many for something you do dozens of times, so the slider is simply always there.

Confirm by distance

Swiping away an item is direct, and confirming can be turned off. Deleting a whole list from a menu, one step away from the list itself, always asks.

Two ways to tier

Drag an item onto another row, or tap it and pick a tier from a sheet. Dragging is satisfying. With a thumb on a crowded list, the sheet is faster.

The boring widget wins

On some phones the modern widget sat on a placeholder for minutes. I rebuilt it on the older system. A widget that shows your list straight away beats a modern one that does not.

Search that spans lists

Search from the home screen looks inside every list at once and highlights the match, so you find the item even when you have forgotten which list it lives in.

08What I take from it

Designing the whole product myself, from where a photo is stored to the colour of a chip, made two things very clear.

Capturing and organising are different moments, and they deserve different designs. When you are standing at a table full of pins, the app should get out of the way. The decisions can wait until you are on the couch.

And the promises an interface makes are only as good as the system underneath. No amount of polish would have fixed those grey boxes. The fix was a decision about data, made with the user in mind.

Good UX is often invisible. In this app, the most important part of it is a copy of a photo.

Got a brand, a drop, or an app idea?

Let's
make it.
randy@viesign.be

Cookie settings

Hi, I'm Randy.