Skip to content

Pr 486#488

Merged
Benjtalkshow merged 8 commits intoboundlessfi:mainfrom
Benjtalkshow:pr-486
Mar 16, 2026
Merged

Pr 486#488
Benjtalkshow merged 8 commits intoboundlessfi:mainfrom
Benjtalkshow:pr-486

Conversation

@Benjtalkshow
Copy link
Collaborator

@Benjtalkshow Benjtalkshow commented Mar 16, 2026

Summary by CodeRabbit

  • New Features

    • Debounced search for improved performance when filtering participants and submissions
    • Enhanced frontend-side filtering with search, status, and type options
    • Improved pagination handling for filtered data sets
  • Improvements

    • Removed "Withdrawn" status option from submissions
    • Better synchronization between filters and pagination controls
    • Updated status value formatting for consistency

@vercel
Copy link

vercel bot commented Mar 16, 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

coderabbitai bot commented Mar 16, 2026

📝 Walkthrough

Walkthrough

This PR refactors participant and submission filtering by introducing client-side filtering layers with debounced search, React Table pagination integration, and normalizes submission status values from lowercase to UPPERCASE across the codebase. It removes the 'WITHDRAWN' status option and enriches type definitions for richer context and stronger typing.

Changes

Cohort / File(s) Summary
Submission Filtering & Pagination
app/(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx, components/organization/hackathons/submissions/SubmissionsManagement.tsx
Replaces direct submissions usage with frontend-filtered filteredSubmissions via useMemo; integrates Tanstack React Table with manual pagination; removes 'WITHDRAWN' from SubmissionStatus type; simplifies search handling to direct filter updates; eliminates internal pagination UI in favor of external control.
Submission Hook & Debouncing
hooks/hackathon/use-organizer-submissions.ts
Introduces debounced search integration; adds updateLimit() method; separates filter updates from fetches via useEffect; refines pagination derivation (currentPage, totalPages) from API response; synchronizes fetches on debounced search or filter/pagination changes.
Participant Filtering & Pagination
app/(landing)/organizations/[id]/hackathons/[hackathonId]/participants/page.tsx
Introduces frontend-side filtering layer (filteredParticipants) via useMemo for search, status, and type; integrates filtered data with table pagination; adds uppercase normalization in mapFiltersToParams.
Pagination Logic Refinement
hooks/use-hackathons.ts
Refines pagination state derivation with explicit calculation of responsePage, totalPages, itemsPerPage, and totalItems; updates hasNext/hasPrev logic; widens participant filter types to generic strings.
Status Value Normalization (Uppercase)
components/hackathons/submissions/SubmissionDetailModal.tsx, components/organization/cards/Participant.tsx, components/organization/hackathons/ParticipantsGrid.tsx, components/organization/hackathons/ParticipantsTable.tsx, hooks/hackathon/use-register-hackathon.ts, hooks/use-submission-actions.ts
Updates status comparisons and display text from lowercase ('shortlisted', 'disqualified', 'submitted') to uppercase ('SHORTLISTED', 'DISQUALIFIED', 'SUBMITTED'); adjusts UI styling and conditional logic accordingly.
Type Definition Enrichment
lib/api/hackathons.ts
Strengthens ParticipantSubmission.status from generic string union to typed SubmissionStatus; adds participationType and nested participant object with id, name, username, and optional image for richer submission context.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • Judging dashboard #384 — Modifies submissions/page.tsx and SubmissionsManagement component surface, introducing pagination and filtering behavioral changes.
  • UI fixes #480 — Updates participants/page.tsx pagination handling, adding dynamic pageSize and page-change logic alongside filtering behavior.
  • Hackathon analytics #378 — Touches hackathons API type surface and status enum uppercase normalization, aligning type definitions with this PR's status changes.

Suggested reviewers

  • 0xdevcollins

🐰 A hop, skip, and a filter's delight,
Debounced searches soaring through the night,
UPPERCASE statuses, pristine and bright,
Pagination flows in tangled sight,
New types enriched—everything feels right!

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 14.29% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The pull request title 'Pr 486' is vague and does not convey meaningful information about the changeset, which implements uppercase status normalization, frontend filtering, pagination updates, and API type refinements. Use a descriptive title that summarizes the main change, such as 'Normalize submission status to uppercase and implement frontend filtering' or 'Refactor submissions and participants filtering with status normalization'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Tip

You can disable poems in the walkthrough.

Disable the reviews.poem setting to disable the poems in the walkthrough.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
hooks/hackathon/use-organizer-submissions.ts (1)

54-104: ⚠️ Potential issue | 🟠 Major

Add filters.status and filters.type to fetchSubmissions callback dependencies, then depend on fetchSubmissions in the effect.

fetchSubmissions closes over filters (lines 62-65) but the useCallback dependency array (line 98) omits filters.status and filters.type. When these filter fields change, the effect (lines 102-104) re-runs but calls a stale callback closure that still reads the previous filter values, causing the API request to use outdated filters. Additionally, the effect calls fetchSubmissions but doesn't include it in its dependency array (line 104).

🔧 Suggested dependency fix
   const fetchSubmissions = useCallback(
     async (page = 1, filterOverrides?: OrganizerSubmissionFilters) => {
@@
-    [hackathonId, initialLimit, debouncedSearch, pagination.limit]
+    [
+      hackathonId,
+      initialLimit,
+      debouncedSearch,
+      pagination.limit,
+      filters.status,
+      filters.type,
+    ]
   );
 
   // Sync with backend on filter/pagination changes
   useEffect(() => {
-    fetchSubmissions(1);
-  }, [debouncedSearch, filters.status, filters.type, pagination.limit]);
+    void fetchSubmissions(1);
+  }, [fetchSubmissions]);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@hooks/hackathon/use-organizer-submissions.ts` around lines 54 - 104,
fetchSubmissions is closing over filters (specifically filters.status and
filters.type) but its useCallback deps only list hackathonId, initialLimit,
debouncedSearch, and pagination.limit, and the useEffect calls fetchSubmissions
without depending on the callback; update the useCallback dependency array for
fetchSubmissions to include filters.status and filters.type (in addition to the
existing deps) so it captures the latest filter values, and update the useEffect
dependency array to depend on fetchSubmissions (instead of listing
debouncedSearch/filters individually) or include fetchSubmissions alongside
debouncedSearch, filters.status, filters.type, and pagination.limit so the
effect invokes the latest callback.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/`(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx:
- Around line 76-98: Remove the "as any" casts in the filteredSubmissions
computation and where filters/updateFilters are cast; instead import and use the
proper submission type (e.g., ParticipantSubmission) returned by
useOrganizerSubmissions, update the property accesses in the filter callback to
match that type's real shape (replace subData.projectName /
subData.participant?.name / subData.participant?.username /
subData.participationType with the actual field names on ParticipantSubmission),
and update the filters types to use the typed filters from
useOrganizerSubmissions (remove casts around filters and updateFilters); in
short, fix the type/shape mismatch by aligning the filter logic in
filteredSubmissions and the call sites with the real API model rather than
silencing TypeScript with any.

In `@lib/api/organization.ts`:
- Line 280: Remove the noisy debug stack trace in getOrganization by deleting
the console.trace('org') call; if you need lightweight diagnostics instead,
replace it with a structured logger call (e.g., logger.debug or
processLogger.debug) that logs a simple message or relevant metadata without
emitting a full stack trace, ensuring the change is applied inside the
getOrganization function where console.trace was used.

---

Outside diff comments:
In `@hooks/hackathon/use-organizer-submissions.ts`:
- Around line 54-104: fetchSubmissions is closing over filters (specifically
filters.status and filters.type) but its useCallback deps only list hackathonId,
initialLimit, debouncedSearch, and pagination.limit, and the useEffect calls
fetchSubmissions without depending on the callback; update the useCallback
dependency array for fetchSubmissions to include filters.status and filters.type
(in addition to the existing deps) so it captures the latest filter values, and
update the useEffect dependency array to depend on fetchSubmissions (instead of
listing debouncedSearch/filters individually) or include fetchSubmissions
alongside debouncedSearch, filters.status, filters.type, and pagination.limit so
the effect invokes the latest callback.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8a056d48-9e53-425e-ae5e-9539b935cbf8

📥 Commits

Reviewing files that changed from the base of the PR and between 4fa41f9 and d8880ab.

📒 Files selected for processing (6)
  • app/(landing)/organizations/[id]/hackathons/[hackathonId]/participants/page.tsx
  • app/(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx
  • components/organization/hackathons/submissions/SubmissionsManagement.tsx
  • hooks/hackathon/use-organizer-submissions.ts
  • hooks/use-hackathons.ts
  • lib/api/organization.ts

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
app/(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx (1)

94-119: React Table configuration is unnecessary overhead.

The useReactTable instance is created solely to pass to DataTablePagination, but:

  • columns: [] means no column definitions
  • The table doesn't render any rows itself
  • SubmissionsManagement handles the actual data display

Since pagination is already managed by useOrganizerSubmissions (via goToPage, updateLimit, and pagination state), consider using the existing pagination controls within SubmissionsManagement or creating a simpler pagination component that doesn't require a full React Table instance.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/`(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx
around lines 94 - 119, The useReactTable call (useReactTable) creating an empty
table for DataTablePagination is unnecessary; remove the table creation and
instead wire DataTablePagination (or SubmissionsManagement) directly to the
existing pagination controls from useOrganizerSubmissions: pass pagination.page,
pagination.totalPages, pagination.limit and the handlers goToPage and
updateLimit (or implement a small Pagination component that calls
goToPage/updateLimit) so you can delete the table variable and any references to
columns: [], getCoreRowModel, manualPagination and onPaginationChange; ensure
SubmissionsManagement receives or renders the simple pagination props instead of
relying on a React Table instance.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@app/`(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx:
- Around line 75-119: The frontend is filtering only the current page
(filteredSubmissions via useMemo over allSubmissions) causing pagination
mismatch (pagination.totalPages stays backend total); remove the client-side
filtering and feed the table the backend-provided data directly so server-side
filters are authoritative: delete the filteredSubmissions useMemo and change
useReactTable data from filteredSubmissions to allSubmissions (keep pagination
state and onPaginationChange), and ensure filters from the UI are passed to the
existing useOrganizerSubmissions/getHackathonSubmissions so the backend returns
properly filtered pages.

---

Nitpick comments:
In
`@app/`(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx:
- Around line 94-119: The useReactTable call (useReactTable) creating an empty
table for DataTablePagination is unnecessary; remove the table creation and
instead wire DataTablePagination (or SubmissionsManagement) directly to the
existing pagination controls from useOrganizerSubmissions: pass pagination.page,
pagination.totalPages, pagination.limit and the handlers goToPage and
updateLimit (or implement a small Pagination component that calls
goToPage/updateLimit) so you can delete the table variable and any references to
columns: [], getCoreRowModel, manualPagination and onPaginationChange; ensure
SubmissionsManagement receives or renders the simple pagination props instead of
relying on a React Table instance.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 250aa6f7-316f-4bbd-a599-4372b209126d

📥 Commits

Reviewing files that changed from the base of the PR and between d8880ab and b6738bc.

📒 Files selected for processing (9)
  • app/(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx
  • components/hackathons/submissions/SubmissionDetailModal.tsx
  • components/organization/cards/Participant.tsx
  • components/organization/hackathons/ParticipantsGrid.tsx
  • components/organization/hackathons/ParticipantsTable.tsx
  • hooks/hackathon/use-organizer-submissions.ts
  • hooks/hackathon/use-register-hackathon.ts
  • hooks/use-submission-actions.ts
  • lib/api/hackathons.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • hooks/hackathon/use-organizer-submissions.ts

Comment on lines +75 to +119
// Frontend-side filtering
const filteredSubmissions = useMemo(() => {
return allSubmissions.filter(sub => {
const search = filters.search?.toLowerCase() || '';
const matchesSearch = search
? (sub.projectName || '').toLowerCase().includes(search) ||
(sub.participant?.name || '').toLowerCase().includes(search) ||
(sub.participant?.username || '').toLowerCase().includes(search)
: true;

const matchesStatus = !filters.status || sub.status === filters.status;

const matchesType =
!filters.type || sub.participationType === filters.type;

return matchesSearch && matchesStatus && matchesType;
});
}, [allSubmissions, filters.search, filters.status, filters.type]);

const table = useReactTable({
data: filteredSubmissions,
columns: [],
getCoreRowModel: getCoreRowModel(),
manualPagination: true,
pageCount: pagination.totalPages,
state: {
pagination: {
pageIndex: pagination.page - 1,
pageSize: pagination.limit,
},
},
onPaginationChange: updater => {
if (typeof updater === 'function') {
const newState = updater({
pageIndex: pagination.page - 1,
pageSize: pagination.limit,
});
if (newState.pageSize !== pagination.limit) {
updateLimit(newState.pageSize);
} else {
goToPage(newState.pageIndex + 1);
}
}
},
});
Copy link

@coderabbitai coderabbitai bot Mar 16, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Frontend filtering only operates on the current page, not the full dataset.

The current implementation has a fundamental mismatch between filtering and pagination:

  1. allSubmissions contains only the current page's data from the backend (e.g., 10 items)
  2. filteredSubmissions filters within this single page
  3. pagination.totalPages reflects the backend's total (e.g., 50 pages)
  4. DataTablePagination displays "Page 1 of 50" even when filtered results are empty

This creates confusing UX where users search for a term, see "0 results" on the current page, but pagination still shows 50 pages available. Navigating to another page fetches fresh backend data, making the filter appear to reset.

The backend already supports server-side filtering via getHackathonSubmissions(hackathonId, page, limit, filters). The useOrganizerSubmissions hook already passes filters.search, filters.status, and filters.type to the API. The frontend filtering layer here is redundant and creates the pagination mismatch.

Consider removing the frontend filteredSubmissions layer and relying entirely on the existing server-side filtering:

🔧 Suggested approach
- // Frontend-side filtering
- const filteredSubmissions = useMemo(() => {
-   return allSubmissions.filter(sub => {
-     const search = filters.search?.toLowerCase() || '';
-     const matchesSearch = search
-       ? (sub.projectName || '').toLowerCase().includes(search) ||
-         (sub.participant?.name || '').toLowerCase().includes(search) ||
-         (sub.participant?.username || '').toLowerCase().includes(search)
-       : true;
-
-     const matchesStatus = !filters.status || sub.status === filters.status;
-
-     const matchesType =
-       !filters.type || sub.participationType === filters.type;
-
-     return matchesSearch && matchesStatus && matchesType;
-   });
- }, [allSubmissions, filters.search, filters.status, filters.type]);

  // ... in render:
  <SubmissionsManagement
-   submissions={filteredSubmissions}
+   submissions={allSubmissions}
    // ... rest of props
  />

This ensures filtering and pagination are both handled server-side, providing accurate page counts and complete dataset filtering.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@app/`(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx
around lines 75 - 119, The frontend is filtering only the current page
(filteredSubmissions via useMemo over allSubmissions) causing pagination
mismatch (pagination.totalPages stays backend total); remove the client-side
filtering and feed the table the backend-provided data directly so server-side
filters are authoritative: delete the filteredSubmissions useMemo and change
useReactTable data from filteredSubmissions to allSubmissions (keep pagination
state and onPaginationChange), and ensure filters from the UI are passed to the
existing useOrganizerSubmissions/getHackathonSubmissions so the backend returns
properly filtered pages.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yea but the backend doesnt have filters implemented. We only implemented pagination and page size

Copy link

Choose a reason for hiding this comment

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

@Benjtalkshow, thanks for the clarification — that context makes the frontend filtering approach make total sense.

There is still a smaller residual issue worth noting: when filters are active, useReactTable still receives pageCount: pagination.totalPages (the server's unfiltered total). This means if a filter reduces the visible results to, say, 3 items on the current page, the pagination control will still display "Page 1 of 50" — because the backend total hasn't changed.

A minimal fix would be to compute a local page count based on the filtered results for display purposes:

const filteredPageCount = Math.max(1, Math.ceil(filteredSubmissions.length / pagination.limit));

const table = useReactTable({
  data: filteredSubmissions,
  columns: [],
  getCoreRowModel: getCoreRowModel(),
  manualPagination: true,
  pageCount: filters.search || filters.status || filters.type
    ? filteredPageCount   // local estimate when filters are active
    : pagination.totalPages, // server total when no filters
  // ...rest unchanged
});

This keeps the server-driven pagination when there are no active filters, and falls back to a locally-derived page count when filters narrow the results. It's not perfect (since filtering only covers the loaded page), but it avoids the confusing "0 results — Page 1 of 50" display.

That said, this is a known trade-off with client-side filtering over paginated data. If the datasets stay small enough to load all at once in the future, a full client-side approach (no server pagination + useMemo filter) would eliminate the ambiguity entirely.


✏️ Learnings added
Learnt from: Benjtalkshow
Repo: boundlessfi/boundless PR: 488
File: app/(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx:75-119
Timestamp: 2026-03-16T13:16:41.680Z
Learning: In the `app/(landing)/organizations/[id]/hackathons/[hackathonId]/submissions/page.tsx` file and related submissions hooks/components, the backend API (`getHackathonSubmissions`) only supports pagination and page size — it does NOT support server-side filtering (search, status, type). Frontend filtering via `useMemo` over `allSubmissions` is intentional and necessary as a workaround for this backend limitation.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@Benjtalkshow Benjtalkshow merged commit ed65b36 into boundlessfi:main Mar 16, 2026
6 of 8 checks passed
Benjtalkshow added a commit that referenced this pull request Mar 16, 2026
* feat: Implement comprehensive hackathon detail page with new header, sidebar, and tabbed content sections including teams, announcements, winners, participants, and resources.

* fix: update coderabit

* feat: Enhance hackathon team invitation flow, recruitment post management, and dynamic tab visibility.

* feat: Integrate AuthModalProvider for authentication handling and enhance messaging features across hackathon components

* fix: fix pagination issues in particiapants and submissions page for organizers

* fix: remove any type

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
@coderabbitai coderabbitai bot mentioned this pull request Mar 16, 2026
Benjtalkshow added a commit that referenced this pull request Mar 16, 2026
* fix: fix prize teirs place

* fix: fix prize teirs place

* Pr 486 (#488)

* feat: Implement comprehensive hackathon detail page with new header, sidebar, and tabbed content sections including teams, announcements, winners, participants, and resources.

* fix: update coderabit

* feat: Enhance hackathon team invitation flow, recruitment post management, and dynamic tab visibility.

* feat: Integrate AuthModalProvider for authentication handling and enhance messaging features across hackathon components

* fix: fix pagination issues in particiapants and submissions page for organizers

* fix: remove any type

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>

* Pr 486 (#490)

* feat: Implement comprehensive hackathon detail page with new header, sidebar, and tabbed content sections including teams, announcements, winners, participants, and resources.

* fix: update coderabit

* feat: Enhance hackathon team invitation flow, recruitment post management, and dynamic tab visibility.

* feat: Integrate AuthModalProvider for authentication handling and enhance messaging features across hackathon components

* fix: fix pagination issues in particiapants and submissions page for organizers

* fix: remove any type

* fix: enhanced filtering for organizations

* fix: fix coderabbit corrections

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Benjtalkshow added a commit that referenced this pull request Mar 16, 2026
* fix: fix prize teirs place

* fix: fix prize teirs place

* Pr 486 (#488)

* feat: Implement comprehensive hackathon detail page with new header, sidebar, and tabbed content sections including teams, announcements, winners, participants, and resources.

* fix: update coderabit

* feat: Enhance hackathon team invitation flow, recruitment post management, and dynamic tab visibility.

* feat: Integrate AuthModalProvider for authentication handling and enhance messaging features across hackathon components

* fix: fix pagination issues in particiapants and submissions page for organizers

* fix: remove any type

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>

* Pr 486 (#490)

* feat: Implement comprehensive hackathon detail page with new header, sidebar, and tabbed content sections including teams, announcements, winners, participants, and resources.

* fix: update coderabit

* feat: Enhance hackathon team invitation flow, recruitment post management, and dynamic tab visibility.

* feat: Integrate AuthModalProvider for authentication handling and enhance messaging features across hackathon components

* fix: fix pagination issues in particiapants and submissions page for organizers

* fix: remove any type

* fix: enhanced filtering for organizations

* fix: fix coderabbit corrections

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>

* fix: sync production with main changes

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
Benjtalkshow added a commit that referenced this pull request Mar 16, 2026
* Pr 486 (#488)

* feat: Implement comprehensive hackathon detail page with new header, sidebar, and tabbed content sections including teams, announcements, winners, participants, and resources.

* fix: update coderabit

* feat: Enhance hackathon team invitation flow, recruitment post management, and dynamic tab visibility.

* feat: Integrate AuthModalProvider for authentication handling and enhance messaging features across hackathon components

* fix: fix pagination issues in particiapants and submissions page for organizers

* fix: remove any type

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>

* Pr 486 (#490)

* feat: Implement comprehensive hackathon detail page with new header, sidebar, and tabbed content sections including teams, announcements, winners, participants, and resources.

* fix: update coderabit

* feat: Enhance hackathon team invitation flow, recruitment post management, and dynamic tab visibility.

* feat: Integrate AuthModalProvider for authentication handling and enhance messaging features across hackathon components

* fix: fix pagination issues in particiapants and submissions page for organizers

* fix: remove any type

* fix: enhanced filtering for organizations

* fix: fix coderabbit corrections

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>

---------

Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.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.

2 participants