Senior Full-Stack Software Engineer / 15+ years / Rhode Island, USA

Phatcharaphan Ananpreechakun

Senior Full-Stack Engineer with 15+ years building secure, scalable platforms for enterprise banking and finance across web, mobile, and cloud. Core stack: Java/Spring Boot, Node.js, React, Angular, and Kotlin, with deep experience in microservices, RESTful APIs, and distributed systems. Delivered mission-critical applications for leading financial institutions, including TMBThanachart (TTB), Krungsri, Krung Thai Bank (KTB), and the Stock Exchange of Thailand.

Hands-on technical contributor focused on clean, unit-tested, maintainable code, applying object-oriented and RESTful design patterns, mentoring junior engineers, and defining coding standards and best practices. Proven record of owning features end to end and shipping reliable, high-performance software in Agile teams.

U.S. Permanent Resident · No sponsorship required. Open to on-site or remote roles anywhere in the U.S.
15+Years shipping production software
5.5M+Users on the banking app I built personalization for
6,000+Pharmacies on the Arincare platform
<500msAPI response, down from 10s+ — ttb personalization

Current roles

Oct 2024 → present
Oct 2024 → present

PRINTCODE Company Limited

Senior Software Engineer · full-time, remote

Lead full-stack delivery of web and mobile products end to end. Built a drama video-streaming platform — Angular front end, Node.js backend tuned for streaming throughput, and a cross-platform Flutter app with native video playback and ad insertion.

Oct 2024 → present

Arincare Co., Ltd.

Senior Software Engineer · part-time, remote

Core developer on Arincare Telepharmacy and the AI assistant layer on top of it. The case study below covers it in detail.

Case study — Arincare Telepharmacy & AI

Oct 2024 → present · 6,000+ pharmacies

I'm a core developer on Arincare Telepharmacy, the remote-pharmacy system added to the Thai FDA's approved telepharmacy list in August 2026. Under Thai Ministry of Public Health rules only listed systems may lawfully be used for telepharmacy — so on this product, "it works" and "it is legal to operate" are the same requirement. Read the launch announcement on Techsauce ↗

The telepharmacy platform

Laravel 13 · Vue 3.5 · Reverb · LINE LIFF · MySQL · Docker on EC2
  • A patient opens a LINE Official Account or the pharmacy's own app, is matched to an on-duty pharmacist, and goes into a live video consultation with real-time chat over Laravel Reverb and Pusher.
  • E-prescription issuance and persistent consultation history, so the same pharmacist can follow the same patient across refills rather than starting cold every time.
  • Three Vue 3 + TypeScript surfaces — pharmacist console, patient LIFF app, back-office — over one Laravel API.
  • Deploys as a single docker-compose stack: Caddy terminating TLS for five subdomains, the API, the WebSocket server, a queue worker, and the three SPAs. It either runs standalone or plugs into a pharmacy's existing management software.
Arincare Telepharmacy: a phone showing a patient voice call, beside a laptop showing the pharmacist console with a patient queue, an active voice call, and a patient information and pharmacy note panel.
The pharmacist console — patient queue, live voice and video consultation, and the patient record with e-KYC and pharmacy notes on one screen. The patient side runs inside LINE. Techsauce, Aug 2026 ↗
Laravel 13PHP 8.3Vue 3.5 TypeScriptReverb / PusherAgora RTC LINE LIFFMySQLDockerCaddy

Nicha — the AI assistant layer

Vertex AI · n8n orchestration · LINE Messaging API
  • Built "Nicha", an n8n-orchestrated assistant that sits inside the pharmacy's own software and answers in plain Thai — demand forecasting, an inventory snapshot, medical-knowledge cross-checks, triage support, purchasing suggestions, and agentic automation of the repetitive steps.
  • A second surface answers customers directly in LINE, through the Messaging API, in the same channel they already use to talk to their pharmacy.
  • AI-powered healthcare and sales-assistant workflows on Vertex AI, including generated patient-education content and automated post-consultation follow-up.
  • Presented as part of Arincare's showcase at a Google Cloud TH.AI Leaders Demo Day.
One conversation, two screens. A customer asks in LINE on the left; the pharmacy answers from the same assistant embedded in its dispensing software on the right. Same n8n orchestration, same Vertex AI workflows — the captions name each capability as it fires.

Recommendation, scoring, and the boring parts that matter

mlxtend · Redis · Dagster · batch jobs
  • Product recommendation from market-basket analysis (mlxtend), with Redis caching and scheduled batch jobs so the shop-front never waits on the model.
  • A Dagster pipeline for product scoring, plus payment and search optimization.
  • Cut platform latency by roughly 30% through database query optimization and a caching strategy, alongside ongoing API architecture work.

The consulting decade

Dec 2014 → Oct 2024 · Odd-e (Thailand)

Ten years as a consultant engineer placed inside Thailand's largest financial institutions and its telecom incumbent. One employer, five very different production systems — and in every one of them, a failed deploy was somebody's payday, trade, or SIM card.

TMBThanachart Bank — ttb touch, the bank's flagship retail app

5.5M+ users · Java Spring Boot · Kafka · React · Swift · Kotlin
10s+ → under 500ms. The personalization query path was taking more than ten seconds. It was a JPA fetch-strategy problem — the entity graph was pulling far more than the endpoint needed, in far too many round trips. Reworking the fetch plan and the queries brought it under half a second.
  • Designed and built a personalization card engine — a set of Java Spring Boot microservices surfacing contextual, targeted cards to 5.5M+ users based on in-app behaviour, transaction patterns and campaigns.
  • Architected it across services communicating via Feign clients and Kafka event streaming: a core personalization API, a Spring Batch service pre-computing cards on scheduled overnight jobs, and a Firebase FCM service for push. MongoDB for persistence, reactive Redis to keep the mobile experience fast at scale.
  • Built the campaign-management CMS in React with Redux Toolkit — drag-and-drop card ordering, a rich-text editor, dynamic form-driven configuration — tested with React Testing Library and Vitest.
  • Delivered the native clients in Swift and Kotlin; enforced quality with JUnit 5, Mockito, and JaCoCo/SonarQube coverage gates, and mentored junior engineers through code review.
Four ttb touch store screenshots: the app home with account cards, a digital-document loan application, a car-loan cash offer, and account and debit card opening.
ttb touch as it ships today. The personalization engine decides which cards each of these 5.5 million people sees, and when.

Bank of Ayudhya (Krungsri) — GO by Krungsri Auto

Loyalty & Privileges · iOS + Android · Kotlin Spring Boot · DynamoDB
  • Built the Loyalty & Privileges module — points, rewards, partner offers — for the super app on both iOS (Swift) and Android (Kotlin), using MVVM, Koin DI and LiveData/Coroutines as a standalone feature module.
  • Integrated The 1, Central Group's loyalty programme: member linking, point verification, and PDPA-consent onboarding so customers could connect their points and redeem in-app.
  • Implemented the campaign and privilege catalog with QR/barcode redemption and category browsing, consuming OAuth/APIM-secured APIs on a Kotlin Spring Boot backend over Amazon DynamoDB.
  • Drove quality with TDD — unit, integration and Espresso UI tests — plus JUnit 5/MockK on the services, JaCoCo coverage enforcement and ktlint gates in CI.
Four GO by Krungsri Auto store screenshots: the service hero, the account home with instalment payment and service tiles, payment channels including QR and barcode, and the Auto Club content hub.
GO by Krungsri Auto — the super app the Loyalty & Privileges module ships inside, on both platforms.

Krung Thai Bank — Merchant Management System

Java Spring Boot · Angular · QR payments · Alipay · SQL Server
  • Redesigned and rebuilt merchant onboarding and administration as multiple Java Spring Boot services covering core merchant management, QR payments, Alipay, and government-scheme (Pracharath) payments, with an Angular front end and HATEOAS-style REST.
  • Designed the data layer on SQL Server with JPA/Hibernate across 20+ entities, and handled asynchronous processing with JMS messaging (ActiveMQ/Artemis).
  • Secured the platform with Spring Security and delivered the merchant experience across native Android apps and an Android WebView app with UAT/production build flavours.
  • CI/CD on Jenkins + Docker with SonarQube gates; reliability driven by Robot Framework backed by a dedicated mock-data service.

The Stock Exchange of Thailand

Trading portal · IPO platform · Go · Swift · multi-bank settlement
  • Built and maintained the large-scale investor and broker-admin trading portal — portfolio, order status, real-time contract notes, e-statements, market reports — in JSP/Java with Spring, used across multiple brokerage firms.
  • Developed supporting Spring Boot services: a fund-trading API gateway, a wealth-management service and a user-management module, and integrated e-payment deposit and transfer flows with SCB, KBANK, Krungsri and UOB — including retransmission and reconciliation.
  • Built the IPO subscription platform on a Go backend over MongoDB with a JSP front end, backed by Go unit and integration tests, plus a React module for fund-payment configuration with Excel bulk upload.
  • Developed Streaming Fund+, a mutual-fund trading iOS app in Swift, and optimized the Streaming stock-trading iPhone app for performance.
  • Everything else here was internal — broker admin portals and settlement services behind a login, with nothing public to link to.
Four Streaming Fund+ store screenshots: buying and selling mutual funds with an investment plan, a portfolio overview with gains, a fund allocation donut chart with holdings, and opening a fund account.
Streaming Fund+ — mutual-fund trading and investment plans, built in Swift over Java Spring Boot services. Its sibling, Streaming, is the stock-trading app I tuned for performance.

dtac — SIM registration, KYC and number portability

Smart-card readers · SMPP · LDAP · Go · AES/CBC
  • Built in-store tools for DTAC Hall and call-centre staff: Java smart-card modules reading Thai national ID and SIM cards, e-signature capture, and barcode/QR scanning for fast SIM registration and KYC.
  • Developed the Mobile Number Portability portal in Java Spring MVC — OTP over SMPP, multi-domain LDAP auth, package and promotion search, port-in order management — with multithreaded validation and AES/CBC-encrypted data exchange.
  • Built Go REST services bridging telecom backends (Siebel, HLR, MNP, Tuxedo) with XML↔JSON/SOAP transformation, behind an AngularJS front end.

TPH Global — payroll platform

Oct 2023 – Apr 2024 · Melbourne · React · TypeScript · Node · AWS
  • Led development of a payroll platform in React/TypeScript and Node, with REST integrations, real-time synchronisation, and unit and integration tests.
  • Ran the cloud workloads on AWS — EC2, RDS PostgreSQL, CodePipeline and CloudWatch — which made releases repeatable and gave the team actual production visibility.

Products I've shipped end to end

Live in production

Outside the enterprise work I build whole products alone — schema, API, web, mobile, and the deploy path. Two are shown in full below; the rest are listed with their live or store links. Everything here is in production right now.

The JuztBooking marketing site: a purple hero reading Online booking system for Salons, above laptop and phone mockups of the scheduling calendar.

JuztBooking

juztbooking.com ↗

Booking and scheduling SaaS for salons and spas. Node + TypeScript API on Knex migrations with JWT auth and role-based permissions; Next.js site, Flutter app, React back-office. The hard part was billing — Stripe subscriptions and Connect, trials, automated renewal runs, marketplace application fees, and reconciling a Stripe/Mollie mismatch that produced two different invoices for one subscription.

The RakThai homepage: a gold hero over Thai landmarks and world monuments, with a four-field search bar for restaurants, categories, cities and countries.

RakThai / ThaiConnect

rakthai.co ↗

A directory and community platform for Thai people and businesses worldwide. Express + TypeScript API on Railway MySQL with Google Cloud Storage for user media, a server-rendered Next.js 15 front end tuned for SEO, Google and Facebook OAuth, and a Flutter client. The operator back-office is run by the client's own non-technical team.

More shipped products

MinChap — short-drama streaming for the Thai market, on both stores. Flutter client, Node API on Knex, operator back-office; coins, in-app purchases and episode unlocking. Google Play ↗ App Store ↗

AgriPro Farmer — smart-farm app on both stores. Farmers draw a plot on a satellite map, the app computes its area, then tracks planting cycles, weather from the Thai Meteorological Department, and IoT soil and climate sensors. Google Play ↗ App Store ↗

Shabyar — dating app; Flutter client, Express API, React back-office, Next.js site. App-lifecycle handling, layered rate limiting, FCM, moderation tooling. shabyar.com ↗

Niti Thai — restaurant site with online pickup ordering for a client in Glenville, New York. Five design directions built, the chosen one shipped. nitithainy.com ↗

Digimove logistics suite — production and logistics dashboards for B.Grimm and Sanko, plus register, request, shipment and tracking apps.

Flatmates Scheduler — Flutter app and Express 5 / MySQL API on Railway for booking shared spaces across multiple house profiles.

Speaking & teaching

Community
  • Speaker at Angular Bangkok, ReactiveX Bangkok, and Women Techmakers events.
  • Ran workshops on Angular, Test-Driven Development and Robot Framework at universities and in tech communities — including Maejo University, Mahanakorn University of Technology, and in-house at Food Passion.
Best Performing Startup Award, DTAC Accelerate — for the Somjai home-loan platform, a one-stop mortgage service for property developers. I built the Angular front end, the PHP/Laravel backend, and the CI/CD pipeline on AWS CodePipeline.

Writing

medium.com/@phatpan · 930 followers

I write up the things that cost me a day to work out, so they cost the next person ten minutes. Mostly in Thai, some in English — several published through ODDS, the consultancy I spent a decade with. Read them on Medium ↗

Stack

Shipped to production, not evaluated
Core stack

Java · Spring Boot · React · TypeScript · Node.js · AWS · PostgreSQL

This is what I reach for first and what most of the last decade was written in. Everything below it is also production experience, not a reading list.

Additional production experience
Languages Java · Kotlin · TypeScript · JavaScript · Swift · Go · Python · PHP · Dart · SQL (legacy: Visual Basic, JSP, ASP)
Mobile Android (Kotlin, Java, MVVM, Koin, Coroutines, Espresso) · iOS (Swift, UIKit, XCTest) · Flutter · React Native · Fastlane
Web React · Next.js · Redux Toolkit · Vue 3 · Pinia · Angular & AngularJS · RxJS · TanStack Query · Vite · Tailwind · Storybook
Backend Spring Boot (Java/Kotlin) · Laravel · NestJS · Node & Express · Go (Echo, go-json-rest) · REST & HATEOAS · SOAP · gRPC · OAuth2/JWT · Kafka · JMS (ActiveMQ/Artemis) · WebSockets (Reverb, Socket.IO, Pusher)
AI & ML Vertex AI (Discovery, Generative) · prompt engineering · n8n orchestration · Dagster pipelines · market-basket analysis (mlxtend)
Data PostgreSQL · MySQL / MariaDB · Oracle · SQL Server · MongoDB · DynamoDB · Redis · Supabase · Realm
Cloud & infra AWS (Lambda, DynamoDB, Batch, Secrets Manager, API Gateway, EC2) · Google Cloud · Huawei Cloud · Docker & Compose · Kubernetes · Terraform · Caddy · Nginx · Vercel · Railway
CI/CD & quality Jenkins · GitLab CI · GoCD · GitHub Actions · SonarQube · JaCoCo · ktlint · OWASP Dependency Check · MobSF · Crashlytics
Testing TDD · Robot Framework · Appium · Selenium · JUnit 5 · TestNG · Mockito · MockK · Espresso · XCTest · React Testing Library · Vitest · Jest · pytest
Payments Stripe (Subscriptions, Connect, application fees) · Mollie · Thai QR · Alipay · WeChat Pay

From the archive

2011 → 2016

Before the banks: BECi Corporation, 2011–2014, building PHP web and backend systems for Thailand's major broadcasters — Thai TV3 and Krobkruakao — plus LG and Samsung Smart TV apps and social-media API integrations, and a run of campaign microsites for concert and exhibition promoters. These screenshots are from a portfolio I wrote in 2017; they have aged exactly as well as you would expect.

The Titanic Artifact Exhibition Thailand microsite: an underwater scene of the wreck with hotspot navigation.
Titanic exhibition microsite, 2012
The Thai TV3 Smart TV app running inside a 2013 Samsung Smart TV emulator, showing a news tab bar and highlight thumbnails.
Thai TV3 on Samsung Smart TV, 2013
A bilingual charity auction microsite for X Japan benefiting 2011 Thai flood victims, listing auction lots.
X Japan flood-relief auction, 2011
A concert campaign page for a Jason Mraz Bangkok show with a fan registration call to action.
Concert campaign app, 2012
A point-of-sale dashboard showing stock value, daily sales, monthly profit tiles and a sales line chart.
Point-of-sale dashboard, freelance

Education

2007 — 2011

Maejo University, Chiang Mai

Bachelor of Science, Computer Science · Thailand
2022 — 2024

Greystone College, Melbourne

Certificate III in Business · Australia

Let's talk

Authorized to work in the U.S. without sponsorship, open to on-site or remote, and happy to walk through any system on this page in as much detail as you want.