{"id":15013783,"url":"https://github.com/timefoldai/timefold-quickstarts","last_synced_at":"2025-08-11T19:21:57.901Z","repository":{"id":154180160,"uuid":"630933034","full_name":"TimefoldAI/timefold-quickstarts","owner":"TimefoldAI","description":"Get started with Timefold quickstarts here. Optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling and other planning problems.","archived":false,"fork":false,"pushed_at":"2025-08-11T11:15:36.000Z","size":29421,"stargazers_count":392,"open_issues_count":10,"forks_count":116,"subscribers_count":20,"default_branch":"stable","last_synced_at":"2025-08-11T11:41:04.610Z","etag":null,"topics":["artificial-intelligence","constraint-programming","cvrp","employee-scheduling","gradle","java","job-shop-scheduling","kotlin","maintenance-scheduling","maven","operations-research","optimization-library","planning-algorithms","quarkus","resource-allocation","spring-boot","vehicle-routing-problem","vrptw"],"latest_commit_sha":null,"homepage":"https://solver.timefold.ai","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TimefoldAI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE.txt","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":"2023-04-21T13:51:19.000Z","updated_at":"2025-08-11T06:52:03.000Z","dependencies_parsed_at":"2024-04-15T07:26:44.034Z","dependency_job_id":"49a3e01c-0701-4b66-8fdf-ed33f6cec45e","html_url":"https://github.com/TimefoldAI/timefold-quickstarts","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/TimefoldAI/timefold-quickstarts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimefoldAI%2Ftimefold-quickstarts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimefoldAI%2Ftimefold-quickstarts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimefoldAI%2Ftimefold-quickstarts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimefoldAI%2Ftimefold-quickstarts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TimefoldAI","download_url":"https://codeload.github.com/TimefoldAI/timefold-quickstarts/tar.gz/refs/heads/stable","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TimefoldAI%2Ftimefold-quickstarts/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269941402,"owners_count":24500688,"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-08-11T02:00:10.019Z","response_time":75,"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":["artificial-intelligence","constraint-programming","cvrp","employee-scheduling","gradle","java","job-shop-scheduling","kotlin","maintenance-scheduling","maven","operations-research","optimization-library","planning-algorithms","quarkus","resource-allocation","spring-boot","vehicle-routing-problem","vrptw"],"created_at":"2024-09-24T19:44:46.723Z","updated_at":"2025-08-11T19:21:57.893Z","avatar_url":"https://github.com/TimefoldAI.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://timefold.ai\"\u003e\n    \u003cimg src=\"/timefold-logo.png\" width=\"400px\"  alt=\"Timefold Solver\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n[![GitHub Discussions](https://img.shields.io/github/discussions/TimefoldAI/timefold-solver?style=for-the-badge\u0026logo=github)](https://github.com/TimefoldAI/timefold-solver/discussions)\n\nThis repository contains quickstarts for [Timefold Solver](https://github.com/TimefoldAI/timefold-solver), an AI constraint solver for Java and Kotlin. \nIt shows different use cases and basic implementations to get you started on your PlanningAI journey.\n\n## Overview\n\n| Use Case \u003cimg width=\"341\" height=\"1\"\u003e                                 | Notable Solver Concepts   \u003cimg width=\"541\" height=\"1\"\u003e   |\n|-----------------------------------------------------------------------|----------------------------------------------------------|\n| 🚚 \u003ca href=\"#-vehicle-routing\"\u003eVehicle Routing\u003c/a\u003e                    | Chained Through Time, Shadow Variables                   |\n| 🧑‍💼 \u003ca href=\"#-employee-scheduling\"\u003eEmployee Scheduling\u003c/a\u003e         | Load Balancing                                           |\n| 🛠️ \u003ca href=\"#-maintenance-scheduling\"\u003eMaintenance Scheduling\u003c/a\u003e      | TimeGrain, Shadow Variable, Variable Listener            |\n| 📦 \u003ca href=\"#-food-packaging\"\u003eFood Packaging\u003c/a\u003e                       | Chained Through Time, Shadow Variables, Pinning          |\n| 🛒 \u003ca href=\"#-order-picking\"\u003eOrder Picking\u003c/a\u003e                         | Chained Planning Variable, Shadow Variables              |\n| 🏫 \u003ca href=\"#-school-timetabling\"\u003eSchool Timetabling\u003c/a\u003e               | Timeslot                                                 |\n| 🏭 \u003ca href=\"#-facility-location-problem\"\u003eFacility Location Problem\u003c/a\u003e | Shadow Variable                                          |\n| 🎤 \u003ca href=\"#-conference-scheduling\"\u003eConference Scheduling\u003c/a\u003e         | Timeslot, Justifications                                 |\n| 🛏️ \u003ca href=\"#-bed-allocation-scheduling\"\u003eBed Allocation Scheduling\u003c/a\u003e | Allows Unassigned                                        |\n| 🛫 \u003ca href=\"#-flight-crew-scheduling\"\u003eFlight Crew Scheduling\u003c/a\u003e       |                                                          |\n| 👥 \u003ca href=\"#-meeting-scheduling\"\u003eMeeting Scheduling\u003c/a\u003e               | TimeGrain                                                |\n| ✅ \u003ca href=\"#-task-assigning\"\u003eTask Assigning\u003c/a\u003e                        | Bendable Score, Chained Through Time, Allows Unassigned  |\n| 📆 \u003ca href=\"#-project-job-scheduling\"\u003eProject Job Scheduling\u003c/a\u003e       | Shadow Variables, Variable Listener, Strenght Comparator |\n| 🏆 \u003ca href=\"#-sports-league-scheduling\"\u003eSports League Scheduling\u003c/a\u003e   | Consecutive Sequences                                    |\n| 🏅 \u003ca href=\"#-tournament-scheduling\"\u003eTournament Scheduling\u003c/a\u003e         | Pinning, Load Balancing                                  |\n\n\u003e [!NOTE]\n\u003e The implementations in this repository serve as a starting point and/or inspiration when creating your own application.\n\u003e Timefold Solver is a library and does not include a UI. To illustrate these use cases a rudimentary UI is included in these quickstarts.\n\n## Use cases\n\n### 🚚 Vehicle Routing\n\nFind the most efficient routes for vehicles to reach visits, considering vehicle capacity and time windows when visits are available. Sometimes also called \"CVRPTW\".\n\n![Vehicle Routing Screenshot](java/vehicle-routing/vehicle-routing-screenshot.png)\n\n- [Run quarkus-vehicle-routing](java/vehicle-routing/README.MD) (Java, Maven, Quarkus)\n\n\u003e [!TIP]\n\u003e  \u003cimg src=\"https://docs.timefold.ai/_/img/models/field-service-routing.svg\" align=\"right\" width=\"50px\" /\u003e [Check out our off-the-shelf model for Field Service Routing](https://app.timefold.ai/models/field-service-routing). This model goes beyond basic Vehicle Routing and supports additional constraints such as priorities, skills, fairness and more.\n\n---\n\n### 🧑‍💼 Employee Scheduling\n\nSchedule shifts to employees, accounting for employee availability and shift skill requirements.\n\n![Employee Scheduling Screenshot](java/employee-scheduling/employee-scheduling-screenshot.png)\n\n- [Run quarkus-employee-scheduling](java/employee-scheduling/README.MD) (Java, Maven, Quarkus)\n\n\u003e [!TIP]\n\u003e  \u003cimg src=\"https://docs.timefold.ai/_/img/models/employee-shift-scheduling.svg\" align=\"right\" width=\"50px\" /\u003e [Check out our off-the-shelf model for Employee Shift Scheduling](https://app.timefold.ai/models/employee-scheduling). This model supports many additional constraints such as skills, pairing employees, fairness and more.\n\n---\n\n### 🛠️ Maintenance Scheduling\n\nSchedule maintenance jobs to crews over time to reduce both premature and overdue maintenance.\n\n![Maintenance Scheduling Screenshot](java/maintenance-scheduling/maintenance-scheduling-screenshot.png)\n\n- [Run quarkus-maintenance-scheduling](java/maintenance-scheduling/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 📦 Food Packaging\n\nSchedule food packaging orders to manufacturing lines to minimize downtime and fulfill all orders on time.\n\n![Food Packaging Screenshot](java/food-packaging/food-packaging-screenshot.png)\n\n- [Run quarkus-food-packaging](java/food-packaging/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 🛒 Order Picking\n\nGenerate an optimal picking plan for completing a set of orders.\n\n![Order Picking Screenshot](java/order-picking/order-picking-screenshot.png)\n\n- [Run quarkus-order-picking](java/order-picking/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 🏫 School Timetabling\n\nAssign lessons to timeslots and rooms to produce a better schedule for teachers and students.\n\n![School Timetabling Screenshot](java/school-timetabling/school-timetabling-screenshot.png)\n\n- [Run quarkus-school-timetabling](java/school-timetabling/README.adoc) (Java, Maven or Gradle, Quarkus)\n- [Run spring-boot-school-timetabling](java/spring-boot-integration/README.adoc) (Java, Maven or Gradle, Spring Boot)\n- [Run kotlin-quarkus-school-timetabling](kotlin/school-timetabling/README.adoc) (Kotlin, Maven, Quarkus)\n\nWithout a UI:\n\n- [Run hello-world-school-timetabling](java/hello-world/README.adoc) (Java, Maven or Gradle)\n\n---\n\n### 🏭 Facility Location Problem\n\nPick the best geographical locations for new stores, distribution centers, COVID test centers, or telecom masts.\n\n![Facility Location Screenshot](java/facility-location/facility-location-screenshot.png)\n\n- [Run quarkus-facility-location](java/facility-location/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 🎤 Conference Scheduling\n\nAssign conference talks to timeslots and rooms to produce a better schedule for speakers.\n\n![Conference Scheduling Screenshot](java/conference-scheduling/conference-scheduling-screenshot.png)\n\n- [Run quarkus-conference-scheduling](java/conference-scheduling/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 🛏️ Bed Allocation Scheduling\n\nAssign beds to patient stays to produce a better schedule for hospitals.\n\n![Bed Scheduling Screenshot](java/bed-allocation/bed-scheduling-screenshot.png)\n\n- [Run quarkus-bed-allocation-scheduling](java/bed-allocation/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 🛫 Flight Crew Scheduling\n\nAssign crew to flights to produce a better schedule for flight assignments.\n\n![Flight Crew Scheduling Screenshot](java/flight-crew-scheduling/flight-crew-scheduling-screenshot.png)\n\n- [Run quarkus-flight-crew-scheduling](java/flight-crew-scheduling/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 👥 Meeting Scheduling\n\nAssign timeslots and rooms for meetings to produce a better schedule.\n\n![Meeting Scheduling Screenshot](java/meeting-scheduling/meeting-scheduling-screenshot.png)\n\n- [Run quarkus-meeting-scheduling](java/meeting-scheduling/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### ✅ Task Assigning\n\nAssign employees to tasks to produce a better plan for task assignments.\n\n![Task Assigning Screenshot](java/task-assigning/task-assigning-screenshot.png)\n\n- [Run quarkus-task-assigning](java/task-assigning/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 📆 Project Job Scheduling\n\nAssign jobs for execution to produce a better schedule for project job allocations.\n\n![Project Job Scheduling Screenshot](java/project-job-scheduling/project-job-scheduling-screenshot.png)\n\n- [Run quarkus-project-job-scheduling](java/project-job-scheduling/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 🏆 Sports League Scheduling\n\nAssign rounds to matches to produce a better schedule for league matches.\n\n![Sports League Scheduling Screenshot](java/sports-league-scheduling/sports-league-scheduling-screenshot.png)\n\n- [Run quarkus-sports-league-scheduling](java/sports-league-scheduling/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n### 🏅 Tournament Scheduling\n\nTournament Scheduling service assigning teams to tournament matches.\n\n![Tournament Scheduling Screenshot](java/tournament-scheduling/tournament-scheduling-screenshot.png)\n\n- [Run quarkus-tournament-scheduling](java/tournament-scheduling/README.adoc) (Java, Maven, Quarkus)\n\n---\n\n## Legal notice\n\nTimefold Quickstarts was [forked](https://timefold.ai/blog/2023/optaplanner-fork/) on 20 April 2023 from OptaPlanner Quickstarts, which was entirely Apache-2.0 licensed (a permissive license).\n\nTimefold Quickstarts is a derivative work of OptaPlanner Quickstarts, which includes copyrights of the original creator, Red Hat Inc., affiliates, and contributors, that were all entirely licensed under the Apache-2.0 license. \nEvery source file has been modified.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimefoldai%2Ftimefold-quickstarts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimefoldai%2Ftimefold-quickstarts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimefoldai%2Ftimefold-quickstarts/lists"}