Available for new roles
Software Engineer · React / Next.js / Node.js
Huynh Van Gioi Em
- 0335 687 425
- huynhvangioiem@gmail.com
- LinkedInlinkedin.com/in/huynh-van-gioi-em
- GitHubgithub.com/huynhvangioiem
- Ho Chi Minh City, Vietnam
- 4+ yrsat Gradion, building for European clients
- 4 monthsas the sole developer of a live client product
- 46releases in under six weeks, as one of two primary engineers
- 2own products shipped to real users: a finance app and a food shop's back office
Summary
Frontend engineer with 4+ years at Gradion, building SaaS and multi-tenant platforms for European clients in React, Next.js (App Router) and TypeScript. I care most about frontend architecture, end-to-end testing with Playwright and application security. I also work full-stack with Node.js, Prisma and PostgreSQL, and run my own finance app in production, with an AI assistant on a model I host myself so users' financial data stays private.
Skills
- Core
- React 19Next.js 15/16 (App Router)TypeScriptJavaScript (ES6+)React 19, Next.js 15/16 (App Router), TypeScript, JavaScript (ES6+)
- State & Data
- Redux ToolkitZustandTanStack QueryReact Hook FormZodRedux Toolkit, Zustand, TanStack Query, React Hook Form, Zod
- UI & Styling
- Tailwind CSSshadcn/uiRadix UISCSSTailwind CSS, shadcn/ui, Radix UI, SCSS
- Testing
PlaywrightJestCypressPlaywright, Jest, Cypress
- Backend & Tools
- Node.jsPrismaPostgreSQLDockerGitNode.js, Prisma, PostgreSQL, Docker, Git
- Practices
- ScrumAgileGit FlowCode ReviewAdaptabilitySelf-DirectionScrum, Agile, Git Flow, Code Review, Adaptability, Self-Direction
Experience
Gradion (formerly NFQ Asia)
May 2022 – Present
EU-Sovereignty SaaS Platform
Jun 2026 – Jul 2026
Nuxt 4Vue 3TypeScriptNitroPrisma 7MariaDBMauticTwenty CRMn8nNuxt UIVitest
PlaywrightDockerGitLab CI
- One of two primary engineers on a team that shipped 46 releases in under six weeks, building across the whole stack: API, pages and shared components.
- Led the merge of two separate apps, the user registry and the cockpit UI, into one Nuxt app and moved the deployment over to it.
- Owned the marketing module end to end on top of Mautic: segments, a visual email builder with scheduled sends, forms and a campaign journey builder, replacing HubSpot Marketing for five brands.
- Built the CRM workspace on top of Twenty and the access model behind it, so every record and marketing asset stays inside its own brand.
- Treated security and quality as defaults: encrypted credentials, revocable sessions and rate-limited sign-in; set up the Playwright suite behind about 1,100 tests on every merge request; tracked down a sync loop that kept Mautic and the sync engine writing to each other endlessly.
CDN/Proxy SaaS Platform — Admin Dashboard
May 2025 – May 2026
Next.js 15React 19TypeScript
NextAuth.jsTanStack QueryZodTailwind CSSshadcn/uiPlaywrightJest
- Grew from one of five developers to the main one, contributing 73% of the codebase, and from January 2026 carried the live product, used for over a thousand domains, on my own.
- Took on the hardest parts of the product: the rules engine customers use to control their traffic, and the web-performance area with real-user metrics, synthetic tests and an AI performance coach.
- Audited the app's create, edit and delete flows, found three critical bugs and several actions that failed silently, then wrote the team's CRUD standard and backed every fix with a regression test.
- Owned the server side of the frontend: the Next.js backend-for-frontend, sessions and route-level access control, and the move of the whole app onto the platform's new organisation-scoped API.
- Closed security gaps along the way: sliding sessions with token rotation, role guards on routes, and fixes for an open redirect, reusable password-reset tokens and a critical Next.js CVE.
CDN/Proxy SaaS Platform — Legacy Admin Console
Mar 2023 – Feb 2026
Symfony
TwigJavaScriptjQueryChart.jsSCSSWebpackCypress
- Joined as a fresher on the frontend's first commit and grew into its biggest contributor over three years, out of 15 people who worked on the codebase.
- Laid the frontend foundation: the theme and page layout, then the ESLint, Prettier and pre-commit setup that still keeps the team's JavaScript consistent.
- Built the add-domain wizard, the path every new customer takes to put a site on the service: add the domain, set up DNS, test the connection and issue SSL in one guided flow, so customers could get a site live without hands-on help from support.
- Built the rule builder customers use to control their traffic, and later moved its preview into the browser so rules update as they are edited instead of waiting 1–2 seconds on the server for each change.
- Built the Core Web Vitals dashboard with a world map by country, the EN/DE language switcher across sign-up and login, and E2E checks that every user role reaches the right pages.
E-commerce Analytics SaaS
Sep 2022 – Feb 2023
PHPSymfony
TwigVanilla JSBootstrap 5SCSSCypress
- Proposed and led a refactor that removed about 40k lines of legacy V1 code and moved the product fully onto V2, in my first production project.
- Migrated the UI from Bootstrap 4 to 5 and rebuilt the key pages on a component-based SCSS structure that was easier to extend.
- Built the embeddable score widget customers place on their own sites, putting the product in front of their visitors.
U2Fly — Flight Booking Platform
May 2022 – Aug 2022
React 18Redux ToolkitAnt Design
- Where I started: owned the user profile, booking and admin modules of a complete flight-booking app, from Redux state to REST API integration.
- Added the app-wide pieces: a shared API layer with automatic authentication, role-based route protection and route-level code splitting.
Personal projects
Chili by TLA
Jun 2026 – Present
React 19Express 5Prisma 7PostgreSQLTanStack QueryReact Router 7ZodVitePlaywrightDocker
- Took the product from an empty repository to production in about three months, then shipped 31 releases in its first three weeks, working from a written roadmap of small end-to-end slices.
- Designed it around one rule: anything that changes money goes through the service layer. The web app, the AI assistant and scheduled jobs are all just callers, so none of them can skip a business rule or reach another user's data.
- Made the AI assistant safe to trust with money: it can only call the app's own services, never chooses whose account it acts on, runs each action once even when retried, and models are compared on a 76-case test set rather than by feel.
- Modelled the parts of personal finance most apps skip: credit-card statement cycles, installment plans, loans with repayments and a monthly cash-flow forecast, with exact decimal money math and product decisions written down with their reasoning.
- Run it like a team product: about 3,300 automated tests including end-to-end journeys on a real database, versioned releases deployed to my own server with backups, and Claude Code working inside architecture rules I set and review.
Yumi Kitchen
Apr 2026 – May 2026
Next.js 16React 19TypeScriptPostgreSQL (raw SQL)ExcelJSTailwind CSSPlaywright
Heroku
- Built it in six weeks for a real shop that ran on spreadsheets, and carried its past figures over from Excel so the profit history stayed whole from day one.
- Turned how the business actually works into rules: every sale deducts ingredients by recipe and records its cost at that moment, so the owner sees true profit per dish and per channel.
- Modelled the delivery platforms' real fees, including 8% VAT on GrabFood commission and ad fees, so the profit shown matches what lands in the bank account.
- Gave the owner daily control: cash and bank reconciliation per shift, stocktakes with an undo window, capital tracking, and Excel import and export for every kind of record.
- Tested the business math, not just the screens: an end-to-end scenario opens a shop from zero and checks stock, cost, revenue and margin after every step.
Education & languages
Can Tho University
Aug 2017 – Jan 2025
- Vietnamese Native
- English Professional working