← All work

RSUE Schedule

An unofficial app for RSUE students. Timetable, rooms, student portal and Moodle in one place.

Year
2025–2026
Status
in use
Role
Solo developer — design, Android, integrations
Stack
Kotlin · Jetpack Compose · Material 3 · Navigation Compose · Jetpack Glance · Android Keystore · WebView · WorkManager
Timetable screen for group IST-331 with exam cards and a "Today" badge
Goal
Bring together what the university spreads across three websites: the timetable, the student portal and Moodle.
Users
My study group uses the app every day.
Platform
Android 7.0+, Kotlin, Jetpack Compose, Material 3.
Favorite groups and teachersFavorites
Search across ~1,560 groups and teachersSearch
Weekly timetable for group IST-331Timetable
Student portal with gradesPortal
Default look, light theme. Bottom navigation: Favorites, Search, Rooms, Portal.

Finding a free room

A feature the university site doesn't have

Problem
The timetable API can't search by room. To check whether room 303 is free, you'd have to open every group's timetable.
Choice
The app builds an occupancy index on the device.

The app walks about 1,560 group and teacher timetables, 8 requests at a time, and builds a “room → when it’s busy” index. The index is cached to a file and works offline.

How the room index is built
1560timetables walked
173rooms indexed
  1. The university API can’t search by room.
  2. The app walks every group and teacher timetable, 8 requests at a time.
  3. Each lesson contributes its room and time.
  4. The “room → when it’s busy” index is saved to a file and works offline.
List of 173 rooms with the number of lessons in the timetableRooms
Room occupancy by dayRoom
Room list with lesson counts, and a room screen with a date picker.

Signing in to the student portal

Problem
The portal rejects sign-ins from non-browser clients.
Choice
Sign-in through a hidden WebView; credentials are encrypted with Android Keystore.

The username and password stay on the device. When the session expires, the app quietly signs in again.

Three looks

Default, Newspaper and RSUE: each with its own light and dark theme, plus Android 12+ dynamic color. The Glance widget adds 5 more themes.