Files
PodTui/tasks/podcast-tui-app/11-testing.md
Michael Freno f08afb2ed1 init
2026-02-03 23:29:36 -05:00

2.1 KiB

11. Create Global State Store and Data Layer

meta: id: podcast-tui-app-11 feature: podcast-tui-app priority: P0 depends_on: [10] tags: [state-management, global-store, signals, solidjs]

objective:

  • Create global state store using Signals
  • Implement data fetching and caching
  • Build file-based storage for sync
  • Connect all components to shared state

deliverables:

  • src/stores/appStore.ts with global state store
  • src/stores/feedStore.ts with feed state
  • src/stores/playerStore.ts with player state
  • src/stores/searchStore.ts with search state
  • src/utils/storage.ts with file-based storage

steps:

  • Create src/stores/appStore.ts:
    • Use SolidJS signals for global state
    • Store application state: currentTab, isAuthEnabled, settings
    • Provide state to all child components
  • Create src/stores/feedStore.ts:
    • Signals for feeds array
    • Signals for selectedFeed
    • Methods: addFeed, removeFeed, updateFeed
  • Create src/stores/playerStore.ts:
    • Signals for currentEpisode
    • Signals for playbackState
    • Methods: play, pause, seek, setSpeed
  • Create src/stores/searchStore.ts:
    • Signals for searchResults
    • Signals for searchHistory
    • Methods: search, addToHistory, clearHistory
  • Create src/utils/storage.ts:
    • saveToLocal()
    • loadFromLocal()
    • File-based sync for feeds and settings

tests:

  • Unit: Test store methods update signals correctly
  • Unit: Test storage functions
  • Integration: Test state persists across components
  • Integration: Test data sync with file storage

acceptance_criteria:

  • Global state store manages all app state
  • Store methods update signals correctly
  • State persists across component re-renders
  • File-based storage works for sync

validation:

  • Run application and verify state is initialized
  • Modify state and verify UI updates
  • Restart app and verify state persistence
  • Test sync functionality

notes:

  • Use SolidJS createSignal for reactivity
  • Store should be singleton pattern
  • Use Zustand if complex state management needed
  • Keep store simple and focused
  • File-based storage for sync with JSON/XML