Qaynaq STUDIO ’26 / BAKU
Work FW003

Makromedicine.com · Healthcare · Migration

Rebuilt the legacy CodeIgniter system and reset the business processes

An old CodeIgniter codebase, poorly documented, with broken functions in production. We migrated to Laravel, wrote the new modules the client actually wanted, fixed flows that didn't work, and rebuilt the business processes from scratch.

Duration
Multi-phase
Team
Elvin Sharifov + backend contractor
Services
Engineering · System design · Business process
Status
Live
CI → Laravel Stack migration
New Module family
0 Broken flows on handover
Rebuilt Business flow

Starting point

Makromedicine had been on CodeIgniter for years and had passed through many hands. Documentation was thin, code scattered, and several features existed only on paper — users could click them, but nothing happened. One function failed to call another, so the business flow broke in the middle.

The domain is medical, so data sensitivity is non-negotiable: patient records, request archives, payment history. Every step had to be reviewed both technically and from a compliance angle.

Decisions

  1. Full migration to Laravel, not another round of patches. The CodeIgniter codebase was getting more expensive every month.
  2. Mapped the business flow from scratch — login, request creation, payment, reporting. Who decides, who executes — written down clearly.
  3. Audited each broken function one by one — some were legacy and got deleted, some got fixed, some were rewired into the new flow.
  4. New modules built to the client's actual brief — reporting, export, internal admin panel, audit log.

Execution

Stack: Laravel 11, Postgres, queue-driven background jobs (report generation, mail dispatch). Frontend: Blade + Alpine.js — admin panel didn't need React. Authentication and role-based access control were rebuilt from zero.

“The interesting work here wasn't the tech migration. It was redesigning the business flow. CodeIgniter was an excuse — the real job was making the processes visible.”

Throughout the migration each broken function was either explained and rewired, or removed. Weekly sync with the client: what stays, what changes, what goes.

Result

  • Full Laravel stack — new features are no longer painful.
  • Business flow rebuilt from scratch — every step has a named owner.
  • Broken functions fixed or removed — users no longer click dead buttons.
  • Audit log and internal admin panel handed over to the client's team.

For a project like this,
let's talk.

Email Elvin Sharifov