MindRooms.

MindRooms lets you listen to podcasts or publish your own. Follow your favourite series, discuss episodes and join communities around your interests. Live audio rooms give listeners and creators a place to talk together. Free on mobile and the web.
Find new podcasts by topic and the language you want to listen in.
Listen to a podcast, share your thoughts and talk with other listeners.
Meet listeners and creators who share your interests.
Follow your favourite series and find all its episodes in one place.
Listening, sharing and communities
MindRooms is an app for listening to and sharing audio. The discovery screen lists podcasts and series, with language and topic filters. You can open other episodes from the same series, follow a series, leave comments and join communities that interest you.
The upload section accepts an audio file, cover image and description. Listeners have playback controls, episode information and comments. Profiles, community pages and series pages each list their associated content. The app is developed for mobile devices and the web.
Playback and device support
The app uses Flutter, with Riverpod managing session, content and playback state. The tablet player and web live-broadcast screens have their own layouts. Playback state is kept separate from the current screen so a podcast can continue while someone browses other pages.
Podcast playback uses just_audio with background-audio support. Live audio uses WebRTC. Microphone permissions, audio output and connection handling differ between browsers and phones, so these operations have platform-specific implementations.
Uploading and storing files
Supabase stores accounts, podcast information, comments and community records. Audio files are stored in Cloudflare R2, with access managed by a Worker. The database retains the file’s stable path. A valid access link is obtained for playback rather than storing an expiring link as a permanent record.
Upload percentages are calculated from the number of bytes sent. Completion, cancellation and failure are handled separately. Audio, covers and profile images have different access rules. Permission to view or modify a file is checked on the server.
Live audio rooms
Broadcasters, speakers and listeners have different permissions in a live room. Opening a room, joining, granting speaker access and ending a broadcast are separate operations. Alongside the WebRTC connection, the database tracks whether the room is still open.
The app needs to update room state when a connection drops or the broadcast ends. Server-side connection details are used only where needed. Recording has separate permission and infrastructure checks; opening a room does not automatically start a recording.
Accounts and moderation
Database access rules govern follows, likes, comments and community membership. Content owners and other users have different permissions. Account deletion, account-data export and moderation are also included in the application.
Sentry is used for error reporting and Firebase Messaging for notifications. Checks cover the interface, data access and audio behaviour across devices. The screenshots use example content; the member, follower and listening counts shown are not live usage figures.
Dilci