mmteakdecor.com
Myanmar Teak Decor / 缅华艺家
A live trilingual website and content system for a Myanmar teak furniture workshop — one brand presence in Chinese, English, and Burmese.
Selected work
A look at recent builds — the problem, my role, the stack, and where each project stands.
Each project below shows the real problem, my role, and the current stage of the build.
mmteakdecor.com
A live trilingual website and content system for a Myanmar teak furniture workshop — one brand presence in Chinese, English, and Burmese.
mtemr.org
A live website and multi-user publishing system for a mission organization supporting theological education and frontline pastors in Myanmar — with an editorial workflow the team runs themselves.
livingrocktoronto.com
A live bilingual site for a Chinese church in North York, Toronto — with an editor that lets the church change any word on the page by clicking it.
primecarermt.com
A live registered massage therapy clinic site where patients book themselves in — real availability, therapist choice, and an admin platform the clinic runs day to day.
emeraldmassageclinic.com
A live website for a massage, spa and nails clinic in Thornhill, Ontario. The public site is running; the online booking engine is built and being readied to open to customers.
afcchurchmaesot.com
A live site for a Burmese-speaking congregation on the Thai–Myanmar border in Mae Sot — built around the two questions a first-time visitor actually has: when do you meet, and how do I get there.
yahwehglobalmission.com
A live site for a humanitarian organization working across Southeast Asia — hand-built rather than themed, with an admin area made for the people who actually keep it updated.
freeqr.salt-light.site
A free QR code generator that asks for nothing: no signup, no watermark, no upload — the code is made in your browser and never leaves it.
Trilingual Business Website + Custom CMS + PWA
A live trilingual website and content system for a Myanmar teak furniture workshop — one brand presence in Chinese, English, and Burmese.
Homepage
Product & design
Blog article
Mobile / PWA
The workshop makes solid teak doors, cabinets, staircases, and furniture from its own factory in Kengtawng, Shan State, but reached buyers only through chat apps and forwarded photos. Its customers span three language communities, high-value orders begin as a conversation rather than a checkout, and there was nothing durable to point people to that showed the work and explained why real Burmese teak costs what it does.
A warm, gallery-led site in three languages, with a product and design section, a blog that answers the questions buyers actually ask before a big order, and a consultation-and-quote path instead of a cart. A custom CMS lets the team publish in all three languages themselves, and the site installs to a phone with a one-tap call button.
Three languages is a content problem before it is a code problem. Building the CMS so the team can publish all three versions side by side is what keeps the translations from quietly drifting apart after launch.
Nonprofit Website + Multi-User CMS + PWA
A live website and multi-user publishing system for a mission organization supporting theological education and frontline pastors in Myanmar — with an editorial workflow the team runs themselves.
Homepage
Ministry page
Annual report
Mobile / PWA
The organization supports pastors and theological students in Myanmar through the aftermath of the pandemic and the 2021 coup. Its site was stuck in a website builder: years of ministry writing were trapped there, nobody could publish without the one person who knew the tool, and there was no way to review what went out before it went out. Its audience is spread across countries and reads mostly on mobile phones, often on slow connections.
A hand-built site with a real content system behind it. Every page, article and image from the old builder was migrated across word for word — 51 pages, 26 articles, 202 media files — and the team now publishes through a five-role admin with a proper editorial path: draft, autosave, submit for review, approve or reject with a reason, and a revision history if something needs winding back. Static pages are edited as blocks, so nobody touches code to change a hero or add a gallery.
The hard part of a nonprofit site is not the pages, it is the handover. Writing goes out under the organization's name, so the review step — who may publish, who must approve, and how you undo a mistake — is the feature. Build it and the site is theirs; skip it and they are still calling you to fix a typo.
Bilingual Church Site + In-Place Live Editor
A live bilingual site for a Chinese church in North York, Toronto — with an editor that lets the church change any word on the page by clicking it.
Homepage
Plan your visit
Building fund
Mobile
A Chinese-speaking congregation in Toronto needed a site that served two audiences at once: members reading Chinese and neighbours reading English. Service times, activity photos and the building-fund figure change constantly, and every previous version meant emailing someone and waiting. A church needs its notice board back.
Eleven pages in Chinese and English, and a live editor built for people who have never seen a CMS: sign in, and the page you are already looking at becomes editable — click a heading to retype it, swap a photo, adjust the spacing of a section, or drop in a new one. What you edit is what visitors see, on the page itself, with no separate admin screen to learn. A visitor arriving for the first time gets the two things they came for before scrolling: the service time and the address, pinned above the navigation, with Plan Your Visit, Get Directions and Request Prayer as the only three calls to action on the page.
Church volunteers do not want a dashboard, they want their page. Editing in place — on the real page, in the real layout — removed the step where someone has to imagine how a form field will look once published, and that step was the whole reason nobody updated the old site.
Clinic Website + Online Booking Engine + Admin Platform
A live registered massage therapy clinic site where patients book themselves in — real availability, therapist choice, and an admin platform the clinic runs day to day.
Booking flow
Homepage
Services & pricing
Mobile
A registered massage therapy clinic loses bookings to the phone. Patients look for an RMT in the evening and cannot ring; the front desk copies appointments between a paper diary and a calendar; two therapists get promised the same slot. The clinic needed patients to be able to book at 11pm without anyone risking a double-booking.
A clinical, RMT-focused site with a three-step booking flow: choose a service and duration, pick from real availability, confirm. Patients can request a specific therapist or take whoever is free, get an .ics calendar file and an email, and reschedule or cancel themselves through a self-service link. Behind it, an admin platform holds the bookings calendar, customers, therapists and their schedules, clinic hours, services and prices, and an activity log.
The booking rules are the product. Business hours, durations, buffers and one therapist in two places at once are all one question — can this slot actually be honoured — and the answer has to live on the server, because a patient with a stale page will happily book a slot that went five minutes ago.
Clinic & Spa Website + Booking Engine (in progress)
A live website for a massage, spa and nails clinic in Thornhill, Ontario. The public site is running; the online booking engine is built and being readied to open to customers.
Homepage
Treatments
Spa & nails
Mobile
A new clinic opening in a competitive area needed to be findable and credible from day one — what it treats, what it costs, whether it direct-bills — while the fastest path to a first appointment is still a phone call it can actually answer.
A fast, mobile-first site that leads with the treatments, prices and the grand-opening offer, and puts the phone number in reach on every screen. The booking engine and admin platform are built and deployed alongside it, and will replace the phone-first path once the clinic is ready to run its calendar online.
Shipping the site before the booking flow was the right call. A new clinic needs to be found this week; the booking engine can open when the front desk is ready to trust it, and until then a phone number that gets answered beats a form that does not.
Burmese Community Church Site · Custom CMS + PWA
A live site for a Burmese-speaking congregation on the Thai–Myanmar border in Mae Sot — built around the two questions a first-time visitor actually has: when do you meet, and how do I get there.
Homepage
Plan your visit
Photo albums
Mobile
A migrant congregation is found the way its people live: on a phone, over WhatsApp, often on a borrowed connection. The church has gathered since 2013 and runs two Sunday services, a Tuesday home cell and a Friday prayer meeting, but none of that was findable — someone new had to know someone already inside. The harder problem is that many in this community do not own a car and cannot easily reach the building, so a service time on its own is not an invitation.
One page answers the visitor before they scroll: the next gathering, where it is, how to get there, and a WhatsApp button that opens the app they are already in. The weekly timetable is a single table and the next gathering highlights itself, so nobody has to work out what day it is. Free Sunday transport gets its own page rather than a line of small print, because for this congregation it is the difference between attending and not. Five photo albums carry the church family, children's ministry, home cell, serving and Sunday worship — a congregation that has never had a website recognises itself first, and reads second.
The useful question for a church site is not "what do we want to say" but "what stops someone coming on Sunday". Here the answer was transport, not information — so the ride got a page of its own, and the site was built around removing that obstacle rather than around describing the church.
Humanitarian Nonprofit Site · Custom CMS + PWA
A live site for a humanitarian organization working across Southeast Asia — hand-built rather than themed, with an admin area made for the people who actually keep it updated.
Homepage
Our work
Photo gallery
Mobile
A humanitarian organization asking strangers for money has one job before any other: look like it can be trusted with it. Twenty years of clinics, water systems and disaster relief were sitting in folders, while an off-the-shelf charity template would have made the work look like everyone else's stock photography. The staff also needed to keep publishing without waiting on a developer.
A site written for this organization alone — its own templates, its own styling, and a photo system where field photographs are first-class content rather than blog attachments. Programme work is split by country, individual relief operations get their own pages, and giving is one tap away. Publishing runs through an admin built for this team rather than a general-purpose CMS, so the screens only contain what they actually use.
A small organization does not need a general-purpose CMS; it needs the four or five things it actually publishes, on screens with nothing else on them. Building the admin instead of installing one meant the staff had no features to ignore and nothing to keep updated — and it kept the public pages free of anything that reads as "template".
Free Web Tool · Bilingual · PWA
A free QR code generator that asks for nothing: no signup, no watermark, no upload — the code is made in your browser and never leaves it.
Generator
Chinese edition
Light theme
Mobile
Most free QR generators are a funnel. They mint a redirect through their own domain, so your code dies when they decide it should; they add a watermark, gate the useful settings, or want an account before you can download a PNG. For a shop printing a menu code, that is a landmine.
A single page that generates the code client-side. Colours, size, margin, corner radius, a border, and a logo dropped into the middle; download a PNG at print resolution. The QR encodes your text directly, so there is no redirect to expire, and nothing is uploaded anywhere — it works offline once loaded, and installs as an app.
The whole pitch is what it does not do. Once the code is generated in the browser there is no server to bill for, no redirect to keep alive, and no reason to ask who you are — which is exactly why the free tools that do ask are structured the way they are.
Start a Conversation
I’m available for new remote projects. Let’s talk about the smallest useful version and a responsible path forward.