Experience highlights
IMS
The internal HR platform used across iMedia24, covering time tracking, time off, tasks, benefits, and day-to-day team operations. Kotlin/Spring Boot backend and Next.js frontend, running on GCP.
- kotlin
- spring
- next.js
- typescript
- gcp
One reusable bulk-actions framework, adopted across four admin tables.
Simplified workflow
- Application features
- Pub/Sub events
- Notification delivery
Problem
The platform's notification module was tied into feature code, so adding a new notification type meant touching the features that triggered it. Acting on multiple table rows at once was also handled per screen rather than through a shared mechanism.
My role
I work across the stack on the platform: the Kotlin/Spring Boot backend, the Next.js frontend, and the GitHub Actions deployment path to GCP. I rewrote the notification module and worked on the table bulk actions framework.
Solution
- Rewrote the notification module on top of Pub/Sub so notifications are published as events rather than sent inline.
- Built a bulk-actions framework on top of the shared table: a selection column, eligibility rules per action, a confirmation and review dialog, and sequential or batched execution with per-row error reporting.
- Built backend and frontend features with unit and integration test coverage.
- Deployed to GCP (Cloud Run, Cloud SQL, Pub/Sub) via GitHub Actions.
Results
- Notification delivery performance improved after the Pub/Sub rewrite.
- New notification types can be added without touching feature code.
- Four admin tables — members, benefit claims, challenge attempts, and on-call reports — now run bulk actions through one shared framework.