Conversation
Introduces a public Gen TV surface that lists scheduled and recorded livestreams from the GenLayer team and the broader community. The page renders one section per category (GenLayer Team, Community) and within each splits streams into Live / Upcoming / Past sub-sections. Sub-sections only render when they have content, and a category that ends up empty across all three statuses is dropped entirely so the page never shows an unused heading. Backend ships a small `gen_tv` Django app: a `Stream` model carrying title, slug, source url, image, starts_at, ends_at, category, and is_active. There is no stored status column — `status` is a Python @Property derived from `starts_at` / `ends_at` so the lifecycle stays consistent with the schedule without a maintenance burden. The API is read-only with a category filter, pagination disabled (low volume). Frontend wires the new `Gen TV` entry into the sidebar `Discover` group (desktop + mobile), adds the route at `/gen-tv`, and ships a `StreamCard` component under `components/portal/gen-tv/` that renders the cover image with a dark overlay, computed-status pill, duration badge, host metadata and title. ## Claude Implementation Notes - backend/gen_tv/: New Django app with Stream model (status as @Property), light/full serializers, public ReadOnlyModelViewSet (slug lookup, category filter, pagination disabled), admin config (status surfaces as read-only computed_status column, date_hierarchy on starts_at), and tests/test_streams.py. - backend/gen_tv/migrations/0001_initial.py: Single initial migration with the final schema (no status column, ends_at required). - backend/api/urls.py: Registers StreamViewSet on the router under `gen-tv/streams`. - backend/tally/settings.py: Adds `gen_tv` to INSTALLED_APPS. - backend/CLAUDE.md: Adds Gen TV section, gen-tv endpoints to the summary, and the new app to the project tree. - frontend/src/lib/api.js: Adds `genTvAPI` with `list` and `get(slug)`. - frontend/src/routes/GenTV.svelte: New page that fetches `genTvAPI.list()`, groups by category, and renders Live / Upcoming / Past sub-sections per category with conditional rendering. - frontend/src/components/portal/gen-tv/StreamCard.svelte: Reusable card variant (`live`, `upcoming`, `past`) with image background, dark gradient, status pill, duration badge, category + host metadata, and title. - frontend/src/components/Sidebar.svelte: Adds a `Gen TV` entry alongside `Ecosystem Partners` in the desktop and mobile sidebars (TV / play icon, `#6D5DD3` accent when active). - frontend/src/stores/category.js: `detectCategoryFromRoute` now also recognises `/gen-tv` (returns `global`). - frontend/src/App.svelte: Imports `GenTV` and mounts it at `/gen-tv`. - frontend/CLAUDE.md: Documents the new route, the `genTvAPI` entry, and the gen-tv components directory.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
What's in the UI
Backend
Test plan