[R1] Browse — public catalogue discovery
Roadmap: docs/roadmap.md — “R1 — Browse”
Prerequisite: #27 — R0 Catalogue data
Branch: feat/r1-browse
Release: R1 — Browse
Outcome
Let a visitor discover the catalogue without signing in: browse a paginated grid of published projects and open a public project-detail page.
In scope
1. Public catalogue API
2. Browse and detail experience
3. Tests and verification
Definition of done
Explicitly out of scope
- Search, filters, categories, sort controls, and URL search state — R2.
- Sign-in, session-aware UI, and protected routes — R3.
- Submissions, GitHub metadata refreshes, ownership, moderation, and admin tools — R4–R5.
- Home-feed sections, featured projects, tags/topics, and personalised recommendations.
Implementation notes
- Follow the API and authorization conventions in
docs/roadmap.md: public list/detail procedures must apply status = 'published' on the server.
- Keep list and detail queries deliberate about joins so repository statistics are loaded efficiently.
- Do not expose different errors, response shapes, or timing-sensitive detail behaviour for non-public projects.
- Keep this release focused on browsing; do not pre-build R2 filter/search infrastructure.
Suggested PR checklist
[R1] Browse — public catalogue discovery
Outcome
Let a visitor discover the catalogue without signing in: browse a paginated grid of published projects and open a public project-detail page.
In scope
1. Public catalogue API
listProjects({ page, limit })andgetProjectBySlug({ slug })contracts before their router handlers.status = 'published'in each public query, not in the UI.404for a missing slug and fordraft,rejected, orremovedprojects.2. Browse and detail experience
/projects/$slugwith project identity, repository and optional website links, Markdown content, and repository stats.3. Tests and verification
draft,rejected, andremoveddo not disclose project existence.vp install,vp check,vp run -r test, andvp run -r buildbefore merge.Definition of done
Explicitly out of scope
Implementation notes
docs/roadmap.md: public list/detail procedures must applystatus = 'published'on the server.Suggested PR checklist
feat/r1-browse.vp check,vp run -r test, andvp run -r buildresults are included in the PR description.