3 card gateways
Stripe, Mollie and Viva Wallet on one webhook driven order flow, plus a pay by bank rail built from scratch. Every price is resolved again on the server.
Headless commerce platformSoftware, ecommerce and products, built from architecture to production.
Available for new projects · replies within 24 hours on weekdays
Stripe, Mollie and Viva Wallet on one webhook driven order flow, plus a pay by bank rail built from scratch. Every price is resolved again on the server.
Headless commerce platformA WooCommerce cart bridge plugin covered by 108 PHPUnit tests at PHPStan level 6.
WooCommerce cart bridgeStoqShelf cashiers sell by QR scan and see only price and stock, enforced by the server rather than the screen.
StoqShelfProcessor requirements passing for a store in a regulated, high risk vertical, up from a failing audit. The other three wait on the client's merchant credentials, legal review and go live.
Payments readiness15+ years 80+ projects delivered 4 continents 90+ custom plugins
Private · Client under NDA
A three application suite I built solo: a CodeIgniter 4 admin across 28 feature phases, a hardened REST API service and a React 19 storefront.
PHP 8.2 · CodeIgniter 4 · MariaDB · React 19 · TanStack Start
Read the architectureCloud inventory for owner operators. QR scan to sell from any phone, cashier delegation that never exposes cost price, and per item profit.
PHP · CodeIgniter · MySQL · PayPal
Read the case studyEvery stageSample data
01/07 · CAMERA · PHONE
scan → SKU-0142 item: "USB-C Hub 7-Port"
02/07 · CLIENT · PHONE
POST /sales
{ sku: "SKU-0142", qty: 2 }
03/07 · AUTH · SERVER
role: cashier can(sell) ✓ can(edit) ✗ can(view_cost) ✗
04/07 · DB · SERVER
BEGIN SELECT … FOR UPDATE qty 12 → 10 COMMIT
05/07 · LEDGER · SERVER
sale · 2 × $24.00 margin → owner ledger only
06/07 · ALERT · SERVER
qty 10 ≤ reorder_at 12 queue: email owner
07/07 · VIEW · PHONE
200 OK
{ price: 24.00, stock: 10 }
// cost never left the server
Every stageReal code
01/07 · ROUTE · SERVER
Route::get('/work/{slug}', [WorkController::class, 'show'])
->name('work.show');
02/07 · CONTENT · SERVER
$project = $this->projects->findOfKind($slug, ProjectKind::Work); abort_if($project === null, 404);
03/07 · BLADE · SERVER
return view('v3.pages.case-study', [
'project' => $project,
04/07 · HTML · WIRE
200 OK · text/html works with JavaScript off
05/07 · VITE · BROWSER
@vite(['resources/css/v3.css', 'resources/js/v3.ts'])
06/07 · REACT · BROWSER
createRoot(el).render(
<StrictMode>
<Component {...props(el)} />
</StrictMode>,
);
07/07 · INPUT · BROWSER
onFocus={() => setActive(layer.id)}
// state stays inside the island
Live · You are reading it
Laravel renders every page on the server. React 19 mounts as islands only where a figure moves, like the two traces on this page.
Laravel · Blade · React 19 · TypeScript · Vite
Read decision DR.01I use AI tools the way I use an IDE or a linter. I read and test every line, I own the architecture, and nothing reaches production that I could not explain line by line.
How I work with AIStorefronts, dashboards and mobile apps in React 19 and TypeScript.
Domain logic, admin platforms and APIs that other clients can depend on.
Checkout, webhook driven orders and payment processor readiness.
Content and commerce platforms, with 90+ custom plugins built.
Data models, imports and the integrations between systems.
Servers I provision, deploy and harden, with zero downtime deploys.
We talk through the problem, the goal and the constraints. I scope it and send a quote and timeline, usually the same week.
I plan the build before writing code: the data model, the moving parts and where it can break. You sign off before I start.
I build in clear milestones, test as I go and deploy with zero downtime. You see progress, not silence.
After launch I watch the logs, fix what needs fixing and keep improving.
Pricing happens in the conversation, once I understand the work.
Small fixes, audits and ad hoc work where the scope is open.
A defined build with fixed scope, milestones and a clear finish line.
Set hours each month for maintenance, updates and support.
I am Mikhail. For fifteen years I have built for the web from Cagayan de Oro, for clients on four continents.
You work with me directly. The person who scopes the system is the person who designs it, writes it, deploys it and answers for it after launch.
More about meAvailable for new projects · replies within 24 hours on weekdays