Skip to content

feat: implement podcast design#3058

Open
ahtesham-quraish wants to merge 4 commits intomainfrom
ahtesham/podcast-banner
Open

feat: implement podcast design#3058
ahtesham-quraish wants to merge 4 commits intomainfrom
ahtesham/podcast-banner

Conversation

@ahtesham-quraish
Copy link
Contributor

@ahtesham-quraish ahtesham-quraish commented Mar 17, 2026

What are the relevant tickets?

https://github.com/mitodl/hq/issues/10522

Description (What does it do?)

This includes the banner with latest episodes on banner section and also the listings of podcasts

Screenshots (if appropriate):

Screen.Recording.2026-03-17.at.3.20.39.PM.mov
image image

How can this be tested?

For testing you need to hit the following url /podcast and Podcast page will be displayed you can play around with player and listen the audio.

Additional Context

This includes the Banner and listing of Podcasts only. Pagination will be included in next PR and detail of Podcast also will be included in next PR.

Copilot AI review requested due to automatic review settings March 17, 2026 06:13
@github-actions
Copy link

github-actions bot commented Mar 17, 2026

OpenAPI Changes

Show/hide No detectable change.

Unexpected changes? Ensure your branch is up-to-date with main (consider rebasing).

@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch 2 times, most recently from 691fa79 to fb3a276 Compare March 17, 2026 06:15
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new /podcast route and page UI, including a custom “recent episodes” layout and an always-on-bottom audio player, plus supporting constants/assets.

Changes:

  • Introduces a new /podcast Next.js app-route page that renders a Podcast landing page.
  • Adds Podcast UI components: page template (banner + recent episodes) and a custom audio player (desktop bar + mobile card).
  • Adds a podcast URL constant and new SVG assets used by the page design.

Reviewed changes

Copilot reviewed 7 out of 11 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
frontends/main/src/page-components/SearchSubscriptionToggle/SubscriptionToggle.tsx Adds a “Subscribe to new episodes” toggle component (currently largely duplicated from existing toggle).
frontends/main/src/common/urls.ts Adds PODCAST URL constant.
frontends/main/src/app/podcast/page.tsx Adds the /podcast route entry and metadata.
frontends/main/src/app-pages/PodcastPage/PodcastPlayer.tsx Implements fixed-position audio player UI for desktop and mobile.
frontends/main/src/app-pages/PodcastPage/PodcastPageTemplate.tsx Implements the podcast landing page template (banner + recent episodes list + player integration).
frontends/main/src/app-pages/PodcastPage/PodcastPage.tsx Fetches recent podcast episodes and renders the template.
frontends/main/public/images/circles.svg Adds design asset used in the podcast banner.
frontends/main/public/images/Vector.svg Adds design asset used in the podcast banner.

You can also share your feedback on Copilot code review. Take the survey.

@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch 2 times, most recently from 86a6aa9 to 0129c97 Compare March 17, 2026 08:39
@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch 2 times, most recently from fbb04c8 to d4cdb41 Compare March 17, 2026 09:02
@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch from d4cdb41 to dffce14 Compare March 17, 2026 09:07
@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch from dffce14 to 570a80a Compare March 17, 2026 10:17
@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch 2 times, most recently from 817537f to be4c6d1 Compare March 17, 2026 10:26
@ahtesham-quraish ahtesham-quraish added the Needs Review An open Pull Request that is ready for review label Mar 17, 2026
@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch from be4c6d1 to d2ceb27 Compare March 17, 2026 11:32
@ahtesham-quraish ahtesham-quraish force-pushed the ahtesham/podcast-banner branch from d2ceb27 to e31eca4 Compare March 17, 2026 11:44
@ChristopherChudzicki
Copy link
Contributor

if you rebase, openapi diff thing should pass

@zamanafzal zamanafzal self-assigned this Mar 18, 2026
@zamanafzal
Copy link

Screenshot 2026-03-18 at 10 04 11 PM Here are few of my observations related to design changes.

1- For both mobile and desktop, the red play icon doesn't match the design.
2- There is more margin between the Recent Episode cards compared to figma design.
3- The play icon position is also changed from what it is in the Figma design.
4- In the desktop screen, the design for the Banner does not match to figma. The circle of the background image needs to overlap with the text(MIT Podcasts).
Screenshot 2026-03-18 at 10 08 29 PM

/>
) : null}
<EpisodeInfo>
<EpisodeChannelName>{"Curiosity Unbounded"}</EpisodeChannelName>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is left mistakenly hard-coded?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have added this intentionally later on it will be replaced by real podcast name currently it is not available in api response.

title: episode.title,
podcastName:
episode.offered_by?.name ??
"Me, Myself, and AI",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this intentional?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, currently data is not available in api response

// ─── Component ────────────────────────────────────────────────────────────────

const PodcastSubscribePopover: React.FC<PodcastSubscribePopoverProps> = ({
podcastUrl = "http://example.com/podcast",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's a type related to the base URL

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes we will have the urls currently not available


const PodcastSubscribePopover: React.FC<PodcastSubscribePopoverProps> = ({
podcastUrl = "http://example.com/podcast",
rssUrl = "http://example.com/rss",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

@ahtesham-quraish
Copy link
Contributor Author

1- For both mobile and desktop, the red play icon doesn't match the design.
2- There is more margin between the Recent Episode cards compared to figma design.
3- The play icon position is also changed from what it is in the Figma design.
4- In the desktop screen, the design for the Banner does not match to figma. The circle of the background image >needs to overlap with the text(MIT Podcasts).

I have fixed the circle thing as per requirement you can see that here
image

Play button needs approval from @Ferdi, @mbilalmughal will confirm it and which is not confirmed yet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs Review An open Pull Request that is ready for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants