Balink
Software Engineer
At Balink, a provider of high-scale business management software, I focused on modernizing the technology stack and introducing real-time communication features.
The Challenge: Aging Framework, Growing Demands
The core CRM platform was built on the full .NET Framework—a technology approaching end-of-life with limited cloud compatibility. Meanwhile, enterprise clients needed new features faster than the legacy architecture could support. Adding complexity, the system also relied on Java-based backend services that couldn’t simply be abandoned.
Framework Modernization (.NET)
I played a key role in migrating the core CRM platform from the legacy .NET Framework to modern .NET Core. This was not just a syntax update; it required rewriting dependency injection logic, updating middleware pipelines, and ensuring backward compatibility for existing enterprise clients. The migration took approximately one year to complete while maintaining production stability. Simultaneously, I maintained legacy Java backend systems, ensuring stability during the transition period.
Real-Time Communications (WebRTC)
The business identified a gap: users within the CRM needed to communicate in real-time without leaving the application. After evaluating third-party solutions, the decision was made to build in-house for better cost efficiency and integration control.
I architected and built a new communication module from scratch using WebRTC. The technical challenges included:
- Signaling Server: Built the WebSocket-based signaling infrastructure for peer connection negotiation
- STUN/TURN Implementation: Developed custom STUN/TURN server-side logic from scratch without third-party dependencies, enabling reliable NAT traversal across corporate firewalls
- Zero External Dependencies: The entire real-time communication stack was built in-house, giving full control over the architecture
This allowed users within the CRM to initiate high-quality voice and video calls directly from the browser without plugins. To ensure seamless integration with the existing UI, I developed a library of TypeScript-based Web Components wrapped in React, enabling the real-time features to be dropped into various parts of the application with minimal friction.