What I've built.
A map of Vietnamese history, a social app, a car-rental marketplace, a coffee brand site and a few online shops. On some I built the whole app, on others only the front end.
01 / 2026Việt Niên Sử
A map of Vietnamese history I built to watch the territory change era by era, from Văn Lang to today. MapLibre in 2D and 3D, a timeline, sourced events with a page each, and a mode that compares two years side by side.
- Next.js 16
- React 19
- TypeScript
- MapLibre GL
- GeoJSON
- Vercel
02 / 2026Sosifie
A social app I'm building on my own: a Next.js client, an Express API on PostgreSQL and a separate trend crawler. Chat runs on Socket.IO, with typing indicators, read receipts and messages that delete themselves.
- Next.js
- React
- TypeScript
- Node.js
- Express
- PostgreSQL
- Prisma
- Socket.IO
03 / 2025Sigo
A car-rental marketplace in Vietnamese and English. Renters filter cars on a map and book delivery; owners manage listings, trips and payments. On the team, I set up the Next.js 15 app and its routing and kept the old URLs working.
- Next.js 15
- React 19
- TypeScript
- next-intl
- Google Maps
- React Bootstrap
- Styled Components
- Sass
04 / 2025Ajuma Garden
A shop for fruit, vegetables and flowers that I moved from Create React App to the Next.js 15 App Router. Search, cart, wishlist and quick orders for customers, and a CoreUI admin for banners and editorial content.
- Next.js 15
- React 19
- Redux
- Firebase
- CoreUI
- Styled Components
- Sass
05 / 2024Viet Lasa Coffee
A coffee brand site built around long scroll stories, on Next.js 15 and Sanity. Headings animate in with GSAP and ScrollTrigger. The content is in Sanity, and I tried its Visual Editing, which lets you change text right on the page.
- Next.js 15
- React 18
- Sanity
- GSAP
- ScrollTrigger
- Styled Components
- Zustand
- Resend
06 / 2024Mộc
A WooCommerce store on WordPress and Elementor Pro. I made the product layouts, the variation swatches and the bundles, and kept it simple enough that the owner updates products every day without calling a developer.
- WordPress
- WooCommerce
- Elementor Pro
- PHP
- MySQL
07 / 2023Zing MP3 clone
A Zing MP3 clone I built to learn React. Music keeps playing as you move between pages, with search, queues, playlists and downloads. Redux Toolkit holds the player state.
- React 18
- Redux Toolkit
- React Router
- React Player
- Styled Components
- Axios
- FileSaver