| app | ||
| components | ||
| data | ||
| lib | ||
| public | ||
| .gitignore | ||
| bun.lock | ||
| components.json | ||
| CONTRIBUTING.md | ||
| eslint.config.mjs | ||
| next.config.ts | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
Elective Cutoffs
A web application for browsing and filtering elective course cutoffs (CGPA requirements) for MIT Manipal students for the dataset from the Academic Year 2025-2026. This tool helps students make informed decisions when selecting open electives (OE), program electives I (PE I), and program electives II (PE II).
Features
- Browse Electives: View all available electives across different categories
- Filter by Type: Separate views for Open Electives, PE I, and PE II
- Filter by Department: Filter electives by offering department
- Search: Search by course code, name, or department
- Sort Options: Sort by name, cutoff (CGPA), number of students, or difficulty
- Statistics Dashboard: Overview of cutoff ranges and available courses
Tech Stack
- Framework: Next.js 16
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui (built on Radix UI and Base UI)
- Package Manager: Bun
Getting Started
Prerequisites
- Bun (recommended) or Node.js 18+
- A modern web browser
Installation
-
Clone the repository:
git clone <repository-url> cd elective-cutoffs -
Install dependencies:
bun install -
Start the development server:
bun dev -
Open http://localhost:3000 in your browser.
Available Scripts
bun dev- Start the development serverbun build- Build for productionbun start- Start the production serverbun lint- Run ESLint
Project Structure
elective-cutoffs/
├── app/ # Next.js App Router pages
│ ├── page.tsx # Main dashboard page
│ ├── layout.tsx # Root layout
│ └── globals.css # Global styles
├── components/
│ ├── elective-dashboard.tsx # Main dashboard component
│ ├── example.tsx # Component examples
│ └── ui/ # shadcn/ui components
├── data/
│ └── elective_cutoffs.csv # Raw elective data
├── lib/
│ ├── electives.ts # Elective data & utilities
│ └── utils.ts # Utility functions
├── public/ # Static assets
├── package.json
├── next.config.ts
├── tsconfig.json
└── tailwind.config.ts
Data Format
Elective data is sourced from data/elective_cutoffs.csv. The CSV format is:
Elective Type,Course Name,Lowest CGPA (Cutoff),Highest CGPA,Number of Students
Open Elective (OE),COURSE CODE : Course Name,6.75,8.98,70
After updating the CSV, regenerate the data in lib/electives.ts by running:
bun run scripts/generate-data
Or manually parse the CSV using the existing parseCourseName function pattern.
Customization
Adding New Electives
- Add the new course to
data/elective_cutoffs.csv - Update
lib/electives.tsby adding a new entry toelectiveDataarray - The course will automatically appear in the dashboard
UI Components
This project uses shadcn/ui for components. To add a new component:
bunx shadcn@latest add <component-name>
Deployment
Vercel (Recommended)
The easiest way to deploy is with Vercel:
- Push your code to GitHub
- Import the repository in Vercel
- Deploy
Other Platforms
For other hosting platforms, build the production version:
bun build
bun start
Contributing
Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.
License
This project is for educational purposes. The elective data is sourced from institutional records.