mountains
Dylan Smith
Project notes

rare-brew, in cuts

A handful of features and design decisions from a touch-first Magic: The Gathering deck builder.

/
mobilenext.jssupabasemtgpwa
Rare-brew started as a selfish project. I wanted to build a Magic deck on my phone, on the bus, without fighting a desktop layout shoved into a small viewport. What follows isn't a postmortem or a roadmap — it's a few specific decisions worth writing down, mostly so I remember why I made them.
Mobile UX

Stacked-list view replaced a too-clever grid

mobilelist-ux
Mobile UX

Auto-hide chrome, borrowed from YouTube

scrollmobile
Interaction pattern

Insights bento with drill-in overlays

bentodata-viz
Architecture

Two shells, same data

responsivearchitecture

Desktop and mobile share a database, a query layer, and a card model. They do not share a shell. Mobile gets a single stacked list with focused gestures; desktop gets a multi-column canvas where each column has its own sort, filter, and drag-to-reorder.

The temptation in a responsive app is to make one layout collapse gracefully to the other. I tried that for about a week before admitting that a phone and a 27" monitor are not the same device with different breakpoints — they're different categories of use. The desktop canvas is for arranging, comparing, sorting. The mobile shell is for editing one card at a time on a bus.

Domain modeling

Commander rules done right

mtgdomain

Magic's Commander format has rules most builders model approximately. Partner pairs let you have two commanders with combined color identity. Companions sit outside the deck but their build-restriction has to validate the deck. Basic-land quantities need FAB-style increment controls because they're the most-edited cards in any deck.

These are not glamorous features. But the bar for "this app actually understands Commander" is that all of these work, and most apps cut one. I spent a week on this and would do it again — it's the difference between a deck builder and a card-list editor.

Data import

Bulk migration from Moxfield and Archidekt

importdesktop
Mobile UX

Boards as bottom nav

navigationmobile

Most deck builders treat sideboard / maybeboard / considering / etc. as a sub-tab inside the main deck view. I flipped that: each board is a top-level destination, switched via a bottom nav. Build, sideboard, maybe, archived — same gesture, same hit target, no nested navigation.

The unlock is that switching boards feels like switching apps rather than poking around inside one. Once you've used it for an hour the nested-tab version feels claustrophobic.

Mobile UX

The four-control build bar

controlsmobile

The mobile build screen has exactly four primary controls at the bottom: add card, search, sort, more. Anything beyond those four lives in more, and most users never need to open it.

Earlier versions tried to surface six, then eight, then a configurable bar. They all felt cluttered. The four-control split came from watching myself and a friend actually use the app — the same four operations cover ~95% of build-screen actions. The rest is fine being one tap deeper.


Future cuts: shareable decks, EDHREC-driven suggestions in the build view, accessibility audit. Those aren't built yet, so they're not here.