Delivered for clients.

// freelance · flagship · maintained since 2025
Memory Matters
Nonprofit brain health organization · Hilton Head Island, SC · mymemorymatters.org

Completely rebuilt and relaunched the site for a nationally recognized dementia care and brain health nonprofit serving the South Carolina Lowcountry. Took over a disorganized existing site and delivered a polished, professional rebuild. Then stayed on as the sole developer maintaining and expanding it since March 2025, contract renewed for 2026-27. The site handles a wide range of real-world nonprofit needs: multi-program listings, event calendars, newsletter signup, donation flows, caregiver support resources, a member portal, and multiple location pages. Built on Wix Studio with custom Velo/JavaScript for dynamic behavior beyond what the visual editor supports.

→ Still their developer today: on the site since March 2025, contract renewed for 2026-27. They've never needed to look for anyone else.

Wix Studio Velo / JavaScript Multi-program site Donation flows Event calendar Member portal Maintained since 2025
// freelance · pro bono · delivered
Big T's Bakery
Full-stack e-commerce site · Thailand

Built a full-stack bilingual (EN/TH) bakery e-commerce site for a young entrepreneur in Thailand. Features a dynamic menu loaded from a Postgres database, a live cart with custom icing colour surcharges, a weekend-only date picker, and a payment slip upload flow using Vercel Blob. Orders hit an admin dashboard (Clerk-protected) with inline status management, full order detail views, and a menu CMS for adding new products. Notification emails fire via Resend on every order. Deployed on Vercel.

Next.js TypeScript Tailwind CSS Neon (Postgres) Vercel Clerk Resend Vercel Blob Bilingual EN/TH
// freelance · pro bono · built, awaiting launch
Grass Roots Sports
Full-stack web app · Pattaya, Thailand

Built a full production web app for a sports nonprofit running youth, teen, and adult basketball programs. Features bilingual EN/TH routing, a multi-step registration form with PromptPay QR payment, email confirmations via Resend, a self-hosted Payload CMS for content management, Clerk authentication protecting an admin dashboard, and a Neon (Postgres) database for registrations and contact messages.

→ Followed up with a full security and performance hardening pass: closed a public admin-data exposure bug, added rate limiting and XSS protections, fixed WCAG AA accessibility failures, and wired up GA4 analytics and Search Console ahead of launch.

Next.js TypeScript Tailwind CSS Payload CMS Neon (Postgres) Clerk Vercel Blob Bilingual EN/TH
// freelance · delivered
JÄAD
Cafe & cocktail bar · Ayutthaya, Thailand

Built a full-stack bilingual (EN/TH) site and CMS for a Thai cafe-by-day, cocktail-bar-and-live-DJ-lounge-by-dusk venue reopening under new ownership. Runs on Payload CMS embedded in Next.js, with a real Neon (Postgres) database and Vercel Blob media storage. Its defining feature is a Day/Dusk toggle that swaps not just colors but real content: different hero photography, copy, and atmosphere for cafe hours versus bar hours, alongside a matching EN/TH toggle, both built as a shared animated sliding switch. Editors manage six pages, a menu, events, and a gallery through a custom-branded admin panel; edits reach the live site within a minute via ISR, no redeploy required.

→ What started as a speculative live prototype built to win the pitch became the client's real production site: real database, real admin logins, real reservations routed through LINE.

Next.js TypeScript Payload CMS Neon (Postgres) Vercel Vercel Blob Bilingual EN/TH Day/Dusk theming

Curious what's behind these builds? Check out my personal projects, or get in touch about your own.