{"id":43834231,"url":"https://github.com/hloc26/scheduler-standalone","last_synced_at":"2026-02-12T22:11:58.940Z","repository":{"id":330854695,"uuid":"1124197908","full_name":"HLoc26/scheduler-standalone","owner":"HLoc26","description":"A desktop application for generating and managing teacher schedule. Targeting school administrators.","archived":false,"fork":false,"pushed_at":"2026-02-03T17:22:47.000Z","size":302,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-03T18:27:50.429Z","etag":null,"topics":["java-25","javafx"],"latest_commit_sha":null,"homepage":"","language":"Java","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/HLoc26.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-28T14:45:52.000Z","updated_at":"2026-02-03T14:51:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/HLoc26/scheduler-standalone","commit_stats":null,"previous_names":["hloc26/scheduler-standalone"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/HLoc26/scheduler-standalone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HLoc26%2Fscheduler-standalone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HLoc26%2Fscheduler-standalone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HLoc26%2Fscheduler-standalone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HLoc26%2Fscheduler-standalone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HLoc26","download_url":"https://codeload.github.com/HLoc26/scheduler-standalone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HLoc26%2Fscheduler-standalone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29149577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T02:39:25.012Z","status":"ssl_error","status_checked_at":"2026-02-06T02:37:22.784Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["java-25","javafx"],"created_at":"2026-02-06T04:00:44.043Z","updated_at":"2026-02-06T04:00:44.797Z","avatar_url":"https://github.com/HLoc26.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"100%\" src=\"https://github.com/user-attachments/assets/dedb6651-cc26-4244-86d9-1add93288115\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Java-25-orange?style=for-the-badge\u0026logo=openjdk\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/JavaFX-26--ea+19-blue?style=for-the-badge\u0026logo=java\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green?style=for-the-badge\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Build-Maven-green?style=for-the-badge\u0026logo=apache-maven\" /\u003e\n\u003c/p\u003e\n\n## 🎯 Overview\n\nAutomated desktop solution for school scheduling. This application transforms the error-prone manual task of time-slot\nassignment into an optimized process using high-performance constraint solvers.\n\n\u003e [!IMPORTANT]\n\u003e **Core Engine:** The optimization logic (CP-SAT) is hosted in a private repository.\n\u003e Contact [dhl26052004@gmail.com](mailto:dhl26052004@gmail.com) for access to the `scheduler.engine.jar`.\n\n## 🚀 Key Features\n\n* **Smart Resource Management:** CRUD for Teachers, Classes, and Subjects with SQLite persistence.\n* **Constraint Configuration:** Visual \"Busy Matrix\" for teachers and customizable teaching loads.\n* **Automated Solver:** Deep integration with **Google OR-Tools** to solve NP-hard scheduling problems.\n* **Modern UI:** Responsive desktop experience built with JavaFX and FXML.\n\n## 🛠️ Tech Stack\n\n* **Language:** Java 25\n* **GUI:** JavaFX 26\n* **Database:** SQLite\n* **Optimization:** Google OR-Tools (CP-SAT Solver)\n\n## 🏗️ Architecture\n\nDecoupled **MVC** (Model-View-Controller) for clear separation of UI and logic.\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick to see diagram\u003c/summary\u003e\n\n  ```mermaid\n  graph TD\n      subgraph Public_Application_Core [Application Core\u003cbr/\u003eOpen Source]\n          direction TB\n          DB[(SQLite Database)]\n          \n          subgraph MVC_Pattern [MVC Architecture]\n              M[Models\u003cbr/\u003eTeacher, Class, Subject]\n              V[View: JavaFX FXML Screens]\n              C[Controller\u003cbr/\u003eScheduleGeneratorController]\n          end\n          \n          API[Optimization Interface]\n      end\n  \n      subgraph Private_Engine [Private Engine - Proprietary]\n          SOLVER[Google OR-Tools\u003cbr/\u003eCP-SAT]\n          LOGIC[Constraint Logic \u0026 Rules]\n      end\n  \n      %% Workflow Flowchart\n      DB \u003c--\u003e M\n      M \u003c--\u003e C\n      V \u003c--\u003e C\n      \n      C --\u003e|1. Request Solve| API\n      API --\u003e|2. Data Transfer Object| LOGIC\n      LOGIC --\u003e|3. Define Constraints| SOLVER\n      SOLVER --\u003e|4. Return Optimal Solution| API\n      API --\u003e|5. Update Model| M\n      M --\u003e|6. Refresh UI| V\n  ```\n\n\u003c/details\u003e\n\n## 🗺️ Roadmap\n\n- [x] Base MVC Architecture\n- [x] Google OR-Tools Integration (CP-SAT)\n- [x] Export schedule to Excel/PDF\n- [ ] Multi-language support (Vietnamese/English)\n- [ ] Interactive schedule view where admin can drag and drop the slots\n\n\u003cdetails\u003e\n  \u003csummary\u003e\u003ch2\u003e📸 Screenshots\u003c/h2\u003e\u003c/summary\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cspan\u003e\n      \u003cimg width=\"85%\" src=\"https://github.com/user-attachments/assets/0f1cc990-abb9-4a42-a584-4336eaa81255\" /\u003e\n      \u003cbr\u003e\n      \u003cem\u003eFig 1. Teacher general information and busy matrix configuration.\u003c/em\u003e\n    \u003c/span\u003e\n  \u003c/p\u003e\n\n  \u003cbr\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cspan\u003e\n      \u003cimg width=\"85%\" src=\"https://github.com/user-attachments/assets/b33603b2-b32e-4c3f-9ca8-02e5d219bb30\" /\u003e\n      \u003cbr\u003e\n      \u003cem\u003eFig 2. Class management organized by Grade.\u003c/em\u003e\n    \u003c/span\u003e\n  \u003c/p\u003e\n\n  \u003cbr\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cspan\u003e\n      \u003cimg width=\"85%\" src=\"https://github.com/user-attachments/assets/67275d26-e5f6-4a14-9000-58b05b3f23d9\" /\u003e\n      \u003cbr\u003e\n      \u003cem\u003eFig 3. Scheduling engine solving complex constraints using CP-SAT.\u003c/em\u003e\n    \u003c/span\u003e\n  \u003c/p\u003e\n\n  \u003cbr\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cspan\u003e\n      \u003cimg width=\"85%\" src=\"https://github.com/user-attachments/assets/9d8f762d-a401-4596-99f2-146ba9aec199\" /\u003e\n      \u003cbr\u003e\n      \u003cem\u003eFig 4. Final generated schedule view.\u003c/em\u003e\n    \u003c/span\u003e\n  \u003c/p\u003e\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhloc26%2Fscheduler-standalone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhloc26%2Fscheduler-standalone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhloc26%2Fscheduler-standalone/lists"}