Skip to main content
Pavlo Savchuk
Back to projects
Case studyJul 2023 – Present

Mobicom Pro

Senior Software Engineer

Mobicom Pro's operations platform ran on a legacy PHP and jQuery codebase shared across its full client base, including a Danish logistics operator running day-to-day fleet and operations work through it. I own the modernisation of that platform end to end: architecture, migration sequencing, estimation, and full-stack delivery in TypeScript.

  • React
  • TypeScript
  • NestJS
  • PostgreSQL
  • MySQL
  • React Native
  • AWS
  • Docker
  • GitHub Actions

Context

The challenge

The legacy system had to keep running for every client while its replacement was built underneath it, one module and one tenant at a time, with no acceptable downtime window and no room to break an existing client's workflow mid-migration.

Delivery

What I built

  • I architected the migration path from the legacy PHP/jQuery system to React, NestJS and PostgreSQL, retiring modules one at a time across the client base rather than attempting a single cutover.
  • I built the frontend of a React and TypeScript operations portal for the Danish logistics client, spanning 13 production modules, a custom server-driven data grid framework reused across the application, real-time updates over WebSockets, and integration with the client's Visma ERP system.
  • I designed multi-tenant authentication and permissions: dynamic tenant database routing, JWT sessions held in httpOnly cookies, migration of legacy portal credentials to hashed storage, and role guards protecting around 50 REST endpoints.
  • I set up Docker and GitHub Actions CI/CD across three workflows: pull request lint/test/build gates, automatic deployment on merge, and database migrations applied on every deploy, with Jest, Supertest, and React Testing Library run as a gate on every pull request.
  • I also deliver React Native IoT applications for smart home heating and EV charging alongside the platform programme, and define engineering documentation and AI-assisted development standards, including an internal wiki and Swagger API docs.

Result

Outcome

The migration programme spans 24 client databases, with the first tenant live in production on the new platform.