Skip to content

Dashboard & RSVP — frontend implementation #467

@adityapat24

Description

@adityapat24

Goal

The dashboard renders the correct branch view from real data, all six views are styled, and the RSVP form works end-to-end against mocks.

Tasks

Dashboard routing

  • /dashboard page server-fetches GET /api/v1/status, reads the branch field, renders the matching view component.
    • What this accomplishes: Each applicant sees exactly the view their state warrants, with no client-side flicker between branches.
  • Loading skeleton while status is being fetched (or use Next.js loading.tsx).
    • What this accomplishes: No jarring blank screen on initial load.

Branch views — content and styling

  • PreRegistrationView: countdown to registration open date, "Applications open in X days" hero, link to learn more about HackBeanpot.
    • What this accomplishes: Users who land before applications open get hyped instead of confused.
  • InProgressView: "You've started your application" message, "X% complete" indicator (can be a stub for now), big "Continue application" CTA → /application.
    • What this accomplishes: Returning users get an immediate path back to their draft.
  • SubmittedView: "We've received your application" confirmation, expected decision date, "Edit application" link if registration is still open.
    • What this accomplishes: Applicants know they're in the system and what comes next.
  • AdmittedView: celebratory hero, "You're in!" message, confirm-by deadline displayed, "RSVP now" CTA → /rsvp.
    • What this accomplishes: Admitted applicants get a real moment, plus an urgent and clear next step.
  • WaitlistedView: "You're on the waitlist" message, explanation of what that means, contact info if they have questions.
    • What this accomplishes: Sets expectations and prevents support-channel confusion.
  • DeclinedView: respectful copy, "we hope to see you next year," link to mailing list signup.
    • What this accomplishes: Soft landing for a hard outcome. Keeps the relationship open.

RSVP page

  • /rsvp server-fetches status; if not admitted or past confirm-by, redirect to /dashboard.
    • What this accomplishes: Only the right users can hit the RSVP page. Direct URL access by non-admitted users gets bounced.
  • RsvpForm: post-acceptance question fields (dietary restrictions, t-shirt size, etc.) using RHF + Zod.
    • What this accomplishes: Admitted applicants can confirm attendance and share logistics info.
  • ConfirmByCountdown: shows time remaining, updates every minute, disables submit when expired.
    • What this accomplishes: Live urgency. Users can't accidentally try to submit after the deadline.
  • Submit calls POST /api/v1/post-acceptance, toast on success, redirect to /dashboard.
    • What this accomplishes: Clear feedback loop, and the dashboard then shows the post-RSVP state.

Styling

  • All six branch views feel like part of the same product (consistent typography, spacing, button style).
  • Desktop-friendly.

Definition of done

  • By tweaking the mock status response, every one of the six branch views can be rendered and reviewed.
  • RSVP form validates, submits to the mock endpoint, and handles success/error toast paths.
  • Confirm-by countdown ticks down and disables the form at the right moment.

Metadata

Metadata

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions