Skip to content

Latest commit

 

History

History
178 lines (138 loc) · 3.71 KB

File metadata and controls

178 lines (138 loc) · 3.71 KB

School Timetabling (Kotlin, Quarkus, Maven)

Assign lessons to timeslots and rooms to produce a better schedule for teachers and students.

school timetabling screenshot

Prerequisites

  1. Install JDK, Maven and Kotlin, for example with Sdkman:

    $ sdk install java
    $ sdk install maven
    $ sdk install kotlin

Run the application

  1. Git clone the timefold-quickstarts repo and navigate to this directory:

    $ git clone https://github.com/TimefoldAI/timefold-quickstarts.git
    ...
    $ cd timefold-quickstarts/kotlin/school-timetabling
  2. Start the application with Maven:

    $ mvn quarkus:dev
  3. Visit http://localhost:8080 in your browser.

  4. Click on the Solve button.

Then try live coding:

  1. Make some changes in the source code.

  2. Refresh your browser (F5).

Notice that those changes are immediately in effect.

Run the application with Timefold Solver Enterprise Edition

For high-scalability use cases, switch to Timefold Solver Enterprise Edition, our commercial offering. Contact Timefold to obtain the credentials required to access our private Enterprise Maven repository.

  1. Create .m2/settings.xml in your home directory with the following content:

    <settings>
      ...
      <servers>
        <server>
          <!-- Replace "my_username" and "my_password" with credentials obtained from a Timefold representative. -->
          <id>timefold-solver-enterprise</id>
          <username>my_username</username>
          <password>my_password</password>
        </server>
      </servers>
      ...
    </settings>

    See Settings Reference for more information on Maven settings.

  2. Start the application with Maven:

    $ mvn clean quarkus:dev -Denterprise
  3. Visit http://localhost:8080 in your browser.

  4. Click on the Solve button.

Then try live coding:

  1. Make some changes in the source code.

  2. Refresh your browser (F5).

Notice that those changes are immediately in effect.

Run the packaged application

When you’re done iterating in quarkus:dev mode, package the application to run as a conventional jar file.

  1. Compile it with Maven:

    $ mvn package
  2. Run it:

    $ java -jar ./target/quarkus-app/quarkus-run.jar
    Note

    Even though it’s written in Kotlin, it can run with the java command.

    Note

    To run it on port 8081 instead, add -Dquarkus.http.port=8081.

  3. Visit http://localhost:8080 in your browser.

  4. Click on the Solve button.

Run the application in a container

  1. Build a container image:

    $ mvn package -Dcontainer

    The container image name

  2. Run a container:

    $ docker run -p 8080:8080 --rm $USER/kotlin-school-timetabling:1.0-SNAPSHOT

Run it native

To increase startup performance for serverless deployments, build the application as a native executable:

  1. Install GraalVM and gu install the native-image tool

  2. Compile it natively. This takes a few minutes:

    $ mvn package -Dnative -DskipTests
  3. Run the native executable:

    $ ./target/*-runner
  4. Visit http://localhost:8080 in your browser.

  5. Click on the Solve button.

More information

Visit timefold.ai.