logo
Qbank

Qbank

Migrated an existing legacy Elgg-based system to a modern Laravel architecture, enhancing stability, performance, and maintainability while preserving core functionality.

Project Info
Year: Jan 2022 – Jun 2022
Duration: 6 months
Team Size: 3
Full Stack
Technologies Used
Laravel
PHP
MySQL
Elasticsearch
HTML
CSS
REST API
Project Story

Led the migration of a complex Legal platform from Elgg to Laravel, rearchitecting backend logic, rebuilding the frontend with HTML and CSS, and optimizing database queries. Integrated Elasticsearch for powerful content discovery.

Case Study

The Challenge

The existing Qbank platform, a widely used legal knowledge repository, was built on Elgg, a PHP-based social network framework that had become outdated and fragile. The core challenge was to modernize the codebase and infrastructure while keeping the platform fully operational during the transition. The system handled a large volume of legal documents and was relied upon by legal professionals daily, so downtime or data inconsistency was not an option. Performance was poor, especially for search queries, and the codebase was nearly unmaintainable due to tight coupling and outdated practices.

The Solution

We approached the migration incrementally, starting by isolating core functionalities into services and rewriting them in Laravel. We refactored database schemas to align with Laravel’s ORM (Eloquent) and decoupled business logic from Elgg’s plugins. The UI was rebuilt from scratch using semantic HTML and modern CSS, with careful attention to accessibility and responsiveness. We designed a robust REST API to replace the tightly coupled frontend-backend interactions. To address performance and content discoverability, we integrated Elasticsearch and indexed all relevant legal data, allowing for fast, fuzzy, and faceted searches. All legacy routes were mapped to their Laravel counterparts, and we implemented a rollback plan in case of major disruptions.

My Contribution

I spearheaded the backend migration, including refactoring the MySQL schema, rebuilding core business logic in Laravel, and designing new REST endpoints for the frontend to consume. I also handled the entire Elasticsearch integration, defining index mappings, writing ingest pipelines, and building custom search queries to support advanced legal search features. On the frontend, I collaborated with the team to rebuild the layout using clean, semantic HTML and CSS with modular partials. I wrote migration scripts to move legacy data into the new schema safely, verified data integrity, and ensured a zero-downtime cutover plan was in place.

Key Outcomes

  • 🚀 Page load times dropped by over 60%, significantly improving user experience
  • 🔍 Search performance improved dramatically with the addition of Elasticsearch, enabling sub-second results for complex queries
  • 🧱 Backend became modular, testable, and maintainable thanks to Laravel's MVC structure
  • 📐 Full data migration was executed with no reported data loss or corruption
  • 🔧 Reduced future maintenance cost and onboarding time for new developers

Lessons Learned

This project taught me that legacy migrations are less about rewriting code and more about preserving business-critical flows while introducing structure and modern practices. Incremental refactoring with strong rollback plans proved essential. Working with Elasticsearch also gave me deep insight into designing performant search indexes for domain-specific content. The importance of stakeholder communication and migration visibility was reinforced, technical success must align with uninterrupted usability for the people who rely on the system daily.

Key Features
Elgg to Laravel migration
Search with Elasticsearch
REST API for internal use

Let's work together

I'm always excited to take on new challenges and collaborate on innovative projects.

About Me

I'm a senior software engineer focusing on frontend and full-stack development. I specialize in ReactJS, TypeScript, and Next.js, always seeking growth and new challenges.

© 2025, anasroud.com