{"id":27998352,"url":"https://github.com/technovore007/time-table-generator","last_synced_at":"2026-05-16T08:38:23.887Z","repository":{"id":291627797,"uuid":"978230582","full_name":"technovore007/Time-Table-Generator","owner":"technovore007","description":"\"A smart, modern Timetable Generator with light/dark mode, smooth animations.\"","archived":false,"fork":false,"pushed_at":"2025-05-09T04:40:00.000Z","size":64,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-23T00:06:01.437Z","etag":null,"topics":["css","productivity","timetable-generator"],"latest_commit_sha":null,"homepage":"https://technovore007.github.io/Time-Table-Generator/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/technovore007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-05T17:06:45.000Z","updated_at":"2025-05-10T05:46:03.000Z","dependencies_parsed_at":"2025-06-23T00:06:02.136Z","dependency_job_id":"57ca5146-192a-4794-883f-84324e3b1d32","html_url":"https://github.com/technovore007/Time-Table-Generator","commit_stats":null,"previous_names":["technovore007/time-table-generator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/technovore007/Time-Table-Generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technovore007%2FTime-Table-Generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technovore007%2FTime-Table-Generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technovore007%2FTime-Table-Generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technovore007%2FTime-Table-Generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technovore007","download_url":"https://codeload.github.com/technovore007/Time-Table-Generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technovore007%2FTime-Table-Generator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267988489,"owners_count":24176996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","productivity","timetable-generator"],"created_at":"2025-05-08T22:52:40.702Z","updated_at":"2026-05-16T08:38:23.828Z","avatar_url":"https://github.com/technovore007.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📅 Interactive Timetable Generator\n\nA lightweight, browser-based solution for creating optimized academic or work schedules with an intuitive step-by-step wizard interface.\n\n![Timetable Generator Screenshot](assets/ss.png)\n\n## ✨ Features\n\n- **Interactive 4-Step Wizard** - Streamlined user experience with logical progression\n- **Smart Scheduling Algorithm** - Optimized course placement with collision avoidance\n- **Responsive Design** - Works on desktop, tablet, and mobile devices\n- **No Server Required** - Pure client-side processing with zero dependencies\n- **Print-Ready Output** - Professional, clean timetable layout ready for printing\n- **Form Validation** - Prevents common user errors and duplicate entries\n- **Custom Time Slots** - Different timeslots for weekdays vs. weekends\n\n## 🔧 Technologies Used\n\n- **HTML5** - Semantic markup structure\n- **CSS3** - Modern styling with animations and transitions\n- **Vanilla JavaScript** - No frameworks or libraries\n- **Modular Architecture** - Separate JS files for specific functionality\n- **Responsive Grid Layout** - CSS grid for the timetable display\n- **Modern Web Fonts** - Google Fonts (Roboto) for typography\n\n## 🧠 Algorithms \u0026 Techniques\n\n### Course Scheduling Algorithm\n\nThe timetable generation uses a randomized greedy assignment algorithm with the following approach:\n\n1. **Grid Initialization** - Creates a 2D matrix of all possible time slots across days\n2. **Course Assignment** - For each course:\n   - Attempts to schedule required sessions across different days when possible\n   - Respects course duration (consecutive time slots)\n   - Ensures no overlap with already scheduled courses\n   - Uses a \"tries\" limit to prevent infinite loops\n\n### Collision Avoidance Logic\n\nThe `isFree()` function validates availability by:\n- Checking if a sequence of consecutive slots is available\n- Confirming the course duration fits within the day's schedule\n- Verifying no other course is already assigned to these slots\n\n### Smart Session Distribution\n\n- Prioritizes scheduling sessions on different days when possible\n- Maintains a set of \"used\" days to track where a course has been placed\n- Falls back to same-day scheduling if necessary to fulfill requirements\n\n## 🚀 Getting Started\n\n### Prerequisites\n- Any modern web browser (Chrome, Firefox, Safari, Edge)\n\n### Installation\n1. Clone this repository or download the ZIP file\n2. Extract files to your desired location\n3. Open `index.html` in your browser\n\nNo build process, server, or installation required!\n\n## 📋 User Flow\n\n### Step 1: Enter Course Information\n- Input course details including:\n  - Course code (unique identifier)\n  - Duration (how many consecutive hours each session takes)\n  - Sessions per week (how many times the course meets weekly)\n- Add as many courses as needed with the \"+ Add Course\" button\n- Each entry is validated in real-time\n\n### Step 2: Preview and Confirm\n- Review all entered course information in a tabular format\n- Make any necessary modifications\n- Remove courses if needed\n- Confirm the data is correct before proceeding\n\n### Step 3: Generate Timetable\n- Briefly displays a loading animation while the scheduling algorithm works\n- Processes all course requirements and constraints\n- Creates an optimized schedule that attempts to:\n  - Distribute sessions across different days\n  - Avoid time conflicts\n  - Respect course durations\n\n### Step 4: View and Export\n- Display the final generated timetable in a grid layout\n- Days of the week are shown across columns\n- Time slots are shown in rows\n- Each cell displays the assigned course code (if any)\n- Export options:\n  - Print directly from the browser\n  - Start over with the \"New\" button\n\n## 🔍 Project Structure\n\n```\ntimetable-generator/\n├── index.html         # Main wizard interface\n├── timetable.html     # Direct timetable view\n├── css/\n│   └── style.css      # Styling and animations\n├── js/\n│   ├── app.js         # Step navigation logic\n│   ├── form.js        # Form handling and validation\n│   └── timetable.js   # Schedule generation algorithm\n└── assets/\n    └── favicon.ico    # Favicon\n```\n\n## 🛠️ Customization Options\n\nThe timetable generator can be easily customized by modifying:\n\n- **Time slots** - Edit the `weekdaySlots` and `saturdaySlots` arrays in `timetable.js`\n- **Days** - Modify the `days` array in `timetable.js`\n- **Styling** - Customize appearance in `style.css`\n- **Validation rules** - Adjust form validation in `form.js`\n\n## 📝 Limitations \u0026 Future Improvements\n\n- Currently limited to predefined time slots\n- No persistence (refreshing page clears all data)\n- Does'nt considers lunch breaks\n- Future plans:\n  - Local storage for saving timetables\n  - Export to calendar formats (iCal, Google Calendar)\n  - Additional constraints (teacher availability, room assignments)\n  - Drag-and-drop interface for manual adjustments\n\n## 👥 Contributing\n\nFeel free to fork this project and submit pull requests! Areas for improvement include:\n\n- More sophisticated scheduling algorithms\n- Additional export options\n- Enhanced UI/UX\n- Mobile app wrapper\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n---","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnovore007%2Ftime-table-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnovore007%2Ftime-table-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnovore007%2Ftime-table-generator/lists"}