-
Notifications
You must be signed in to change notification settings - Fork 77
Open
Labels
Beta-Campaigndifficulty: mediumfrontendhelp wantedExtra attention is neededExtra attention is neededresponsive-design
Description
Implementation of "Participating" Page (app/me/hackathons)
Objective
Provide users with a centralized, visually rich view of all their active engagements across hackathons and projects. This page draws exclusively from the GetMeResponse dataset already available in the session — no additional API calls should be made. The goal is a fast, seamless experience that feels instant because it operates entirely on cached session data. There is an existing UI on the page. Kindly reuse them.
UI Description
Aesthetics
This page should feel like a personal mission control — at a glance, users should be able to see exactly where they stand across every active commitment. The design should be bold, structured, and immediately informative without feeling cluttered.
Dashboard Layout
- Implement a tabbed interface with the following tabs:
All|Hackathons|Projects - Tabs must use vibrant active-state indicators — clearly distinguishing the selected tab from inactive ones (e.g., animated underline, accent color fill, or glow effect consistent with the Boundless design language)
- The
Alltab should serve as the default view, aggregating content from both sub-categories into a unified, chronologically or relevance-sorted feed
Cards
- Reuse the existing
HackathonCardcomponent as the base - Extend each card with a Progress Indicator overlay that reflects the user's current submission stage status (e.g.,
Not Started,In Progress,Submitted,Under Review,Results Pending) - The overlay should be visually distinct but non-intrusive — a badge, status bar, or subtle tag that enhances the card without obscuring its core content
- Cards should be responsive and maintain visual consistency across breakpoints
Spacing & Polish
- Apply generous whitespace between cards and sections to avoid a cramped or overwhelming layout
- Use consistent
rounded-4xlcorner radius on all cards to maintain a modern, premium feel - Ensure the page feels cohesive with the rest of the
app/me/*dashboard family
Technical Details
Hooks & Data Path
Hook
- Use
useAuthStatus()to access the current session and authenticated user data
Session Mapping
- Pull engagement data from two fields on the session user object:
user.profile.hackathonsAsParticipant— hackathons the user has explicitly joined as a participantuser.profile.userHackathons— hackathons associated with the user's submitted projects
Merging Logic
- Use
useMemoto combine both data sources into a single, deduplicated "Active Engagements" list - The merge should handle overlapping entries gracefully (e.g., a hackathon appearing in both fields should only render once)
- Sorting should prioritize active or in-progress engagements above completed or upcoming ones
- The unified list should be the single source of truth driving all three tab views, with each tab simply filtering from it
⚠️ Caution
This is a production environment — not a sandbox.
- Code must be performant, accessible, and clean
- No dummy data — all data must be sourced strictly from the
GetMeResponsesession dataset; no additional API calls should be introduced - AI-generated code will be scrutinized; poorly structured or "hallucinated" code will result in immediate issue closure
- Follow the existing design system: shadcn/ui, Tailwind, Framer Motion
Testing & Verification
Automated Tests
npm run lint # Ensure code quality
npm run build # Verify no breaking changes in routing or typesManual Verification
- Confirm that no additional API calls are made on page load — all data must come from the existing session via
useAuthStatus() - Verify that
hackathonsAsParticipantanduserHackathonsare correctly merged and deduplicated viauseMemo - Test all three tabs (
All,Hackathons,Projects) — confirm each filters the unified list correctly - Verify the Progress Indicator overlay on each card accurately reflects the user's current submission stage
- Check active tab indicators are visually distinct and animate correctly on tab switch
- Confirm
rounded-4xlcorner radius and generous spacing are consistently applied across all cards - Test the page at multiple breakpoints to confirm responsive layout integrity
- provide video evidence
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Beta-Campaigndifficulty: mediumfrontendhelp wantedExtra attention is neededExtra attention is neededresponsive-design