Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status Build status codecov

What is this?

This is a cross-platform desktop application that allows schools to upload their substitution schedules (Vertretungsplan / Supplierplan) to a web server. Currently, the FTP, SFTP and FTPS (FTP over TLS) protocols are implemented, others supported by Apache VFS could easily be added. It is intended to be used together with our mobile app that can fetch the schedules from the school's server. In the future, we will add an option to notify our server when the school has updated their schedule, so that changes are reflected in the app instantly.

The application is written in Kotlin using tornadofx and JFoenix.

Project status

vertretungsplan-uploader is in use by a couple of schools and seems to work well. However, we are planning to add some additional features in the future.


The code in this repository is published under the terms of the GPLv3 License. See the LICENSE file for the complete license text.