Skip to content

feat: Add application tracking dashboard for students#1968

Open
Pcmhacker-piro wants to merge 2 commits into
JhaSourav07:mainfrom
Pcmhacker-piro:fix/student-application-dashboard
Open

feat: Add application tracking dashboard for students#1968
Pcmhacker-piro wants to merge 2 commits into
JhaSourav07:mainfrom
Pcmhacker-piro:fix/student-application-dashboard

Conversation

@Pcmhacker-piro
Copy link
Copy Markdown

Fixes #1961

Pillar

  • 🎨 Pillar 1 — New Theme Design
  • 📐 Pillar 2 — Geometric SVG Improvement
  • 🕐 Pillar 3 — Timezone Logic Optimization
  • 🛠️ Other (Bug fix, refactoring, docs)

Description

This PR adds a complete application tracking dashboard for students, giving them full visibility into their placement progress after submitting job applications.

Currently, students have no way to check whether their application is pending, shortlisted, rejected, or selected. This feature introduces a dedicated "My Applications" section with status badges, interview schedules, company feedback, and the ability to withdraw applications before review.

What's Changed

New Models

  • models/Job.ts — Mongoose schema for job listings with fields: company, role, description, location, createdAt
  • models/Application.ts — Mongoose schema for applications with fields: studentUsername, jobId (ref to Job), status, interviewDate, companyFeedback, timestamps

New TypeScript Types

  • types/applications.tsApplicationStatus union type and JobData/ApplicationData interfaces for type-safe API responses

New API Endpoints

  • GET /api/student/applications?username=<username> — Returns all applications by the logged-in student with populated job details, sorted newest first
    • 400 if username is missing/invalid
    • 500 on internal error
  • PATCH /api/student/applications/:id/withdraw — Sets application status to withdrawn
    • Only allowed when current status is applied (returns 400 otherwise)
    • 404 if application ID not found
    • 500 on internal error

New Page: /student-my-applications

  • Username search bar for looking up applications
  • Card-based layout showing each application with:
    • Job role, company name, location
    • Job description (truncated to 2 lines)
    • Color-coded status badge
    • Applied date
    • Interview date display (when available)
    • Company feedback banner (when available)
    • Withdraw button for applications with applied status
  • Dark mode support matching existing app styling
  • Loading spinner during fetches
  • Empty state when no applications exist
  • Error banner on API failures

Status Badge Color Scheme

Status Color
Applied Blue
Shortlisted Yellow
Interview Scheduled Purple
Rejected Red
Selected Green
Withdrawn Gray

Visual Preview

N/A — no UI screenshots available.

Checklist before requesting a review:

  • I have read the CONTRIBUTING.md file.
  • I have tested these changes locally (localhost:3000/api/streak?user=YOUR_USERNAME).
  • I have run npm run format and npm run lint locally and resolved all errors (CI will fail otherwise).
  • My commits follow the Conventional Commits format (e.g., feat(themes): ..., fix(calculate): ...).
  • I have updated README.md if I added a new theme or URL parameter.
  • I have started the repo.
  • I have made sure that i have only one commit to merge in this PR.
  • The SVG output matches the CommitPulse "premium quality" aesthetic standard (no raw elements, smooth animations, correct fonts).
  • (Recommended) I joined the CommitPulse Discord community for contributor discussions, mentorship, and faster PR support.

@vercel
Copy link
Copy Markdown
Contributor

vercel Bot commented May 31, 2026

Someone is attempting to deploy a commit to the jhasourav07's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions
Copy link
Copy Markdown

👋 Hey @Pcmhacker-piro, welcome to CommitPulse! 🎉

Thanks for opening your first pull request — this is a big deal and we appreciate the effort!

While you wait for a review, please double-check:

  • ✅ You've read the CONTRIBUTING.md checklist
  • npm run lint, npm run format, and npm run test all pass locally
  • ✅ Your PR has a visual preview if it touches any SVG output
  • 💬 You've joined our Discord for faster PR feedback

A maintainer will review your PR shortly. Hang tight! 🚀

@github-actions github-actions Bot added the status:blocked This PR is blocked due to a failing CI check. label May 31, 2026
@github-actions
Copy link
Copy Markdown

🚨 Hey @Pcmhacker-piro, the CI Pipeline is failing on this PR and it has been marked as status:blocked.

Please fix the issues before this can be reviewed. Here's how:

1. Run checks locally before pushing:

npm run format:check   # Check Prettier formatting
npm run lint           # Run ESLint
npm run typecheck      # TypeScript type check
npm run test           # Run unit tests (Vitest)
npm run build          # Verify production build passes

2. Auto-fix common issues:

npm run format         # Auto-fix formatting with Prettier
npm run lint -- --fix  # Auto-fix lint errors where possible

3. Check the full failure log here:
👉 View CI Run

Once you push a fix and the CI passes, the status:blocked label will be removed automatically. 💪

@github-actions github-actions Bot removed the status:blocked This PR is blocked due to a failing CI check. label May 31, 2026
@Pcmhacker-piro
Copy link
Copy Markdown
Author

@JhaSourav07 Hi Mentor,
all checks are passing except the Vercel authorization check. Could you please review the PR when you get a chance? Thanks! 🙌

@Aamod007
Copy link
Copy Markdown
Collaborator

@Pcmhacker-piro SS OF THE UI PAGE

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.

feat: Add application tracking dashboard for students

2 participants