Skip to content
Rymflux Documentation
Esc
navigateopen⌘Jpreview
On this page

The Building

I actually like your “room” idea because it solves a problem that many media apps struggle with: not all audio is consumed the same way.

Listening to a song is different from listening to an audiobook, which is different from listening to a podcast, which is different from live radio. Trying to force all of these into one UI usually leads to compromises.

Instead, think of your app as one building with many specialized rooms.


The Building

The app itself is the building.

It provides things that are common to every experience:

  • User accounts
  • Downloads
  • Search
  • Plugin system
  • Playback engine
  • Queue
  • Audio controls
  • Settings
  • Notifications
                    Audio Platform
┌──────────────────────────────────────────────┐
│                                              │
│  Playback Engine                             │
│  Search                                      │
│  Plugin Manager                              │
│  Downloads                                   │
│  Library                                     │
│  Queue                                       │
│  Settings                                    │
│                                              │
└──────────────────────────────────────────────┘

These are always available.


Rooms

Each room is optimized for one type of audio.

                 Audio Platform

       ┌──────────────┬──────────────┬──────────────┐
       │              │              │
   Music Room     Podcast Room   Audiobook Room
       │              │              │
       │              │              │
   Different UI   Different UI  Different UI

Each room is almost like its own mini app.


Music Room

Music is about fast discovery and continuous listening.

The emphasis is

  • Albums
  • Artists
  • Genres
  • Playlists
  • Recommendations
  • Queue
Albums

Artists

Playlists

Liked Songs

Genres

New Releases

Large album artwork.

Minimal metadata.

Fast interactions.


Podcast Room

Podcasts are episodic.

Users think differently.

Instead of artists they think

Shows

Episodes

Subscriptions

Downloads

Continue Listening

Each episode needs

  • description
  • transcript
  • chapters
  • show notes

Those things don’t belong in the music UI.


Audiobook Room

Books require even more information.

Books

Authors

Chapters

Bookmarks

Reading Progress

Notes

Progress is extremely important.

Chapter 18

62% Complete

4 hours remaining

Album art isn’t the main focus anymore.

Progress becomes the primary element.


Radio Room

Live radio has different needs.

Stations

Trending

Genres

Nearby

Live

Recently Played

No seeking.

No chapters.

No progress.


Meditation Room

Very different.

Sleep

Focus

Calm

Nature

Breathing

Timers

The UI is much calmer.

Muted colors.

Minimal controls.


Educational Room

Imagine lectures.

Courses

Lessons

Bookmarks

Notes

Speed

Transcript

Downloads

You might even show

Slides

Transcript

Quiz

Bookmarks

The architecture

I would separate the application into three layers.

                 Core Platform

      ┌─────────────────┴────────────────┐
      │                                  │
 Playback Services                 Plugin System
      │                                  │
      └─────────────────┬────────────────┘

                  Room Framework

      ┌────────┬────────┬─────────┐
      │        │        │         │
   Music   Podcast   Books    Radio

Notice that playback lives outside the rooms.

The rooms simply ask:

Play this.

The playback engine does the work.


Navigation

Instead of tabs,

I’d think of rooms like entering spaces.

□□□□□□□□□□□□□□□□□□□□

🏠 Home

🎵 Music

🎙 Podcasts

📚 Audiobooks

📻 Radio

😴 Sleep

⚙ Settings

Switching rooms changes almost everything.


Home

Home isn’t a room.

It’s the lobby.

Continue Listening

Recently Played

Downloads

Pinned Rooms

Recommendations

Recent Searches

From here users enter a room.


Plugins

Here’s where it becomes powerful.

Plugins don’t necessarily provide music.

They provide content.

Example

Spotify Plugin

supports

Music
Pocket Casts Plugin

supports

Podcast
LibriVox Plugin

supports

Audiobook
BBC Plugin

supports

Radio

When the user enters Music,

the app asks only plugins supporting

Music

When entering Podcasts,

Podcast

So the room automatically fills with compatible content.


A room defines its own design

Instead of only data,

a room owns

Navigation

Search filters

Cards

Lists

Player

Metadata

Context menus

Recommendations

Each room can feel unique.


Search

One search bar.

Different behavior.

Music room

Search

Artists

Albums

Songs

Genres

Podcast room

Search

Shows

Episodes

Hosts

Audiobooks

Search

Books

Authors

Narrators

Same search box.

Different search experience.


Player

The mini-player stays global.

────────────────────



Believer

Imagine Dragons

────────────────────

Opening it expands differently depending on the current room.

Music

Artwork

Lyrics

Queue

Podcast

Artwork

Transcript

Chapters

Sleep Timer

Book

Chapter

Bookmark

Notes

Remaining Time

Same playback engine.

Different presentation.


I would introduce one more concept: “Experience Packs”

A room shouldn’t just be a page—it should define an entire experience.

Each room could register:

Music Experience

Home Screen

Search Screen

Details Screen

Player

Context Menu

Filters

Sorting

Recommendations

Another experience might register:

Audiobook Experience

Library

Progress

Bookmarks

Player

Chapters

Collections

The core app asks, “Which experience should handle this content type?” rather than hard-coding screens for music, podcasts, or books.

The mental model

I would think of the app as a city rather than a single application:

                    Audio Platform (City)

      ┌────────────────────┴────────────────────┐
      │                                         │
 Infrastructure                           Experience Framework
 (roads, power, transit)                        │
      │                                         │
 Playback • Downloads • Search • Queue • Plugins

         ┌──────────┬──────────┬──────────┬──────────┐
         │          │          │          │
      Music      Podcasts   Audiobooks   Radio
       Room         Room        Room      Room
         │            │           │          │
   Own navigation  Own layouts  Own player  Own discovery
         │            │           │          │
      Uses the same core services underneath

This keeps the platform consistent while allowing each content type to have an interface designed around how people actually consume that kind of audio. As you add new content types in the future—such as language learning, lectures, or guided fitness—you create a new room that plugs into the same foundation instead of forcing every experience into a one-size-fits-all UI.

Was this page helpful?