Parent PRD
#155
What to build
Create a new reader page in SharedUI that displays a cleaned post in a readable layout. The page renders the post title, author, publication date, and the cleaned HTML content. It also defines the IDataService contract for fetching post HTML, which will be implemented differently by MAUI (local cache) and Blazor (API fetch).
Acceptance criteria
Blocked by
None - can start immediately
User stories addressed
- User story 1: As a MAUI app user, I want to tap a "Read" button on a post in the Posts list, so that I can open the cleaned HTML version of that post
- User story 2: As a MAUI app user, I want the reader to display the post title, author, publication date, and cleaned HTML content in a readable layout
- User story 3: As a MAUI app user, I want the reader to have a back button, so that I can return to the Posts list
- User story 4: As a MAUI app user, I want the reader to match the app theme (light/dark mode)
- User story 6: As a MAUI app user, I want to tap "Read" when the HTML is not cached and see a message on the reader page
- User story 13: As a developer, I want the reader page in SharedUI, so that it can be reused in both MAUI and Blazor web apps
- User story 17: As a Blazor web app user, I want to be able to open the reader page and fetch HTML from the API on demand
Parent PRD
#155
What to build
Create a new reader page in SharedUI that displays a cleaned post in a readable layout. The page renders the post title, author, publication date, and the cleaned HTML content. It also defines the IDataService contract for fetching post HTML, which will be implemented differently by MAUI (local cache) and Blazor (API fetch).
Acceptance criteria
/postreader/{id}in SharedUI project<div>using@Html.Raw()/posts)IDataServiceinterface:Task<string?> GetPostHtmlAsync(string postId)IDataService.GetPostHtmlAsyncto fetch the HTML contentIDataService.GetPostmethodBlocked by
None - can start immediately
User stories addressed