KIMEP Mobile Clients
An unofficial Android app for KIMEP schedules and grades.
An unofficial Android client, not affiliated with or endorsed by KIMEP.
- Year
- 2026
- Role
- Reverse engineering, Android development, and release

Overview
The university's official mobile app was pulled from the App Store, but the service behind it stayed online. I captured how the old app talked to that service, documented it, and built a native Android client on top of it with a faster interface, offline caching, and class reminders. It ships as a signed APK from a small download page, with releases built and verified in CI.
Technology
- Kotlin
- Jetpack Compose
- Material 3
- Ktor
- kotlinx.serialization
- DataStore
- AlarmManager
- Python
- mitmproxy
- GitHub Actions
Built around
- The schedule renders from cache instantly and refreshes in the background. If the refresh fails, the cached timetable stays on screen instead of an error.
- Class times arrive in a legacy date format tied to the country's old UTC+6 offset. Kazakhstan moved to UTC+5 in 2024, so using the timezone database would shift every class an hour early. The app decodes them with a fixed offset.
- Reminders fire an hour and ten minutes before class. Each alarm gets a request code computed from the class, week, and kind, so old alarms can be cancelled without storing them, and all alarms are rebuilt after a reboot.
- The academic calendar comes from the university's PDF. A small Python tool rebuilds its table from word coordinates and ships the result inside the app.
If I kept going
- Add tests around the date decoding and reminder scheduling before anything else grows.
- Help reminders survive aggressive battery optimisation on some Android brands, support tablets, and start the iOS client.
Project views
