Skip to content
An alternative mobile client for the Untis timetable system.
Kotlin Java
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


An alternative mobile client for the Untis timetable system.

You can download the latest automated debug build from my website.

Get it on Google Play

Development history

It was more and more obvious that my original version of BetterUntis had many design and performance flaws. As a result, development became increasingly more difficult. So I came to the conclusion to scrap the project and start over from scratch.

Although I reused some parts of the original code, my plan was to entirely switch to Kotlin. Kotlin has many features and libraries that immensely help to communicate with the Untis API and process the timetable data.

Another major change is the use of a custom WeekView (based on Till Hellmund's fork of Android-Week-View) for the timetable display. This also improved performance by a lot.

New features

  • Select your school by name or ID, no URL needed
  • Login by optionally using your password instead of app key
  • Zoomable timetable view
  • Improved overall design
  • Improved timetable selection dialog
  • Faster RoomFinder
  • Near instantaneous timetable loading
  • Lag-free timetable scrolling
  • Flexible timegrid allows to display hours outside the regular timetable (like consultation times with teachers)
  • Support for multiple accounts
  • Support for using a custom proxy server for increased privacy
  • Info Center for viewing events, contact hours and own absences.

Missing features (TODO)

  • No support for teacher-specific features (like editing homeworks or class management)
  • Almost no unit and integration tests

Available languages

  • English
  • German

Project Git Structure

I established a simple system to manage this Git repository. Basically, there are two main branches: master and develop. They both are permanent and can't be deleted.

Branch: master

This branch always and only contains the latest release version. This includes alpha/beta releases.

Branch: develop

This branch contains the current development version. Small changes and fixes can be committed directly to this branch.

When it reaches a state ready to release, it can be merged into the master-branch and a new release can be published.

Other branches

Especially bigger features which require multiple commits should branch off develop and merge back into it. These should be named in a way to describe the feature as clearly as possible.

These branches have a limited lifetime. After the last merge back into develop, they should be deleted if no longer needed.

You can’t perform that action at this time.