open to work · Ho Chi Minh City

A Developer who

Builds productsthat actually ship.

Software Engineer — sole frontend owner of AhaFood.ai, builder of AI-powered onboarding for the Franchise Portal.

commits · 12 months
0
commits · 12 months
active days
0
active days
day streak
0
day streak
live from self-hosted GitLab

Proof of work

Real activity, synced automatically from the self-hosted GitLab I ship from every day.

commits / year
0
commits / year
active days
0
active days
day streak
0
day streak
private projects
0
private projects

1190 contributions in the last year

Contribution GraphAugSepOctNovDecJanFebMarAprMayJunJul
LessMore

recent pushes

  • pushed 4 commits to private project
  • pushed 7 commits to japanese-n3-app · main
  • pushed 2 commits to private project

I'm a Software Engineer.

currently Software Engineer @ Ahamove

Software Engineer with nearly 3 years of experience building responsive, production-grade web applications with React, Next.js, and TypeScript. Sole owner of the entire frontend for AhaFood.ai — an e-commerce webstore embedded as a webview inside the Ahamove super-app — from UI implementation to backend API integration and GA4 product analytics. Most recently built AI Agent integration for the Franchise Portal: an AI menu-extraction agent that reads menu photos and streams detected items live into the onboarding UI over SSE.

Experience

Software Engineer — AhaFood.ai (Ahamove)

Sole frontend owner of AhaFood.ai — a Turborepo monorepo with customer storefront + merchant dashboard (Next.js 15, TypeScript) running as a webview inside the Ahamove super-app. AI chat ordering with real-time streaming (Vercel AI SDK), OIDC OAuth + OTP auth, next-intl i18n, GA4/Sentry observability.

view →

AI Agent Integration — Franchise Portal

Built AI-powered merchant onboarding: menu photos are analyzed by an AI extraction agent, detected items & prices stream live into the scanning UI over SSE (Server-Sent Events) — with client-side image compression and an alternative flow that crawls menus from food-platform URLs.

Software Engineer — Franchise Portal (Ahamove)

Multi-role franchise & merchant portal on TanStack Start (React 19, SSR via Nitro, GCP Cloud Run): type-safe BFF server functions, OTP auth with HttpOnly cookies, and granular RBAC across admin / partner / merchant dashboards.

AI-Assisted Engineering Workflow

Established the team's AI-assisted workflow: CLAUDE.md project configuration, modular coding rules, and custom agent skills (including a critical code-review skill) — shipping feature-level work through AI coding agents with PR-quality output.

GA4 Product Analytics

Led a full tracking audit, built city-based audience segments, and diagnosed a webview tracking undercount caused by history.replaceState stripping the ?webinapp parameter before GA4 fired — restoring accurate in-app attribution.

I'm looking to join a product-driven team

that ships real features and cares about code quality

  • Next.js
  • React
  • TypeScript
  • TanStack Start
  • TailwindCSS
  • TanStack Query
  • Zustand
  • Zod
  • Turborepo
  • PostgreSQL
  • Drizzle ORM
  • Vitest
  • Playwright
  • Framer Motion
  • GitLab CI

Work — Ahamove

Production products I build and own

Franchise Portal — AI Merchant Onboarding

problem

Onboarding a merchant meant manually re-typing every menu item and price from photos — slow, error-prone, and a bottleneck for franchise growth.

built

Built AI-powered onboarding on TanStack Start (React 19, SSR via Nitro, GCP Cloud Run): an AI extraction agent reads menu photos and streams detected items & prices live into the UI over SSE, with an alternative flow that crawls menus straight from food-platform URLs. Type-safe BFF server functions, OTP auth with HttpOnly cookies.

2onboarding flows — photo AI + URL crawler

liveSSE streaming into the scanning UI

3roles under one granular RBAC matrix

TanStack Start · React 19 · TypeScript · Nitro · AI Agent · SSE Streaming · RBAC

AhaFood.ai — Food E-commerce Platform

problem

Ahamove needed a food-ordering storefront running inside its super-app webview — owned end-to-end by a single frontend engineer.

built

Turborepo monorepo powering two Next.js 15 apps — customer storefront and merchant dashboard — plus shared packages. AI chat ordering with real-time streaming (Vercel AI SDK v5), OIDC OAuth 2.0 + OTP auth, multi-locale i18n (next-intl), GA4/GTM tracking and Sentry monitoring, tested with Vitest + Playwright.

2000+merchants served

3000+orders per day

100%frontend ownership — one engineer

Next.js 15 · TypeScript · Turborepo · Vercel AI SDK · TanStack Query · OIDC OAuth · next-intl · GA4

Personal builds

Designed, built and deployed end-to-end

Japanese Learning App — hoc-n3

problem

JLPT prep material is scattered across books and paid apps — I wanted one free tool covering grammar, kanji, vocabulary and mock tests for my own N3 study.

built

Fully static React SPA with no backend — everything ships as curated JSON datasets. Custom furigana renderer using <ruby> annotations with a global toggle, flashcard & quiz modes, progress persisted to localStorage via Zustand.

2,692vocabulary items across 50 lessons

628kanji in 38 radical groups

125grammar patterns + 10 full mock tests

React 18 · TypeScript · Vite · TanStack Router · Zustand · Radix UI · Tailwind

Personal Services Monorepo — canman

problem

My freelance side-services (color calibration booking, resale marketplace, affiliate links) each needed real infra — bookings, payments tracking, admin — without the overhead of running three separate stacks.

built

Turborepo + pnpm monorepo running three Next.js services on two isolated Neon Postgres databases (Drizzle ORM): distance-based pricing via Haversine + LocationIQ geocoding, Telegram-bot admin panel, ICS calendar feed, Claude-powered content drafting, Cloudinary signed uploads, Clerk auth with two isolated instances.

3production services, one monorepo

2isolated Postgres databases

0manual admin — Telegram bot + automation

Turborepo · Next.js 14 · Neon + Drizzle · Clerk · Telegram Bot · Claude API · Cloudinary

3D Wheel Generator for 1:64 Diecast

problem

Custom wheels for 1:64 diecast cars require CAD skills most hobbyists don't have — they just know the dimensions and the look they want.

built

Describe a wheel through a Zod-validated form (diameter, spoke style, bearing holes, print tolerances) or a reference image; a dual-provider LLM integration (Claude / Gemini, BYOK) writes OpenSCAD code that compiles to print-ready STL entirely in the browser via OpenSCAD WASM, with live Three.js / R3F preview and STL upload + dimension detection for text-instruction editing.

100%in-browser — form to print-ready STL

2LLM providers, bring-your-own-key

0CAD knowledge required

Next.js 16 · TypeScript · OpenSCAD WASM · Three.js / R3F · Claude & Gemini API · Zustand · CodeMirror

Get in touch

I'm open to product-focused roles where I can own the front-end of something real. If you're building with Next.js, React, or integrating AI features, let's talk.