53 lines
2.0 KiB
Markdown
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
|