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

59 lines
2.2 KiB
Markdown

# 05. Create Feed Data Models and Types
meta:
id: podcast-tui-app-05
feature: podcast-tui-app
priority: P0
depends_on: [04]
tags: [types, data-models, solidjs, typescript]
objective:
- Define TypeScript interfaces for all podcast-related data types
- Create models for feeds, episodes, sources, and user preferences
- Set up type definitions for sync functionality
deliverables:
- `src/types/podcast.ts` with all data models
- `src/types/episode.ts` with episode-specific types
- `src/types/source.ts` with podcast source types
- `src/types/preference.ts` with user preference types
steps:
- Create `src/types/podcast.ts` with core types:
- `Podcast` interface (id, title, description, coverUrl, feedUrl, lastUpdated)
- `Episode` interface (id, title, description, audioUrl, duration, pubDate, episodeNumber)
- `Feed` interface (id, podcast, episodes[], isPublic, sourceId)
- `FeedItem` interface (represents a single episode in a feed)
- Create `src/types/episode.ts` with episode types:
- `Episode` interface
- `EpisodeStatus` enum (playing, paused, completed)
- `Progress` interface (episodeId, position, duration)
- Create `src/types/source.ts` with source types:
- `PodcastSource` interface (id, name, baseUrl, type, apiKey)
- `SourceType` enum (rss, api, custom)
- `SearchQuery` interface (query, sourceIds, filters)
- Create `src/types/preference.ts` with preference types:
- `UserPreference` interface (theme, fontSize, playbackSpeed, autoDownload)
- `SyncPreference` interface (autoSync, backupInterval, syncMethod)
- Add type exports in `src/index.ts`
tests:
- Unit: Verify all interfaces compile correctly
- Unit: Test enum values are correct
- Integration: Test type definitions match expected data structures
acceptance_criteria:
- All TypeScript interfaces compile without errors
- Types are exported for use across the application
- Type definitions cover all podcast-related data
validation:
- Run `bun run build` to verify TypeScript compilation
- Check `src/types/` directory contains all required files
notes:
- Use strict TypeScript mode
- Include JSDoc comments for complex types
- Keep types simple and focused
- Ensure types are compatible with sync JSON/XML formats