Index — 001
Chiang Mai, TH · 2026
Open to work

Thanakrit
Thanyawatsakul.

Full-Stack Developer · Next.js / TypeScript

Thanakrit Thanyawatsakul

I build production web apps end-to-end, with AI-augmented workflows and a focus on architecture and code review. From hotel software to bilingual B2B sites, I aim for solid performance, test coverage, code quality, and CI before shipping.

Projects
Lighthouse
Vulns Patched
Projects

Things I've shipped.

Personal work, freelance, and company projects. Some solo, some with a team.

Personal
Professional
001 · Personal · Live on Vercel
Image Gallery SPA

A gallery app built to sharpen React patterns. Stable masonry with zero layout shift, full-screen lightbox, keyboard nav, infinite scroll, and keyword filtering. Vitest at 100%, Playwright E2E, SonarQube clean.

Next.js 16Framer MotionTailwind v4100% coveragePlaywright E2EPrismaDocker
Live site
// stable masonry: shortest column gets the next item
functionbuildColumns(items: Photo[], cols: number) {
  const heights = Array(cols).fill(0);
  return items.reduce((acc, item) => {
    const col = heights.indexOf(Math.min(...heights));
    acc[col].push(item); heights[col] += item.height / item.width;
    return acc;
  }, Array.from({ length: cols }, () => []));
}
002 · Company Platform · Solo
Sprouting Tech Enterprise

Company platform built solo. Multi-locale EN/TH routing, PWA with service worker, rate limiting, structured logging, security headers (CSP, HSTS, XSS), GitHub Actions CI/CD, and Docker multi-stage builds.

Next.js 15DockerGitHub ActionsCypress E2ESupabasePWAi18n
Live site
// GET /api/health
export async functionGET(): Promise<Response> {
  const checks = awaitrunHealthChecks();
  return Response.json({
    status: checks.every(c => c.ok) ? 'healthy' : 'degraded',
    uptime: process.uptime(), checks,
  });
}
#ProjectTypeLink
003PURA PMSHotel property management system. Monorepo with Next.js frontend and NestJS API. Auth, rooms, guests, and reservations done. Runs on mock data for demo.
Next.js 16NestJS 11PostgreSQLTurborepoPrismaTanStack Query
Personal · 2/7 phases
004S.K. Charoensup EngineeringB2B company website for an electrical engineering firm. Bilingual EN/TH, Payload CMS, CI/CD. I handled frontend, CMS setup, testing, and deployment.
Next.js 15Payload CMSnext-intlSonarQubeVitest
$ npm run build
Compiling pages (EN/TH)...
✓ Build complete
Freelance · Team
005Sprouting Tech MarketingOne-page company site built solo. Token-driven dark design system, Lenis smooth scroll, Framer Motion, bilingual TH/EN, contact form via Supabase + Resend.
Next.js 15Framer MotionLenisSupabaseResendZod
Company · Solo
006ThaiParts InfinityB2B industrial parts site. Team of four; 26 of 64 commits. Built carousel sections, React Email templates, contact form via Resend. ESLint/Prettier config and code review.
Next.js 15Framer MotionEmbla CarouselReact EmailTailwind v4
Company · Contributor
007Sprouting AcademyOnline learning platform. Top contributor on the frontend (98 of 394 commits), team of nine. Page architecture, CMS integration, loading skeletons, SEO metadata, SonarQube quality gates.
Next.js 15SonarQubeDockernext-intlHuskyGitHub Actions
Company · Frontend Lead
Lighthouse ScoreEvery project I ship targets 100/100 across all four categories.
Performance
Accessibility
Best Practices
SEO
Interactive
Stack

What I work with.

TypeScript across the stack. Tests and CI validate changes before shipping, including AI-generated logic.

Frontend
Next.js / React95%
TypeScript92%
Tailwind / CSS90%
Framer Motion82%
Testing & Quality
Vitest + RTL93%
Playwright / Cypress85%
SonarQube80%
ESLint / Prettier95%
Backend & DevOps
NestJS / Node.js78%
PostgreSQL / Prisma82%
Docker80%
GitHub Actions88%
Timeline

Recent work, in order.

Highlights from the last couple of months across personal and professional projects.

Mar 2026
Gallery
Gallery feature polished and commit-ready

Extracted SquareFilterButton into its own file, hit 100% coverage, and cleared all quality gates before committing.

Feb 2026
Gallery
Infinite scroll fast-scroll bug squashed

Found and fixed a pagination failure caused by fast scrolling. Rewrote the hook using threshold cascading so it never misses a sentinel. Added mock-driven tests to cover the edge case.

Feb 2026
S.K. Charoensup
Zero lint warnings across the workspace

Cleared every ESLint error and warning in the skcharoensup project. pnpm lint exits clean.

Feb 2026
Academy
Sitemap and article page refactor

Rewrote sitemap.ts and the article page to pass cognitive complexity checks and reach 100% test coverage.

Feb 2026
S.K. Charoensup
40 security vulnerabilities cleared

Patched 1 critical, 25 high, and 14 moderate vulnerabilities in the Next.js + Payload CMS stack through targeted upgrades and package overrides.

Jan 2026
S.K. Charoensup
CI database secrets and SSG unlocked

Injected DATABASE_URI and PAYLOAD_SECRET as GitHub Actions secrets so static generation could run in CI. Removed the force-dynamic workarounds.

Contact

Get in touch.

Open to full-time roles and freelance. Based in Chiang Mai, fully remote-ready.

Chiang Mai, Thailand · Available now · Responds within 24 h