Oskar Karpiński
Back to projects

HomeProjectsVulka

Android app · reverse engineering

Vulka — Android school journal for Librus and Vulcan

I built a native Android app that unified the two most popular Polish school journal systems — Librus Synergia and Vulcan — in one modern interface. I reverse-engineered the official APIs to fetch grades, timetables, messages, attendance and announcements, presenting them in a consistent Material 3 interface with Jetpack Compose.

Stack
Kotlin · Jetpack Compose · Material 3 · Reverse engineering · REST API · Room
Project status
Vulka is presented as an archived reference project documenting integration with Librus and Vulcan APIs and a modern mobile interface.

01

Problem

Students and parents use two different school journal systems — Librus Synergia and Vulcan — each with its own web and mobile interface. There was no single fast, lightweight app that worked equally well for both.

Neither system offered a public API. The only path was analyzing traffic from official apps and reimplementing the private endpoints.

02

Solution

I built a native Kotlin Android app that, after reverse-engineering the official APIs, logged into both systems and fetched grades, attendance, timetables, messages and announcements.

The entire interface was built with Jetpack Compose and Material 3 — with fast switching between journals, local caching and consistent navigation regardless of data source.

03

API integration

I analyzed network traffic of the official Librus and Vulcan apps, reimplemented login, authentication and endpoint structures, and built HTTP clients for both systems.

Each system had a different data model and pagination, so I introduced a unification layer mapping grades, subjects and timetables to shared domain models.

Android application

Web client

REST API

LibrePass server

Encrypted data

04

Mobile app

The interface was built with Jetpack Compose and Material 3 — grade lists, timetables, message views and attendance details share the same visual language.

Data is cached locally, so the app stays fast on poor connections and refreshes in the background.

05

Challenges

No documentation meant any update on the Librus or Vulcan side could break the integration — requiring resilient parsing and quick fixes.

The hardest part was keeping one app behaving identically for two completely different backends without losing each system's nuances.

What this project taught me

Key takeaways from Vulka

Vulka combined reverse engineering, work with unstable APIs and building a consistent mobile product.

01

Reverse engineering as integration

Discovering and reimplementing official API behavior made it possible to fetch grades, timetables, messages and attendance without public documentation.

REST APIReverse engineeringAuth
02

One interface for two systems

Two different journal systems required unified data models so users see the same grades and timetable in one app.

Data modelingUnificationUX
03

Modern Android stack

Jetpack Compose and Material 3 enabled a fast, consistent native mobile interface.

Jetpack ComposeMaterial 3Kotlin

Client project

Visit the live platform

Vulka is a commercial project developed for a client. Its source code and infrastructure details are not public.