A comprehensive course planning tool for VIT University's Fully Flexible Credit System (FFCS). This Next.js application helps students plan their academic schedules, manage course selections, and optimize their timetables.
- Course Selection: Browse and select from available courses
- Timetable Generation: Automatically generate conflict-free timetables
- Credit Management: Track credit requirements and course loads
- Schedule Optimization: Find the best possible schedule combinations
- Export Options: Export timetables in various formats
- Responsive Design: Works seamlessly on desktop and mobile devices
This is a Next.js project bootstrapped with create-next-app.
- Frontend: Next.js 14, React, TypeScript
- Styling: Tailwind CSS
- State Management: React Context/Hooks
- Data Storage: Local Storage / IndexedDB
- Build Tool: Webpack (via Next.js)
ffcs-planner/
├── app/ # Next.js App Router pages
├── components/ # Reusable React components
├── lib/ # Utility functions and helpers
├── public/ # Static assets
├── types/ # TypeScript type definitions
└── data/ # Course data and mock files
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
- Clone the repository:
git clone https://github.com/yourusername/ffcs-planner.git
cd ffcs-planner- Install dependencies:
npm install
# or
yarn install
# or
pnpm install- Copy environment variables:
cp .env.example .env.local- Browse Courses: View available courses by category, department, or semester
- Add to Cart: Select courses you're interested in
- Generate Timetable: Let the system create conflict-free schedule combinations
- Review Options: Compare different schedule possibilities
- Export: Download your finalized timetable
- The application uses mock data stored in
/datafolder - Course conflicts are resolved using a constraint satisfaction algorithm
- Timetable generation supports multiple optimization criteria (minimal gaps, preferred time slots, etc.)
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style and conventions
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
The application includes several key modules:
interface Course {
code: string; // Course code (e.g., "CSE101")
title: string; // Course title
credits: number; // Credit value
slots: string[]; // Time slots (e.g., ["A1", "B1"])
instructor: string; // Faculty name
venue: string; // Classroom/Lab
type: "theory" | "lab" | "project";
}The system uses a constraint satisfaction algorithm to generate valid timetables:
- Prevents slot conflicts
- Ensures credit requirements are met
- Optimizes for user preferences (optional)
- Large course datasets may cause performance issues
- Export functionality limited to Image
- Mobile responsive design needs improvement for tablets
This project is licensed under the MIT License - see the LICENSE file for details.
- VIT University for the FFCS system
- Next.js team for the excellent framework
- Contributors and beta testers
- Open source community
This project was inspired by the great work of:
- Sarvesh Dakhore - @sarveshdakhore
- Vatsal Joshi (Initial work) - @vatz88
For support and questions:
- Open an issue on GitHub
- Email: mallidipraveenkumarreddy@gmail.com
- Documentation: Wiki
Made with ❤️ for VIT students