← 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.png

Local 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

  1. Customer-facing brand site: brand pages, services, case studies, contact form. Target keywords "Nantou roof cleaning / painting / waterproofing" on first page of search results.
  2. Technician-facing app: job dispatch, before/after photo pairs, on-site customer signatures, time logs — all in one flow, replacing handwritten worksheets.
  3. 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.
  4. 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.

Interested in this project?

Or want something similar built? Let's chat.