Six years of client work across four countries: a merchant-mariner study platform in the US, an inventory system and LED lighting calculator for Malaysian manufacturers, a payroll and time-tracking platform used by companies across Malaysia, and a large-scale floral e-commerce platform in the US. The projects below span greenfield builds, legacy modernizations, and long-running maintenance — covering Laravel, CodeIgniter, MySQL schema design, Eloquent ORM, and RESTful API integration.
Modernized and maintained a large-scale online floral delivery platform on PHP 7/8 — upgrading legacy Laravel and CodeIgniter codebases, improving performance, and resolving production issues. Maintained a consistent 5-star rating across the engagement.

Study platform for merchant mariners preparing for US Coast Guard licensing exams. Features practice exams, searchable question banks, and community forums.
The site owner moved hosting providers, and the new environment ran PHP 7.2 and MySQL 8 — a significant jump from the original PHP 5 and MySQL 5 stack the codebase was written for. The site was broken on arrival: deprecated PHP functions, queries rejected by MySQL 8's stricter SQL mode, and a persistent max-connection issue that was silently killing the platform's reliability.
I audited the entire codebase and replaced all PHP 5-era deprecated constructs — ereg functions, mysql_* extension calls, pass-by-reference misuses — with their PHP 7 equivalents. On the database side, MySQL 8 enforces strict mode by default, meaning inserts and updates that MySQL 5 had silently accepted (missing NOT NULL fields, unquoted reserved words, zero-date values) now failed outright. I identified every failing form, added the missing columns with appropriate defaults, rewrote the non-compliant queries, and verified that all insert and update paths worked end-to-end.
The most critical issue was that the site regularly hit MySQL's max connection limit — queries were locking up and running for hours, stacking until the server became unresponsive. The root cause was a complete absence of indexes on heavily-queried tables. I profiled the slow query log, identified the tables and columns being scanned in full on every page load, and added the missing indexes. Query times that were measured in minutes dropped to milliseconds, and the max-connection problem was eliminated.
The platform went from intermittently broken and periodically unreachable to stable on the new hosting environment. All existing functionality was preserved through the migration with no data loss.

Internal inventory management system for Kaolin. Designed and maintained MySQL schemas and built Eloquent-powered CRUD with SQL-injection protection.
A Malaysian industrial minerals company needed to bring order to warehouse operations spread across multiple production facilities. Heavy-format bags of various material grades were stored in physical rows and columns, but there was no reliable system for knowing what was where, how much stock remained, or who had moved what.
I designed and built a full-stack warehouse inventory system from the ground up. Each warehouse is modelled as a configurable floor plan — divided into named sections with a defined number of rows. Every physical slot is a tracked location tied to a QR-coded batch. Workers scan QR codes through a web interface to record stock movements in real time, with no dedicated hardware required. The system generates the QR codes and manages the complete batch lifecycle from arrival to dispatch.
A Floor Plan Availability view gives supervisors a live colour-coded grid — Available, Booked, or Occupied — showing which slots are free, what material is stored, and the current volume per column. A Real-Time Stock Summary aggregates balance, replenishment need, and maximum capacity by material grade and packaging type across all facilities. An Audit Trail logs every movement with worker identity, direction, location, and timestamp — giving management a verifiable chain of custody across thousands of recorded operations.
Built on Laravel with Eloquent ORM. The MySQL schema separates floor plan configuration from batch movement records, keeping queries fast as transaction volume grows. Warehouse sections, row counts, and production lines are all configurable through an admin panel — no code changes needed when the client expands or reorganises storage. A CI/CD pipeline ensures that merges to the master branch deploy automatically, eliminating manual release steps.

Web application for ELR Group — a premium architectural LED lighting manufacturer — enabling customers to configure and calculate lighting solutions.
A premium architectural LED lighting manufacturer needed a customer-facing tool that could translate a space brief into a concrete lighting specification. Customers — typically architects, interior designers, and facilities managers — needed precise output, not a product catalogue, before they could commit to a fixture selection.
I built a web-based lighting configuration and calculation tool that walks customers through a structured selection process: choose a fixture type, set the target lumen output, specify the colour temperature (CCT in Kelvin — from warm 2700 K through neutral 4000 K to daylight 6500 K), select the CRI (Colour Rendering Index) requirement, and enter room dimensions and mounting height. The calculator then produces a complete lighting solution — recommended number of fixtures, illuminance level in lux, beam angle and light distribution pattern, and power consumption — giving the customer a document they can take directly to an ELR sales consultation.
The fixture library and its associated performance parameters (lumen packages, CCT options, CRI grades, beam angles) are stored in MySQL and managed through an admin panel, so ELR's team can add new products or update specifications without code changes. The calculation logic runs server-side in Laravel — keeping the formulas consistent and auditable — with a JavaScript front-end that updates the output in real time as customers adjust parameters.
The tool gave ELR a customer-facing product that shortened the pre-sales conversation: customers arrived at consultations with a calculated spec sheet rather than a vague brief, improving conversion and reducing back-and-forth on fixture selection.

Time tracking and payroll management platform used by Malaysian companies. Built core time-calculation features and scalable employee management modules.
At the start of the engagement invoTIME handled basic attendance and overtime tracking — and not much else. The platform had real potential but lacked the depth enterprise clients needed to move payroll and HR workflows onto it.
The highest-impact feature I delivered was a configurable Merit System for employee performance management. Companies could define offences, assign deduction weights, and have the system automatically calculate each employee's merit score over a period. The logic was complex — scores had to account for rolling windows, partial-month proration, and admin overrides — and required careful schema design to stay performant as client rosters grew. The feature launched successfully and drove a measurable wave of new company subscriptions.
I designed and built a structured audit-log layer that recorded every meaningful state change across the platform — shift reassignments, schedule edits, payroll adjustments — with human-readable messages rendered in the UI (e.g. "Employee X changed shift from Morning to Night for 14 Jun at 10:32 AM"). This gave HR managers a clear, timestamped trail without digging through raw database records.
I took ownership of the AWS environment: managing the S3 bucket (document and report storage), EC2 instance configuration, and deployment pipeline. I implemented a CI/CD workflow so that merges to the master branch triggered automatic deploys, eliminating manual FTP pushes and reducing deployment risk.