Development Logs

A selection of projects I am building and maintaining, with notes on how they are structured: shared code across platforms, separation between layers, and network and fire-alarm installations.

01 / Cross-Platform & Mobile Systems

school

MaturiMate

Kotlin Multiplatform • In development

KMP Core

MaturiMate is an exam-preparation app for Android and desktop (JVM), written with Kotlin Multiplatform and Compose Multiplatform. About 95% of the production Kotlin code is shared between the two platforms; the rest is platform entry points and small platform adapters.

Screens use ViewModels that expose an immutable UI state as a Kotlin StateFlow. Navigation uses Navigation3 (alpha), and user settings are saved with multiplatform DataStore.

Status: onboarding, a profile screen with a graduation countdown and an adaptive navigation frame work. The exam database (SQLDelight) and the seeding of exam data are developed on a separate branch and are not merged yet. The exam-taking screen, grading and attempt history are not built yet.

Excerpt (abbreviated): MainFrame.kt, adaptive navigation
BoxWithConstraints {
    // Determine if the device is considered a desktop based on maxWidth
    val isDesktop = maxWidth > LayoutConstants.DesktopThreshold

    if (isDesktop) {
        // Desktop navigation side bar
        Row(Modifier.fillMaxSize()) {
            // ...
        }
    }
    // ...
}

02 / Backend & Systems Software

layers

Employee Records Database (Java)

Java

A Java 21 console application for managing employee records and their collaboration links. It started as a two-person university assignment. The code is split into presentation, domain and data layers, and the domain depends only on repository and storage interfaces. Data lives in an in-memory repository while the program runs, with a text-file export and an SQLite backup that is loaded at startup and saved on exit. The two employee skills are a rule-based risk score and a shared-coworker analysis. The most-connected query breaks ties by employee ID.

JUnit 5 tests cover the domain service, the repository and the storage backends; the file-storage tests run in temporary @TempDir directories. A GitHub Actions workflow runs the unit tests on every push and pull request to master.

public

Multi-Domain Platform & Media Pipeline

Web Ecosystem

This website. A single repository holds three independent sites: a photography business site, a central hub, and this engineering portfolio. For local development they run together in a Docker Compose setup with an Alpine-based Nginx server, which lets me test routing between domains and clean URLs before deploying. Each site is deployed as its own Cloudflare Pages project on a push to main.

Photo galleries are generated without a database. A small Python CLI scans the image folders and writes a JSON manifest, which the browser then loads to build a masonry gallery in plain JavaScript.

Secure Communication

Python • University course project (BPC-AKR)

Crypto

A terminal group chat used as a cryptography playground. Clients chat with encrypted messages (AES-GCM) using a key from a Diffie-Hellman exchange, and a built-in man-in-the-middle proxy shows what the protection stops and what it does not. In secure mode the handshake is signed with RSA and a tampered key exchange is dropped; in unsecure mode the proxy can take over the session.

It started as a four-person university assignment (BPC-AKR); I built the Diffie-Hellman key exchange and the HKDF key derivation. Later I refactored the code, fixed 21 bugs, wrote a suite of 103 tests, and added a GitHub Actions workflow and a Docker Compose demo. It is a teaching project; the details and the bug list are in the GitHub README.

03 / Physical Infrastructure & Life Safety

Facility Network & L3 Management

Infrastructure

Greenfield network for a new educational facility: 19" rack, VLAN segmentation (management, CCTV, staff LAN), Wi-Fi 6 and 8 IP cameras on a 250 W PoE budget with ~80 W in use.

Recording streams stay on the PoE switch backplane. Two-tier remote management: Omada cloud for daily checks, WireGuard split tunnel from a remote location for the isolated subnets. Designed, installed and configured by me; administered remotely.

Fire Detection & Life Safety: Bosch AVENAR 2000

Life Safety

Bosch AVENAR panel 2000 fire detection and alarm system for an educational facility: closed LSN loop, six functional zones with room names on the display, FMC-420RW manual call points.

RML 0008 A relays drive fail-safe door release, shunt trip and GSM alarm. Installation and LSN programming of the Bosch AVENAR panel, to the project design and under an authorized supervisor. Work included rail-order validation, T-tap fault tracing and an EN 54-4 battery autonomy check (24 h + 30 min).