Kotlin · Jetpack Compose · Spring Boot · Angular · Google Cloud
I build and ship production software end to end — native Android apps on the Play Store and a B2B SaaS that businesses pay for and use every day. I care about architecture as much as I care about the last pixel of the UI.
These two are my main work. They are commercial products, so the repositories are private — the links go to the live product instead of the source.
A SaaS that moves food-safety compliance from paper to the cloud: digital HACCP records, automatic lot traceability and 24/7 fridge monitoring — so a health inspection becomes an export, not a week of rebuilding binders.
Designed and built end to end, from the database migrations to the landing page.
- AI document extraction — delivery notes and lot labels are read from a photo by Gemini on Vertex AI, with a custom multi-model fallback chain, structured response schemas, retry-with-jitter and image preprocessing to keep token cost down.
- IoT temperature monitoring — wireless probes stream over MQTT into the backend, which deduplicates readings, detects sensors going silent and escalates an unacknowledged alarm from push to email.
- Backend — Spring Boot, feature-oriented modules, Spring Data JPA over Cloud SQL (PostgreSQL) with Flyway migrations, JWT + refresh tokens, TOTP 2FA with recovery codes and role/permission based access.
- Frontend — Angular 21 standalone components, lazy-loaded feature routes, i18n and SEO.
- Platform — Cloud Run, Cloud Storage with automatic tiering of cold documents, Cloud Scheduler for the cross-replica jobs, Web Push (VAPID) and FCM, subscription plans and quota enforcement.
An Android app that breaks a big objective into milestones and tasks — alone or together. Shared goals are joined with a short invite code, and progress is rewarded with XP, streaks, twelve levels and medals.
- Kotlin Multiplatform project structure with a Jetpack Compose UI and Material 3.
- Firebase backend — Firestore with hand-written security rules and a test suite for them, Cloud Functions in TypeScript for invite handling.
- Verified Android App Links with a static fallback page, so an invite still works when the app isn't installed — the code never leaves the browser.
- CI/CD on GitHub Actions: Android build, Functions and Firestore-rules pipelines, staging and production deploys.
- Localised in 5 languages (EN · IT · DE · ES · FR), adaptive on foldables.
Public repositories, where the code — not the product — is the point.
| Project | What it is | Stack & focus |
|---|---|---|
| Red Cable Club | A native rewrite of OnePlus' Red Cable Club, born as an answer to a sluggish web app — featured on the OnePlus community | Kotlin · Jetpack Compose · custom animations Focus: proving a Material app can still have a personality of its own |
| Hacker News Client | A fast, clean client for browsing Hacker News | Kotlin · Compose · Paging 3 · Retrofit · Coroutines & Flow Focus: MVVM, incremental loading, Material 3 and dynamic color |
| Sealed Train | Encrypted QR train tickets — client, server and a write-up | Kotlin · Retrofit · cryptography Focus: confidentiality and non-replicability of a physical token |
| Parallel Sorting | Parallel merge sort and bitonic sort for multi-core CPUs | C · OpenMP Focus: workload partitioning, barrier synchronisation, benchmarking |



