A Flutter client for WebUntis with a clean timetable, exam overview, free room search, school announcements, AI assistant, home widgets, and background updates.
Private by default. All data stays on your device. Optional AI features use your own Gemini API key.
Download the latest APK from GitHub Releases and install it on your Android device.
- Weekly and daily timetable views with free room search
- Exam overview with the ability to add custom exams
- School announcements feed
- Optional Gemini-powered AI assistant
- Persistent current-lesson notification and home screen widgets
- Background data refresh to keep widgets and notifications up to date
- Cancelled lesson visibility, custom subject colors, and hidden subjects
- Demo mode to explore the app without a WebUntis account
- German, English, French, Spanish, and Greek
- Light, dark, and system themes with animated backgrounds
![]() Weekly timetable |
![]() Daily timetable |
![]() Daily timetable, dark mode |
![]() Exams |
![]() Exams, dark mode |
![]() Free rooms |
![]() Free rooms, dark mode |
![]() School announcements |
![]() School announcements, dark mode |
![]() Select class |
![]() Select class, dark mode |
![]() AI assistant |
![]() AI assistant, dark mode |
![]() Details, dark mode |
The AI assistant becomes available after you add your own Gemini API key.
- Open Google AI Studio.
- Create a new API key.
- Copy the key into the app under Settings > AI Assistant > Gemini API Key.
The key is stored locally on your device.
Untis+ can refresh data in the background to keep widgets and notifications up to date.
- Enable the persistent current-lesson notification in Settings > Progressive push notification.
- Widgets and notifications update automatically when the OS allows it.
- After the first login, data is fetched immediately so widgets can show content right away.
If Android requests notification or background permissions, allow them so these features work correctly.
Untis+ stores all data locally on your device, including:
- Session ID
- School server and school name
- Username and password
- App settings
- Gemini API key, if configured
Data is sent only to:
- Your WebUntis server for authentication and timetable/exam data
- Google Gemini API, only if you enable the AI assistant
Untis+ does not use analytics or tracking of any kind.
- Flutter SDK 3.11 or newer
- A WebUntis account from your school
- Optional: a Gemini API key for AI features
Install dependencies:
flutter pub getRun the app on a device or emulator:
flutter runBuild a release APK:
flutter build apk --release- lib/main.dart – all screen logic (timetable, exams, school announcements, AI assistant, settings)
- lib/l10n.dart – localization strings (German, English, French, Spanish, Greek)
- lib/screens/main_navigation_screen.dart – bottom navigation and app shell
- lib/screens/onboarding_flow.dart – login and school setup
- lib/services/background_service.dart – background data refresh for widgets and notifications
- lib/services/notification_service.dart – persistent lesson notification
- lib/services/widget_service.dart – home screen widget updates
- lib/services/demo_mode_service.dart – demo timetable and exam data
Issues and pull requests are welcome.
- Describe the expected and actual behavior.
- Include screenshots when UI changes are involved.
- Keep changes focused and consistent with the existing code style.
Untis+ is not affiliated with, endorsed by, or connected to WebUntis or its respective owners.














