Skip to content

feat(hackathons): owner submission visibility, team UX, organizer teams page#552

Merged
Benjtalkshow merged 1 commit into
boundlessfi:mainfrom
Benjtalkshow:feat/hackathon-submission-and-team-ux
May 15, 2026
Merged

feat(hackathons): owner submission visibility, team UX, organizer teams page#552
Benjtalkshow merged 1 commit into
boundlessfi:mainfrom
Benjtalkshow:feat/hackathon-submission-and-team-ux

Conversation

@Benjtalkshow
Copy link
Copy Markdown
Collaborator

Summary

Submission visibility (public submissions tab)

  • Surface the user's own submission first on the hackathon submissions tab regardless of the organizer's visibility setting. Team members (including non-leaders) also see their team's submission.

Find Team tab UX

  • No longer replaces the whole tab with MyTeamView when the user has a team. MyTeamView now renders on top, with the "Other Teams" list below.
  • Hides the user's own team from "Other Teams" to avoid duplication.
  • Wires the team count badge on the team-formation tab.

Team details page (new)

  • New route /hackathons/[slug]/teams/[teamId] with team header, members (clickable to profile), roles-needed, leader and contact cards.
  • TeamCard click opens team details in a new tab.
  • MyTeamView team name now links to the same page.
  • Added useTeam hook + query key.

Organizer submissions page

  • Replaced ad-hoc Buttons on review actions with BoundlessButton variants (default / outline / destructive) so colors come from the design system (brand primary for Approve, design-system red for Disqualify).
  • Removed the "Before Deadline" gating on Approve. Pairs with the backend organizer-override change.

Organizer participants page

  • New Solo Participants and Teams metric cards alongside Total Participants and Total Submissions.

Organizer submissions page

  • New Total / Solo / Team Submissions metric strip sourced from the statistics endpoint.

Organizer Teams page (new)

  • Route: /organizations/[id]/hackathons/[hackathonId]/teams.
  • Stats (Total / Open / Submitted / Not submitted), search (server-side), status + submission filters (client-side), server-side pagination matching the participants page pattern.
  • Click any row to open the team details page in a new tab.
  • Adds a Teams entry to the existing organizer hackathon sidebar.

Image fit fixes

  • SubmissionCard banner and logo overlay now use object-contain (banners and wordmark logos no longer cropped).
  • /me/hackathons/submissions banner, logo overlay, and table thumbnail use object-contain.
  • ProjectSidebarHeader logo uses object-contain.

Types

  • Team interface gains optional hasSubmission flag.

Test plan

  • As a participant on a hackathon with submissionStatusVisibility = 'ACCEPTED_SHORTLISTED', submit a project and confirm the card shows first on the Submissions tab.
  • As a non-leader team member, confirm the team's submission card is visible to you on the Submissions tab.
  • On the Find Team tab while on a team: MyTeamView at top, Other Teams below, your own team excluded from Other Teams. Tab badge shows team count.
  • Click any team card → opens /hackathons/[slug]/teams/[teamId] in a new tab. Click a member row → profile in new tab.
  • MyTeamView team name navigates to the same details page.
  • Organizer submissions page: Approve button uses the mint brand color; Disqualify uses design-system red; Approve is clickable before the deadline.
  • Organizer participants page shows four metric cards (Total, Solo, Teams, Total Submissions).
  • Organizer submissions page shows three metric cards (Total / Solo / Team Submissions).
  • Sidebar shows "Teams" between Submissions and Judging.
  • Organizer Teams page: search works, filters work, pagination controls navigate, row click opens team details.
  • Submission cards on the hackathon submissions tab show full banners and wordmark logos without cropping.

…ms page

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.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 15, 2026

@Benjtalkshow is attempting to deploy a commit to the Threadflow Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 15, 2026

Warning

Rate limit exceeded

@Benjtalkshow has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 57 minutes and 22 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d26e3ea2-470d-4dda-bd48-84275edca7c0

📥 Commits

Reviewing files that changed from the base of the PR and between 503ec0e and 4f874e9.

📒 Files selected for processing (16)
  • app/(landing)/hackathons/[slug]/components/tabs/contents/FindTeam.tsx
  • app/(landing)/hackathons/[slug]/components/tabs/contents/submissions/SubmissionCard.tsx
  • app/(landing)/hackathons/[slug]/components/tabs/contents/teams/MyTeamView.tsx
  • app/(landing)/hackathons/[slug]/components/tabs/contents/teams/TeamCard.tsx
  • app/(landing)/hackathons/[slug]/components/tabs/index.tsx
  • app/(landing)/hackathons/[slug]/teams/[teamId]/page.tsx
  • app/(landing)/organizations/[id]/hackathons/[hackathonId]/participants/page.tsx
  • app/(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx
  • app/(landing)/organizations/[id]/hackathons/[hackathonId]/teams/page.tsx
  • app/me/hackathons/submissions/submission-components.tsx
  • components/organization/hackathons/details/HackathonSidebar.tsx
  • components/organization/hackathons/submissions/SubmissionsList.tsx
  • components/organization/hackathons/submissions/SubmissionsManagement.tsx
  • components/project-details/project-sidebar/ProjectSidebarHeader.tsx
  • hooks/hackathon/use-hackathon-queries.ts
  • lib/api/hackathons/teams.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Benjtalkshow Benjtalkshow merged commit 54c36bf into boundlessfi:main May 15, 2026
6 of 8 checks passed
Benjtalkshow added a commit that referenced this pull request May 15, 2026
* 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>
Benjtalkshow added a commit that referenced this pull request May 15, 2026
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant