Hello, world. I'm

JJ Teoh

Mechatronics engineer turned software developer. I build reliable AI systems, SDKs, and self-hosted infrastructure.

About

I came to software from mechatronics. Control systems, embedded hardware, things that fail in the field. So I build software the way I'd build a machine: for failure modes and data flow, not just the happy path.

Distributed systems

Offline-first sync, edge computing, and data that survives bad networks.

Full-stack product

End to end. Schema and API design through to a polished, shipped interface.

Infrastructure

Containers, pipelines, and the operational glue that keeps things alive in prod.

Selected work

A few systems I've built end to end. Self-hosted, strongly typed, and full of the edge cases that show how I think.

AI / Fintech Systems

AI Trading Copilot

Self-hosted market research and trading workstation with broker tools, multi-agent analysis, and gated execution paths.

Nuxt FastAPI LangGraph PostgreSQL

SDK / Full-Stack

Repro Feedback SDK & Dashboard

Framework-agnostic feedback widget with annotated screenshots, session replay, diagnostics, and a self-hostable Nuxt dashboard.

Nuxt Preact TypeScript PostgreSQL

More work

Experience

Studio20 logo

Back End Developer

Studio20 · Full-time

Kuala Lumpur · Hybrid

Mar 2024 - Present
  • Built MyInvois e-invoicing compliance end to end: document validation, PKI signing, and LHDN integration.
  • Shipped NestJS APIs with role-based access and multi-tenant isolation, plus the team's CI/CD.
ViTrox Corporation Berhad logo

Software Developer

ViTrox Corporation Berhad · Part-time

Remote

Feb 2024 - Present
  • Ship features for an internal web app used across business units.
  • Built a cross-platform desktop tool (Tauri, Vue, SQLite) with offline-first background sync.
ViTrox Corporation Berhad logo

Industrial Trainee

ViTrox Corporation Berhad · Internship

Penang · On-site

Oct 2023 - Jan 2024
  • Built a full-stack app for real-time data viz and IoT device control (Nuxt 3, Quasar).
  • Integrated embedded communication protocols directly with the hardware teams.
i-SURVY SDN BHD logo

Data Entry

i-SURVY SDN BHD · Part-time

Remote

Feb 2022 - Jul 2024
  • Automated report generation with Python, cutting manual processing time.

Toolkit

Languages

TypeScript JavaScript Rust Python SQL

Frontend

Vue Nuxt React Preact Next.js Expo Tailwind CSS Three.js Shadow DOM

Backend

Node.js NestJS FastAPI Elysia.js Hono Mastra AI SDK LangGraph REST GraphQL WebSocket

Databases

PostgreSQL SQLite Drizzle Redis MongoDB

Infrastructure & DevOps

Docker CI/CD Linux Nginx GitHub Actions Bun

Tools & Practices

Git TDD Vitest Jest Playwright Monorepos SDK Design GitHub Apps Tauri ElectricSQL PKI/X.509

System design

A cleaner slice through the data flows and integration boundaries behind the work.

AI Trading Copilot

Tool-calling chat, streaming research runs, LangGraph decision pipeline, and gated broker execution.

MARKET CONTEXTAGENT RUNTIMEEXECUTIONpromptrunrecommendapprovequotescontextread/writefillsChat UIstreaming runsTool Routerschemas + toolsLangGraph Runanalysts + debateRisk Gatelimits + policyMarket APIsprices + brokerNews + Filingsfresh evidenceRun MemoryPostgresBrokergated ordersOrder Logfills + audit

Repro Feedback Platform

Framework-agnostic widget capture flowing into a self-hosted intake API and triage dashboard.

EMBED SURFACECAPTURE BUNDLEINTAKE + STORAGETRIAGEembedvisualeventsuploadmetadatawriteassetsqueriesopen issuestatusHost Appcustomer productSDK WidgetShadow DOMScreenshotvisual stateReplay + Logssteps + consoleIntake APIorigin + authPostgresreports + usersBlob Storemedia assetsDashboardtriage queueGitHubissue sync

Edge Sync Engine

Offline-first local state, ElectricSQL shape sync, Hono API routes, and Postgres-backed convergence.

CLIENT RUNTIMESYNC RUNTIMEAPI + DATABASEoffline writeschangespushsyncchangessubscriptionsread/writeRESTresolveapplyTauri AppsVi2 / V-DosingSQLitelocal-first storePWA Companionbrowser clientSync Queuedebounced writesElectricSQLshape syncShape Subspull + applyHono APIserver boundaryPostgressource of truthConflict Rulesmerge policy

Contribution activity

GitHub contribution grid snake animation

Get in touch!

Have a project in mind, want to collaborate, or just say hello? Drop me a message.

© 2026 JJ Teoh

Built with Nuxt. Backdrop shot through my telescope.