← All work
FULL-STACKDelivered to client2025
Roof Refresh
A Nantou local roof-cleaning / painting / waterproofing trade business. Brand site for SEO, technician app for jobs and on-site photos — both ends share one design language for a continuous customer experience.
- Role
- Lead + full-stack
- Duration
- 2025
- Reading
- 1 min read
Stack
Flutter 3RiverpodNext.js 16React 19TypeScriptTailwind CSS 4
Product Shots
SCREENSHOTS · COMING SOON
Screenshots coming soon. Drop captures into public/works/<slug>/ and add a screenshots array to the mdx frontmatter.
public/works/paint/01.pngLocal Nantou trade businesses long relied on word-of-mouth for roof-cleaning, painting, and waterproofing jobs — zero online brand presence, invisible to search, no inbound channel. Roof Refresh ships both ends together: a brand site to attract customers and a technician app to run jobs — owner runs the whole intake-to-closeout flow inside one system.
Problem
- Local trades have no online brand — "Nantou roof cleaning" returns nothing
- Handwritten worksheets get lost; cross-team chat scatters across LINE
- Customers can't compare or vet local vendors — only word-of-mouth
Solution
- Customer-facing brand site: brand pages, services, case studies, contact form. Target keywords "Nantou roof cleaning / painting / waterproofing" on first page of search results.
- Technician-facing app: job dispatch, before/after photo pairs, on-site customer signatures, time logs — all in one flow, replacing handwritten worksheets.
- Offline-first: mountain job sites often have no signal. Technicians complete all work offline; the app syncs on its own once signal returns — no "filled in, upload failed, redo" frustration.
- Consistent design across both ends: same color palette and typography on the public site and inside the technician app — the brand experience is continuous.
Outcomes
- Delivered to client; site live, technician app deployed
- Local SEO: ranks on first page for "Nantou roof cleaning"
- Job tracking + on-site photo capture replaced handwritten paper
- One brand across customer and technician ends — visually continuous
Lessons
- Two ends beat one all-in-one app for local trades: customers need SEO + brand, technicians need offline + photos + signatures. Two products are simpler than cramming both into one.
- Offline-first is a requirement, not a bonus, on job sites: mountain 4G is unreliable. "Fill in on-site, sync later" is a hard requirement for this industry.