Develop recent events, podcast and comming soon section #21
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.
This PR adds the new Recent Events, Podcast, and Coming Soon sections to the homepage. This is all based on the Figma designs. This PR addresses and will close issue #7 when merged.
Here is how it looks:
Large Devices
Small Devices
New Home Page Sections
I've introduced three main sections to the homepage:
src/components/home/RecentEvents.tsx)src/components/home/Podcast.tsx)src/components/home/ComingSoon.tsx)New Reusable Components
This PR also adds a few other components that are used in the sections above:
src/components/layout/HomeSectionLayout.tsx: This is a layout wrapper to keep the spacing and title consistent for all homepage sections. It makes maintenance way easier since it's common to the whole page.src/components/GradTitle.tsx: This is the gradient title component. I've used this inside the layout, but it can be reused anywhere.src/components/IconButton.tsx: This is the icon button that we're using everywhere. I've made it accept astyleprop so anyone can override the style if needed.Data & Logic
I've introduced a new data file:
src/data/events.ts. This data is used by bothRecentEvents&ComingSoon.The code automatically filters the events:
RecentEvents.ComingSoon.Note
Fallback Image: In
RecentEvents, if an image isn't available for any reason (like an accidental deletion), our FOSS logo on a black background will be visible instead. You can see this in the video ("Cloud Native Day" & "Frontend Meetup").Other Changes
react-iconstopackage.jsonfor icon support.Optimizations
I spent a good amount of time optimizing these new components to make sure they run smoothly. Here's a quick rundown:General Performance:
EventCard,ComingSoon,RecentEvents, etc.) inmemo()to prevent unnecessary re-renders.handleMouseDown,handleMouseEnter) withuseCallbackto prevent them from being recreated on every render.useMemoso these calculations only run when the data actually changes.keyprops (likeevent.topic) instead of array indexes for better list rendering.Images
loading="lazy"andfetchPriority="low"to images inEventCardandPodcastso they don't block the rest of the page from loading.draggable={false}to some images to prevent weird mouse dragging.AI Usage Acknowledgement
I used the following models from time to time for code generation (depending on the context). But all generated code was reviewed and verified before being used: Gemini 2.5 Flash, Gemini 2.5 Pro, Claude Thinking 3.5, Claude Haiku 4.5, Claude Sonnet 4.5
Important
I'm not that knowledgeable when it comes to Next.js & React (I've used it before, but not in over a year), so I'm looking forward to any suggestions for changes or optimizations you might have!