Work

I design the system, write the production code and stay on after launch. PHP, TypeScript and Python. WordPress and WooCommerce are the shop. Laravel, React, Next.js, Vue, Nuxt, NestJS and FastAPI are the systems around it. Client names stay off this page.

What the work is made of

  • PHP WordPress, WooCommerce, Laravel
  • TypeScript React, Next.js, Vue, Nuxt, NestJS
  • Python FastAPI
  • Data PostgreSQL, MySQL, Redis, RabbitMQ
  • Ops Docker, nginx, GitHub Actions, Cloudflare

The audit and the care plan come from production work: custom themes and plugins, WooCommerce checkout, shipping and the Store API, Stripe and PayPal, form delivery, migrations, caching, and the Linux setup around them. I ship the TypeScript and Python systems on this page. When a model is in the path, the pattern is retrieval with citations, a human approval, a spend cap and a log.

In production

Products I build and operate. Client names stay off this page.

Next.js 15

Fluenta

Learners practise reading, listening, speaking and writing, and a teacher stays in the loop.

RAG · citations

Upskill AI

An AI training platform I run. Your materials become a readiness plan for a date. Answers are scored against the source, with citations, and the review arrives before you forget.

Laravel 12 · React 18

Frequency Dictionary

The words that move English up a level sit on a frequency path, with spaced review.

Next.js · MCP

DomainScout

A phrase becomes ranked names that are free, with the registration price and a fit score, on the site, the API and MCP.

FastAPI · MCP

Job Researcher

Fresh roles arrive as a shortlist with an explained fit. The boards never receive a login, and nothing is submitted for you.

Laravel 12 · RabbitMQ

Content Factory

Articles move into WordPress with a source map, a spend cap, and a person approving the risky pieces.

Postgres · Next.js

Pipeline CRM

Each company keeps its own data, custom fields, an automation engine and a board.

NestJS · Postgres

DocForge

A document run extracts, classifies and summarises, pauses when confidence is low, and resumes without paying the model twice.

NestJS · MCP · pgvector

AgentForge

An agent answers from your library with citations, through its own MCP server.

Laravel · Next.js

CaseWatch

Transaction alerts arrive explained. The analyst's decision is written to a trail that cannot be edited.

FastAPI · pgvector

RagProof

A question over a document library comes back grounded, or the service refuses instead of guessing.

NestJS · Postgres

Bet Settlement

A stake is posted once, the outcome is paid once, and a void is reversed by an offsetting entry.

Next.js · Yjs

LineSync

Several people edit one odds board at once, including while offline, and the board converges.

TypeScript · MCP

Odds MCP

An assistant calls exact tools for margin, parlay, settlement and stake size, and gets a number rather than a guess.

Laravel · Postgres · Redis

Production Patterns

An order survives a retry, a double charge and a repeated webhook, and a failed job lands in a dead-letter queue.

Python

Web Surface

Authorized hosts are watched. A finding comes with what is exposed and what to change.

Swift · Python

Cue

During a live call the assistant listens and keeps the next answer on screen.

Laravel · Livewire

Agency Business Platform

The agency site runs on a CMS I wrote. There is no third-party page builder.

How to read this page

You can take from this

  • The same person writes the code and talks to you
  • Checkout, payments, queues and the server around them are production work
  • AI in the path means citations, approval, a spend cap and a log

This page is not

  • A list of client logos
  • A made-up revenue number
  • A link out to a product that is not cleared to be public

Book a free teardown