A high-performance, automated timetable planner designed specifically for VIT Bhopal students under the Fully Flexible Credit System (FFCS).
- Algorithmic Scheduling: Automatically generates valid timetables based on your selected courses.
- Custom Preferences:
- Time Mode: Prioritize Morning, Afternoon, or Middle slots.
- Avoidance: Set strict rules to avoid 8:30 AM or 7:30 PM classes.
- Teacher Ranking: Rank your preferred faculties to ensure you get the best teachers.
- Unified Strategy: Uses advanced tiered generation to balance teacher quality with time preferences.
- Save Configurations: Save your perfect timetable drafts to viewing later.
- Preview & Apply: View detailed previews of saved timetables and apply them with one click.
- Management: Delete old drafts or load them back into the main view.
- HTML Import: Directly upload the HTML file from the VIT Registration Page (VTOP).
- CSV Import: Power user? Upload a structured CSV file with course data.
- AI/OCR Import: Use AI to extract the data automatically from screenshots.
- Manual Entry: flexible form for single course additions.
- Automated Clash Detection: Instantly checks if a new course conflicts with your existing schedule (Parallel Processing).
- Google Login: Secure authentication for students to save their timetables across devices.
- PDF Export: One-click download of your finalized timetable.
- Interactive UI:
- Visual Legend: Courses color-coded for distinct visibility.
- Optimized Performance: GZIP compression and parallel fetching for instant loads.
- Mobile Friendly: Responsive design for planning on the go.
- Cloud Sync: Data persists in CockroachDB (Serverless Postgres), ensuring you never lose your plan.
- Backend: Flask (Python) with SQLAlchemy ORM.
- Database: CockroachDB (PostgreSQL compatible) - chosen for serverless scalability.
- Frontend: Vanilla JavaScript (ES6+), CSS3 (Custom Design), HTML5.
- Hosting: Vercel (Serverless Function adapter).
- Analytics: Google Analytics 4 (GA4).
This project has been heavily optimized for "F1-level" speed:
- Parallel Imports: Uploading multiple HTML files happens concurrently via
Promise.all. - Database Indexing: ownership fields (
user_id,guest_id) are indexed for O(1) lookups. - GZIP Compression: JSON responses are compressed (reducing size by ~70%).
- Static Caching: Assets are cached by the browser to minimize network requests.
- Connection Pooling: Robust
pool_pre_pingprevents serverless timeout errors.
-
Clone the Repository
git clone https://github.com/yourusername/ffcs-timetable.git cd ffcs-timetable -
Install Dependencies
pip install -r requirements.txt
-
Environment Variables Create a
.envfile in the root directory:# Database (CockroachDB or Local Postgres) DATABASE_URL="postgresql://user:pass@host:port/dbname?sslmode=require" # Google OAuth GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" SECRET_KEY="your-flask-secret-key"
-
Run the App
python app.py
Access at
http://localhost:5000.
This project is configured for Vercel out-of-the-box using vercel.json.
- Install Vercel CLI:
npm i -g vercel - Deploy:
vercel
- Add Environment Variables in Vercel Dashboard (Settings > Environment Variables).
Google Analytics 4 is integrated. To enable it:
- Update
templates/base.htmlwith your Measurement ID (G-XXXXXXXX). - Current ID:
G-F03ZLSX9P7.
The app uses a carefully curated palette to distinguish courses:
- Core: Light Green, Sky Blue, Light Pink, Plum.
- Distinct: Coral, Dark Turquoise, Orchid (Added to prevent confusion).
- Fork the repo.
- Create a feature branch.
- Submit a Pull Request.
Made with ❤️ by Mehul K. Patel