Overview
EnrollMate is a client-side intelligent timetable planning tool designed to help students build, visualize, and export personalized course schedules with zero backend dependency. The system converts a raw list of available courses into a clean, conflict-free, exportable timetable - entirely inside the browser.
Problem Statement
Most students face the same recurring pain every enrollment cycle:
- Choosing compatible courses from an overwhelming, unstructured list
- Discovering slot conflicts only after finalizing selections
- No way to filter schedules around preferred free days or time blocks
- Institutional portals with broken or missing export options EnrollMate addresses these challenges using client-side conflict intelligence and a structured selection workflow.
System Architecture
EnrollMate follows a frontend-first, zero-server architecture consisting of:
- Data Layer – Browser-based course input via paste workflow or extension injection
- App Runtime – React 18 + Vite for fast, component-driven rendering
- Processing Layer – Client-side conflict detection and filter logic
- Persistence Layer –
localStoragevia Zustand persistence middleware
Repository Structure
Timetable Decision Engine
The conflict and filter engine processes user selections and produces actionable timetable outputs.
Inputs
- Selected course list
- Preferred free days
- Preferred free time windows
- Compatibility rules
Outputs
- Validated, conflict-free timetable
- Conflict warnings for overlapping slots
- Filtered course recommendations
- Export-ready timetable view The decision logic runs entirely on the client - no API calls, no latency, no data leaving the browser.
Frontend Flow
The frontend provides:
- Course data input via paste or auto-injection
- Search and selection interface with conflict feedback
- Filter controls for days, times, and compatibility
- Visual timetable grid with slot mapping
- PDF export and download action The UI state is fully reactive and updates instantly on every selection change.
Data Storage & Persistence
Zustand with localStorage persistence is used for:
- Storing selected course state across sessions
- Preserving filter preferences
- Maintaining timetable configuration without re-entry This ensures a seamless experience with no login requirement and no external storage dependency.
Data Flow
Key Functional Features
- Intelligent conflict detection based on overlapping day/time slots
- Course selection with real-time timetable visualization
- Filtering by free days, free time windows, and compatibility rules
- Export-ready timetable view with PDF download
- Persistent local state — selections survive page refreshes
- Zero backend dependency — fully offline capable
Security Considerations
- No user data transmitted to any external server
- No authentication layer — no credentials stored
- All course data remains local to the user's browser
- No sensitive data exposed or persisted beyond
localStorage
Extensibility
The system is designed to support future enhancements such as:
- Browser extension for one-click institutional course data injection
- Multi-semester comparison and planning views
- Shareable timetable links via URL-encoded state
- Integration with institutional course catalog APIs
- Enrollment deadline notifications and reminders
Summary
EnrollMate transforms the chaos of course selection into a structured, conflict-aware, exportable timetable - with no servers, no logins, and no friction. The platform is built to run fast, work offline, and stay entirely in the student's control.