Local-first podcast app database schema (SQLite)

How a podcast client stores its data on the device: subscribed shows, episodes mirrored from RSS feeds, playback positions, download state, an ordered queue, per-show settings, feed sync cursors and an offline outbox.

Podcast App ER diagram

Local-first podcast app database schema (SQLite) n1 n1 11 11 11 11 n1 n1 shows idINTEGER feed_urlTEXT titleTEXT authorTEXT descriptionTEXT artwork_pathTEXT artwork_blobBLOB is_subscribedBOOLEAN subscribed_atTEXT last_episode_atTEXT episodes idINTEGER show_idINTEGER guidTEXT titleTEXT descriptionTEXT media_urlTEXT duration_secondsINTEGER published_atTEXT season_numberINTEGER episode_numberINTEGER is_explicitBOOLEAN first_seen_atTEXT episode_chapters idINTEGER episode_idINTEGER start_secondsINTEGER titleTEXT image_pathTEXT urlTEXT playback_states episode_idINTEGER position_secondsINTEGER is_finishedBOOLEAN finished_atTEXT last_played_atTEXT playback_rateREAL updated_atTEXT downloads episode_idINTEGER stateTEXT file_pathTEXT bytes_totalINTEGER bytes_downloadedINTEGER errorTEXT requested_atTEXT completed_atTEXT queue_items idINTEGER episode_idINTEGER positionINTEGER added_atTEXT added_byTEXT show_settings show_idINTEGER playback_rateREAL skip_intro_secondsINTEGER skip_outro_secondsINTEGER auto_downloadBOOLEAN auto_queueTEXT keep_latestINTEGER notify_newBOOLEAN feed_syncs idINTEGER show_idINTEGER started_atTEXT statusTEXT http_statusINTEGER etagTEXT last_modifiedTEXT new_episode_countINTEGER errorTEXT play_history idINTEGER episode_idINTEGER started_atTEXT seconds_playedINTEGER completedBOOLEAN device_nameTEXT sync_outbox idINTEGER entityTEXT entity_keyTEXT operationTEXT payloadTEXT created_atTEXT attemptsINTEGER last_errorTEXT app_settings keyTEXT valueTEXT updated_atTEXT

Related database schemas