Skip to main content
Hari KT

Hari KT

Freelance full stack developer from Kerala, India — maintainer of Aura for PHP

👋 I am Hari KT, a freelance full stack web developer based in God’s own country—Kerala, India. I work with clients around the world, from solo founders to established product teams.

I am a passionate advocate for open-source software and regularly contribute back to the community through code, documentation, and financial support.


🧩 Maintainer of Aura for PHP
#

I am one of the maintainers of Aura, the PHP framework and library collection created by Paul M Jones—a prominent figure in the PHP community, author of Modernizing Legacy Applications in PHP, and well known for his work on PHP framework benchmarking and performance.

Aura’s packages are fully decoupled and dependency-free, so each one can be used standalone or composed into a full framework. I have contributed code, documentation and releases across the project for over a decade, and much of the writing on this blog comes out of that work.


💻 My Expertise
#

While my core expertise lies in PHP, I am driven by a continuous desire to learn and adapt to new technologies. Over the course of my career, I’ve had the opportunity to build diverse projects using modern tools and languages like Golang, NodeJS, ReactJS, and Python—including FastAPI for building APIs and Scrapy for web scraping and data extraction.

As a full stack developer I cover the whole path—database design, backend APIs, frontend interfaces, and deployment—so clients can hand over a problem rather than a task list.

🚀 What I Build
#

  • Cross-platform desktop applications with Tauri—native-feeling apps for Windows, macOS and Linux from a single ReactJS codebase.
  • Mobile applications for Android and iOS using React Native—such as the Tripti restaurant app, available on the Google Play Store.
  • Web applications and APIs in PHP, Golang and NodeJS, from database schema through to deployment.
  • Working with AI for vibe coding to rapidly prototype and build innovative software solutions.

Because desktop, mobile and web all share the same React skills in my toolkit, I can take a product across every platform without handing it to a different team for each one.


I love tackling complex problems and delivering high-quality, scalable solutions for my clients. I also share my knowledge and coding journey on my YouTube Channel.

Read more about me and my work →

Recent

Symfony Debug to Error Handler Component

·260 words·2 mins
Since symfony 4.4 the symfony/debug component is deprecated. The “\Symfony\Component\Debug\ErrorHandler” class is deprecated since Symfony 4.4, use “\Symfony\Component\ErrorHandler\ErrorHandler” Running unit tests on Mascot, I noticed lots of warnings. But it was not easy as changing Symfony\Component\Debug\ExceptionHandler to Symfony\Component\ErrorHandler\ErrorHandler. Assume we have something as below 37 38 39 40 41 42 43 44 <?php $handler = new \Symfony\Component\Debug\ExceptionHandler($debug); $exception = $event->getThrowable(); if (!$exception instanceof FlattenException) { $exception = FlattenException::create($exception); } $response = Response::create($handler->getHtml($exception), $exception->getStatusCode(), $exception->getHeaders())->setCharset(ini_get('default_charset')); $event->setResponse($response); The Symfony\Component\ErrorHandler\ErrorHandler has no getHtml method. From the symfony docs, if you are in development mode we can use below code.

Building Modular Applications With PSR-7

·1152 words·6 mins
PSR-7, the HTTP message interfaces opened a new door of creating modular applications. Sadly many of the PSR-7 implementations added many helper methods. So if someone is creating a library that needs a PSR-7 implementations they tie the particular library with the PSR-7 implementation and use these convinient helper methods. So was PSR-15: interfaces for HTTP Middleware and PSR-17: interfaces for HTTP Factories was proposed. When creating a module one of the most challenging part is how to serve the javascript, css and images. We are going to use hkt/psr7-asset which is a fork of Aura.Asset_Bundle . What you want to do is only map the path to the assets folder.

Using CakePHP Migrations as a Standalone Library

·355 words·2 mins
Cakephp version 3 have a nice ORM. When using the cakephp/orm, it may be nice to integrate cakephp/migration than any other migration libraries, even though it uses phinx under the hood. Lets see how we can install and integrate cakephp/migration in our application. 1 composer require cakephp/migrations:dev-master The dev-master is currently passed for we need the latest version of master branch. Before this pull request, it was having dependency on cakephp/cakephp, which is not needed.

Aura.Di 2.x to 3.x Upgrade Guide

·251 words·2 mins
3.x has a very minimal BC break. But if you are not sure what are they, then you may feel the pain. I am trying to document most of them, incase I missed please edit and send a pull request. I will try to eventually pushed to the main Aura.Di repo. BC Breaks # Instantiation # The way di container is instantiated has been changed from

CakePHP ORM and Logging Queries

·196 words·1 min
Working with cakephp/orm library, I needed to log all the queries. Cakephp provides a way to do it via cakephp/log. 1 2 3 4 5 6 7 8 9 <?php use Cake\Log\Log; Log::config('queries', [ 'className' => 'File', 'path' => '/my/log/path/', 'file' => 'app', 'scopes' => ['queriesLog'] ]); But you are not limited, if you need to configure it to a PSR-3 logger like monolog/monolog 1 2 3 4 5 6 7 8 9 10 <?php use Cake\Log\Log; use Monolog\Logger; use Monolog\Handler\StreamHandler; Log::config('default', function () { $log = new Logger('cli'); $log->pushHandler(new StreamHandler('php://stdout')); return $log; }); That was pretty simple and it logs to cli.