Files
PodTui/tasks/podcast-tui-app/50-global-state-store.md
Michael Freno b8549777ba missing md
2026-02-04 11:36:47 -05:00

2.0 KiB

50. Create Global State Store (Signals)

meta: id: podcast-tui-app-50 feature: podcast-tui-app priority: P1 depends_on: [66] tags: [state-management, signals, solidjs, global-store]

objective:

  • Create a global state store using SolidJS Signals for reactive state management
  • Implement a store that manages application-wide state (feeds, settings, user, etc.)
  • Provide reactive subscriptions for state changes
  • Ensure thread-safe state updates

deliverables:

  • /src/store/index.ts - Global state store with Signals
  • /src/store/types.ts - State type definitions
  • /src/store/hooks.ts - Custom hooks for state access
  • Updated src/index.tsx to initialize the store

steps:

  • Define state interface with all application state properties (feeds, settings, user, etc.)
  • Create Signal-based store using createSignal from SolidJS
  • Implement computed signals for derived state (filtered feeds, search results, etc.)
  • Create state update functions that trigger reactivity
  • Add subscription mechanism for reactive UI updates
  • Export store and hooks for use across components

tests:

  • Unit: Test that signals update correctly when state changes
  • Unit: Test computed signals produce correct derived values
  • Integration: Verify store updates trigger UI re-renders
  • Integration: Test multiple components can subscribe to same state

acceptance_criteria:

  • Store can be initialized with default state
  • State changes trigger reactive updates in components
  • Computed signals work correctly for derived state
  • Multiple components can access and subscribe to store
  • State updates are thread-safe

validation:

  • Run bun run build to verify TypeScript compilation
  • Run application and verify state changes are reactive
  • Check console for any errors during state updates

notes:

  • Use createSignal, createComputed, createEffect from SolidJS
  • Store should follow single source of truth pattern
  • Consider using batch for multiple state updates
  • State should be serializable for persistence