Skip to content

Latest commit

ย 

History

History
114 lines (92 loc) ยท 5.37 KB

File metadata and controls

114 lines (92 loc) ยท 5.37 KB

ScheduleMaker ๐ŸŽ“โœจ

ู…ุฌุฏูˆู„ ุฌุงู…ุนุฉ ุทูŠุจุฉ ุงู„ุฐูƒูŠ | Smart Academic Schedule Generator for Taibah University

License: MIT Vite Privacy: 100% Client-Side

A modern, high-performance, open-source web application designed to automatically generate collision-free academic schedules for university students.


๐ŸŒŸ Key Highlights & Features (ุฃุจุฑุฒ ุงู„ู…ู…ูŠุฒุงุช)

  • ๐Ÿ”’ 100% Client-Side & Privacy First: Zero student data is sent to servers. Everything executes inside your browser using fast background Web Workers.
  • ๐Ÿ“… Interactive Weekly Timetable Grid (ุงู„ุฌุฏูˆู„ ุงู„ุฃุณุจูˆุนูŠ ุงู„ุชูุงุนู„ูŠ): Color-coded visual timetable (Sunday to Thursday, 08:00 to 18:00) with instructor information and instant detail popovers.
  • ๐Ÿ“Š Detailed Matrix Table View (ุฌุฏูˆู„ ุงู„ุชูุงุตูŠู„): Tabular overview showing course codes, sections, instructor names, times, and available seats.
  • โšก High-Performance Constraint Solver (ุฎูˆุงุฑุฒู…ูŠุฉ ุจุญุซ ู…ุชุทูˆุฑุฉ): DFS Backtracking solver with early branch pruning ($O(\text{valid combinations})$) running in a background Web Workerโ€”guaranteeing smooth 60fps UI even with thousands of potential combinations.
  • ๐ŸŽฏ Multi-Criteria Smart Filters (ูู„ุงุชุฑ ูˆุชุฑุชูŠุจ ุฐูƒูŠ):
    • Filter by Days Off (ุฃูŠุงู… ูุฑุงุบ 1, 2, 3+).
    • Filter by Available Seats Only (ุงู„ู…ู‚ุงุนุฏ ุงู„ู…ุชุงุญุฉ).
    • Live search by Doctor / Instructor Name or Section Number.
    • Sort by Least Gaps Between Lectures (ุฃู‚ู„ ูุฑุงุบุงุช), Earliest Finish, or Latest Start (No 8 AMs).
  • ๐Ÿ“ฒ Export & Calendar Sync (ุชุตุฏูŠุฑ ู…ุชูƒุงู…ู„):
    • iCalendar (.ics) Export: One-click sync with Apple Calendar, Google Calendar, and Microsoft Outlook.
    • High-Resolution PNG Snapshot: Download a crisp image of your schedule ready for WhatsApp and Telegram student groups.
    • Print-Friendly View (@media print): Clean layout optimized for physical A4 printing.
  • ๐Ÿ“ฅ Flexible All-in-One Input Hub (ุทุฑู‚ ุฅุฏุฎุงู„ ู…ุชุนุฏุฏุฉ):
    • Drag & Drop .html timetable file exported from TaibahReg (EAS).
    • Direct HTML/Text Paste Box.
    • 1-Click Demo Data Button for immediate testing without a university account.
  • ๐ŸŒ Full Bilingual Support (ุฏุนู… ุซู†ุงุฆูŠ ุงู„ู„ุบุฉ ุจุงู„ูƒุงู…ู„):
    • Arabic (ุงู„ุนุฑุจูŠุฉ - RTL) & English (LTR).
    • Sleek Dark Mode & Light Mode themes with modern typography (Tajawal, Outfit, JetBrains Mono).

๐Ÿš€ Quick Start & Local Development

Prerequisites

  • Node.js (v18 or higher)
  • npm or pnpm or yarn

Installation

# Clone the repository
git clone https://github.com/your-username/schedulemaker.git
cd schedulemaker

# Install dependencies
npm install

# Start local development server
npm run dev

Production Build

# Compile and bundle static assets to /dist
npm run build

# Preview production build locally
npm run preview

๐Ÿ“– How to Use with Taibah University Portal (ูƒูŠููŠุฉ ุงู„ุงุณุชุฎุฏุงู…)

  1. Log into TaibahReg (EAS) at eas.taibahu.edu.sa.
  2. Navigate to the Timetable (ุงู„ุฌุฏูˆู„ ุงู„ุฒู…ู†ูŠ) page.
  3. Right-click anywhere in the page and select Save As... (ุญูุธ ุจุงุณู…) as an HTML file.
  4. Drag and drop the saved file into ScheduleMaker.
  5. Add your desired course codes and numbers, then click Generate Valid Schedules (ุชูˆู„ูŠุฏ ูˆุจุญุซ ุงู„ุฌุฏุงูˆู„)!

๐Ÿ› ๏ธ Architecture Overview

src/
โ”œโ”€โ”€ components/          # Reusable UI controllers
โ”‚   โ”œโ”€โ”€ CalendarGrid.js  # Weekly graphical time matrix
โ”‚   โ”œโ”€โ”€ TableView.js     # Detailed table breakdown
โ”‚   โ”œโ”€โ”€ CourseSelector.js# Autocomplete course builder
โ”‚   โ”œโ”€โ”€ FilterBar.js     # Multi-criteria filter & sort
โ”‚   โ”œโ”€โ”€ ImportModal.js   # Drag-and-drop & paste modal
โ”‚   โ”œโ”€โ”€ HelpModal.js     # Interactive tutorial guide
โ”‚   โ””โ”€โ”€ Notification.js  # Web Audio synthesized chime & toasts
โ”œโ”€โ”€ engine/              # Core scheduling logic
โ”‚   โ”œโ”€โ”€ parser.js        # Semantic HTML table extractor
โ”‚   โ”œโ”€โ”€ time.js          # Normalizer (minutes from 00:00 & collision detection)
โ”‚   โ”œโ”€โ”€ sampleData.js    # Realistic Taibah sample dataset
โ”‚   โ”œโ”€โ”€ solver.js        # Main-thread coordinator
โ”‚   โ””โ”€โ”€ solver.worker.js # Web Worker DFS backtracking engine
โ”œโ”€โ”€ i18n/                # Localization dictionary (AR / EN)
โ”‚   โ””โ”€โ”€ translations.js
โ”œโ”€โ”€ styles/              # Design system & theme tokens
โ”‚   โ”œโ”€โ”€ variables.css
โ”‚   โ”œโ”€โ”€ base.css
โ”‚   โ”œโ”€โ”€ components.css
โ”‚   โ””โ”€โ”€ calendar.css
โ”œโ”€โ”€ utils/               # Exporters & Storage
โ”‚   โ”œโ”€โ”€ icsExporter.js   # iCalendar RFC 5545 generator
โ”‚   โ”œโ”€โ”€ imageExporter.js # High-res PNG snapshot generator
โ”‚   โ””โ”€โ”€ storage.js       # LocalStorage state persistence
โ”œโ”€โ”€ index.html           # Semantic HTML5 entrypoint
โ””โ”€โ”€ main.js              # Application bootstrapper

๐Ÿ“„ License

This project is open-source and available under the MIT License.