feat(blog): add Boundless x Trustless Work hackathon post and fit cover images#551
Conversation
…er images - Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement. - BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners). - Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.
|
@Benjtalkshow is attempting to deploy a commit to the Threadflow Team on Vercel. A member of the Team first needs to authorize it. |
📝 WalkthroughWalkthroughThis PR updates the blog section of the landing page with visual refinements and new content. Blog card and post detail components switch image display from ChangesBlog Landing Page and Content Updates
🎯 1 (Trivial) | ⏱️ ~3 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
content/blog/boundless-launches-first-hackathon-campaign.mdx (2)
26-162: Tight registration deadline noted.The registration deadline (May 15th, line 95) coincides with the PR creation date (May 15, 2026), leaving minimal time between post publication and registration close. While not a code issue, consider whether the deadline should be extended or if this was intentional to create urgency.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@content/blog/boundless-launches-first-hackathon-campaign.mdx` around lines 26 - 162, The "Registration Deadline: May 15th" under the "Other Details" in the "Event Details" section creates a tight window that matches the PR creation date; update the deadline or add a clarifying note to avoid confusion. Locate the "Event Details" header and the line containing "Registration Deadline: May 15th" and either (a) change the date to a later one (e.g., extend to May 20th or another agreed date) or (b) append a short parenthetical like "(intentional—registration may close soon after publication)" to indicate this was deliberate; ensure the change appears consistently wherever "Registration Deadline" is referenced (e.g., in the "Other Details" block and any duplicated spots).
28-28: 💤 Low valueConsider replacing "today" with the specific date.
The phrase "today, May 13th, 2026" will become inaccurate for readers viewing the post after the launch date. Using just "May 13th, 2026" or "on May 13th, 2026" would age better.
♻️ Proposed alternatives
-Boundless is officially launching its first-ever hackathon today, **May 13th, 2026**. +Boundless is officially launching its first-ever hackathon on **May 13th, 2026**.Or:
-Boundless is officially launching its first-ever hackathon today, **May 13th, 2026**. +Boundless officially launched its first-ever hackathon **May 13th, 2026**.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@content/blog/boundless-launches-first-hackathon-campaign.mdx` at line 28, Replace the time-sensitive phrasing in the sentence "Boundless is officially launching its first-ever hackathon today, **May 13th, 2026**." so it doesn't age; change it to a fixed-date formulation such as "Boundless is officially launching its first-ever hackathon on **May 13th, 2026**." (edit the line in content/blog/boundless-launches-first-hackathon-campaign.mdx that contains the original sentence).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@content/blog/boundless-launches-first-hackathon-campaign.mdx`:
- Line 8: The author.image field in the frontmatter is an empty string—replace
it with a valid public image URL (or a relative path to an asset) so the Avatar
component in BlogPostDetails.tsx can render the photo instead of falling back to
initials; update the author.image value in the post metadata (the author.image
entry) to point to the chosen image and ensure the file is accessible by the
site build.
---
Nitpick comments:
In `@content/blog/boundless-launches-first-hackathon-campaign.mdx`:
- Around line 26-162: The "Registration Deadline: May 15th" under the "Other
Details" in the "Event Details" section creates a tight window that matches the
PR creation date; update the deadline or add a clarifying note to avoid
confusion. Locate the "Event Details" header and the line containing
"Registration Deadline: May 15th" and either (a) change the date to a later one
(e.g., extend to May 20th or another agreed date) or (b) append a short
parenthetical like "(intentional—registration may close soon after publication)"
to indicate this was deliberate; ensure the change appears consistently wherever
"Registration Deadline" is referenced (e.g., in the "Other Details" block and
any duplicated spots).
- Line 28: Replace the time-sensitive phrasing in the sentence "Boundless is
officially launching its first-ever hackathon today, **May 13th, 2026**." so it
doesn't age; change it to a fixed-date formulation such as "Boundless is
officially launching its first-ever hackathon on **May 13th, 2026**." (edit the
line in content/blog/boundless-launches-first-hackathon-campaign.mdx that
contains the original sentence).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: b6231e30-7344-4c3c-828b-799f165de0e3
📒 Files selected for processing (3)
components/landing-page/blog/BlogCard.tsxcomponents/landing-page/blog/BlogPostDetails.tsxcontent/blog/boundless-launches-first-hackathon-campaign.mdx
| publishedAt: '2026-05-13' | ||
| author: | ||
| name: 'Boundless Team' | ||
| image: '' |
There was a problem hiding this comment.
Add author image URL.
The author.image field is currently an empty string. While the Avatar component in BlogPostDetails.tsx will fall back to showing initials, providing an actual image URL would improve the visual presentation of the blog post.
💡 Suggested fix
author:
name: 'Boundless Team'
- image: ''
+ image: '/images/boundless-team-avatar.png'📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| image: '' | |
| author: | |
| name: 'Boundless Team' | |
| image: '/images/boundless-team-avatar.png' |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@content/blog/boundless-launches-first-hackathon-campaign.mdx` at line 8, The
author.image field in the frontmatter is an empty string—replace it with a valid
public image URL (or a relative path to an asset) so the Avatar component in
BlogPostDetails.tsx can render the photo instead of falling back to initials;
update the author.image value in the post metadata (the author.image entry) to
point to the chosen image and ensure the file is accessible by the site build.
* fix(submissions): improve link validation UX, banner display, and error toasts (#547) - Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other) - Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change - Add 500-character cap and live counter on the optional Introduction field - Pass banner through initialData on submission edit so the saved banner displays - Add banner field to ParticipantSubmission so the type compiles - Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team - Switch submission error toasts to title + description with 8s duration so backend messages are readable - Update SubmissionLinksTab icon mapping for the new link types * fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549) - Logo overlay on banner uses object-contain so wordmark logos are not cropped - Render the category badge once instead of twice on the explore submissions card * feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551) - Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement. - BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners). - Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa.
* fix(submissions): improve link validation UX, banner display, and error toasts (#547) - Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other) - Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change - Add 500-character cap and live counter on the optional Introduction field - Pass banner through initialData on submission edit so the saved banner displays - Add banner field to ParticipantSubmission so the type compiles - Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team - Switch submission error toasts to title + description with 8s duration so backend messages are readable - Update SubmissionLinksTab icon mapping for the new link types * fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549) - Logo overlay on banner uses object-contain so wordmark logos are not cropped - Render the category badge once instead of twice on the explore submissions card * feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551) - Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement. - BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners). - Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa. * feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550) * feat: implement judge portal with submission evaluation, invitations, and score calculation workflows * feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
) * fix(submissions): improve link validation UX, banner display, and error toasts (#547) - Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other) - Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change - Add 500-character cap and live counter on the optional Introduction field - Pass banner through initialData on submission edit so the saved banner displays - Add banner field to ParticipantSubmission so the type compiles - Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team - Switch submission error toasts to title + description with 8s duration so backend messages are readable - Update SubmissionLinksTab icon mapping for the new link types * fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549) - Logo overlay on banner uses object-contain so wordmark logos are not cropped - Render the category badge once instead of twice on the explore submissions card * feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551) - Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement. - BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners). - Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa. * feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550) * feat: implement judge portal with submission evaluation, invitations, and score calculation workflows * feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(hackathons): add "hidden until results" submission visibility mode (#555) Surfaces the new HIDDEN_UNTIL_RESULTS option (added in the nestjs PR) in the organizer settings tab. Reorders the three visibility options so the recommended "Shortlisted only" leads, the new "Hidden until results are announced" sits in the middle, and "All submissions" comes last. Rewrites the copy on the "All submissions" choice that incorrectly claimed disqualified projects would be shown -- they never were on the backend, and Phase 2 makes that an explicit guarantee. Aligns the form's default and API-fallback value with the backend default (ACCEPTED_SHORTLISTED, not ALL) so organizers don't see a misleading initial selection. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Nnaji Benjamin <60315147+Benjtalkshow@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(submissions): improve link validation UX, banner display, and error toasts (#547) - Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other) - Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change - Add 500-character cap and live counter on the optional Introduction field - Pass banner through initialData on submission edit so the saved banner displays - Add banner field to ParticipantSubmission so the type compiles - Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team - Switch submission error toasts to title + description with 8s duration so backend messages are readable - Update SubmissionLinksTab icon mapping for the new link types * fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549) - Logo overlay on banner uses object-contain so wordmark logos are not cropped - Render the category badge once instead of twice on the explore submissions card * feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551) - Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement. - BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners). - Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa. * feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550) * feat: implement judge portal with submission evaluation, invitations, and score calculation workflows * feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(hackathons): add "hidden until results" submission visibility mode (#555) Surfaces the new HIDDEN_UNTIL_RESULTS option (added in the nestjs PR) in the organizer settings tab. Reorders the three visibility options so the recommended "Shortlisted only" leads, the new "Hidden until results are announced" sits in the middle, and "All submissions" comes last. Rewrites the copy on the "All submissions" choice that incorrectly claimed disqualified projects would be shown -- they never were on the backend, and Phase 2 makes that an explicit guarantee. Aligns the form's default and API-fallback value with the backend default (ACCEPTED_SHORTLISTED, not ALL) so organizers don't see a misleading initial selection. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(hackathons): owner submission visibility, team UX, organizer teams page (#552) Submission visibility on the public submissions tab - Surface the user's own submission first on the hackathon submissions tab, regardless of submissionStatusVisibility setting. Team members (non-leader) see their team's submission too. Find Team tab UX - Stop replacing the whole tab with MyTeamView when the user has a team. Render MyTeamView at the top and the open-teams list below. - Filter the user's own team out of the "Other Teams" list to avoid duplication. - Wire the team count badge on the team-formation tab. Team details - New /hackathons/[slug]/teams/[teamId] page with team header, members list (clickable links to profiles), roles needed, leader card, and contact card. - TeamCard click opens the team details page in a new tab. - MyTeamView team name is now a clickable link to the same page. - Add useTeam hook + query key. Organizer submissions page - Replace raw Buttons on review actions with BoundlessButton (default / outline / destructive) so colors come from the design system. - Remove the "Before Deadline" gating on the Approve action; backend organizer override now allows it. Organizer participants page - Add Solo Participants and Teams metric cards next to the existing Total Participants and Total Submissions cards. Organizer submissions page - Add a metric strip with Total / Solo / Team Submissions sourced from the statistics endpoint. Organizer Teams page (new) - New route /organizations/[id]/hackathons/[hackathonId]/teams. - Stats (Total / Open / Submitted / Not submitted), search by team or leader (server-side), status and submission filters (client-side), server-side pagination matching the participants page pattern, click to view team details in a new tab. - Add "Teams" entry to the existing organizer hackathon sidebar (HackathonSidebar.tsx). Image fit fixes for cropped logos/banners - SubmissionCard banner and logo overlay use object-contain (banner was object-cover, cropping wordmarks and tall banners). - /me/hackathons/submissions: banner, logo overlay, and small table thumbnail all use object-contain. - ProjectSidebarHeader logo uses object-contain. Type changes - lib/api/hackathons/teams.ts Team interface gains optional hasSubmission flag. --------- Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix(submissions): improve link validation UX, banner display, and error toasts (#547) - Reconcile frontend link types with backend enum (github, demo, video, document, presentation, other) - Allow up to 5 "other" links per submission with smart type-picking on Add Link and duplicate guards on type change - Add 500-character cap and live counter on the optional Introduction field - Pass banner through initialData on submission edit so the saved banner displays - Add banner field to ParticipantSubmission so the type compiles - Set mock-fill participation type from myTeam to avoid INDIVIDUAL submissions while on a team - Switch submission error toasts to title + description with 8s duration so backend messages are readable - Update SubmissionLinksTab icon mapping for the new link types * fix(submissions): correct logo cropping and remove duplicate category badge on submission card (#549) - Logo overlay on banner uses object-contain so wordmark logos are not cropped - Render the category badge once instead of twice on the explore submissions card * feat(blog): add Boundless x Trustless Work hackathon post and fit cover images (#551) - Add content/blog/boundless-launches-first-hackathon-campaign.mdx for the May 13 hackathon launch announcement. - BlogCard and BlogPostDetails cover images use object-contain so the full banner is visible (previously object-cover cropped wider banners). - Update SHARE icons on the blog details page from the old brand color #99FF2D to the current brand primary #2eedaa. * feat(judge): dedicated judge portal, organizer invitations, completeness gate UX (#550) * feat: implement judge portal with submission evaluation, invitations, and score calculation workflows * feat: add countdown banner, support read-only score sliders, and integrate submission disqualification into grading modal --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(hackathons): add "hidden until results" submission visibility mode (#555) Surfaces the new HIDDEN_UNTIL_RESULTS option (added in the nestjs PR) in the organizer settings tab. Reorders the three visibility options so the recommended "Shortlisted only" leads, the new "Hidden until results are announced" sits in the middle, and "All submissions" comes last. Rewrites the copy on the "All submissions" choice that incorrectly claimed disqualified projects would be shown -- they never were on the backend, and Phase 2 makes that an explicit guarantee. Aligns the form's default and API-fallback value with the backend default (ACCEPTED_SHORTLISTED, not ALL) so organizers don't see a misleading initial selection. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(hackathons): owner submission visibility, team UX, organizer teams page (#552) Submission visibility on the public submissions tab - Surface the user's own submission first on the hackathon submissions tab, regardless of submissionStatusVisibility setting. Team members (non-leader) see their team's submission too. Find Team tab UX - Stop replacing the whole tab with MyTeamView when the user has a team. Render MyTeamView at the top and the open-teams list below. - Filter the user's own team out of the "Other Teams" list to avoid duplication. - Wire the team count badge on the team-formation tab. Team details - New /hackathons/[slug]/teams/[teamId] page with team header, members list (clickable links to profiles), roles needed, leader card, and contact card. - TeamCard click opens the team details page in a new tab. - MyTeamView team name is now a clickable link to the same page. - Add useTeam hook + query key. Organizer submissions page - Replace raw Buttons on review actions with BoundlessButton (default / outline / destructive) so colors come from the design system. - Remove the "Before Deadline" gating on the Approve action; backend organizer override now allows it. Organizer participants page - Add Solo Participants and Teams metric cards next to the existing Total Participants and Total Submissions cards. Organizer submissions page - Add a metric strip with Total / Solo / Team Submissions sourced from the statistics endpoint. Organizer Teams page (new) - New route /organizations/[id]/hackathons/[hackathonId]/teams. - Stats (Total / Open / Submitted / Not submitted), search by team or leader (server-side), status and submission filters (client-side), server-side pagination matching the participants page pattern, click to view team details in a new tab. - Add "Teams" entry to the existing organizer hackathon sidebar (HackathonSidebar.tsx). Image fit fixes for cropped logos/banners - SubmissionCard banner and logo overlay use object-contain (banner was object-cover, cropping wordmarks and tall banners). - /me/hackathons/submissions: banner, logo overlay, and small table thumbnail all use object-contain. - ProjectSidebarHeader logo uses object-contain. Type changes - lib/api/hackathons/teams.ts Team interface gains optional hasSubmission flag. * fix(blog): use object-cover so card and detail covers fill the frame (#558) The earlier switch to object-contain was meant to preserve the full image, but it left dark letterbox bands around banners on both the BlogCard grid and the post-details hero. With properly-sized cover banners, object-cover fills the frame without visible cropping. Authors should size cover images for a 2:1 ratio on the card and the responsive heights on the details page. --------- Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
content/blog/boundless-launches-first-hackathon-campaign.mdxfor May 13.object-containso the full banner is visible (previouslyobject-covercropped wider banners).#2eedaainstead of the old#99FF2D.Test plan
/blogand verify the new "Boundless Launches Its First Hackathon Campaign" card renders with the full banner visible (no cropping).object-cover— known trade-off).Summary by CodeRabbit
New Features
Style