Files
commafeed-podcasts/changelog/plans/plan-basic-episodes.md
2026-06-11 15:07:51 +02:00

40 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Basic Episodes Fetch
## Overview
This plan focuses on adding a minimal **episodesfetch** feature that pulls podcast episodes from the CommaFeed backend
using environment variables for configuration.
The plan is derived from:
- `docs/dev/README.md` (API endpoints, authentication)
- `src/` structure and existing route system
- Build scripts in `bs/` only linting is required at this stage.
## Tasks
1. **API client** (DONE)
- Adds `src/api` folder to the project structure (update also @src/README.md).
- Implement a lightweight wrapper around `fetch` in `src/api/fetchAPI.ts`.
- Build `authHeader()` that returns the BasicAuth header using for now hardcoded vars.
1. **Episode service** (DONE)
- Add `src/api/episodes.ts` with `getEpisodes(feedId)` and `getEpisode(id)`.
- Add data types
- Use `/rest/feed/entries?feed_id=${feedId}` endpoint.
1. **Page update** (TODO)
- Add fetching all episodes
- Update `<app-episodes>` to reflect loading state(s).
- Add episode list item component.
- Update `<app-episodes>` to render the episode list received from the route context.
1. **Testing** (TODO)
- Add unit tests for `api/*.ts` using project test setup.
- Add unit test for created component(s)
1. **Linting** (TODO)
- Ensure all new files satisfy the lint rule defined in `bs/dev/lint`.
## Expected Output
- Visiting `/episodes/` will display a list of episodes fetched from CommaFeed.
- Episodes are identified by their `id` and displayed with title, publish date, and an audio link if available.
- Authentication uses the env variables; no credentials are hardcoded in source.
---
> **Note**: This plan intentionally keeps external dependencies minimal. It can be extended later for pagination, caching, or offline support.