Skip to content
Back to projects

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
KIMEP Mobile schedule, academic calendar, and reminder settings screens

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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. Add tests around the date decoding and reminder scheduling before anything else grows.
  2. Help reminders survive aggressive battery optimisation on some Android brands, support tablets, and start the iOS client.
Next projectSmoke Alarm Telegram Bot