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

53 lines
2.0 KiB
Markdown

# 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