Skip to content
Eduvek — Learn. Grow. Evolve.
← Back to portfolio

Live: sky-painting.ca

Sky Painting — Client Website

A full-stack, lead-generating website for a Toronto painting company.

sky-painting.ca website screenshot

What it is

A complete professional website for Sky Painting, a Toronto-based painting company owned and operated by Reza Younusi — built to generate real leads through Google search and convert visitors into quote requests without Reza needing to make a single phone call before the estimate.

The challenge

A local service business competing in the GTA needs more than a good-looking page. It needs to appear in search results for hundreds of specific local queries — "painters in Woodbridge," "stucco repair Markham," "cabinet painting Vaughan" — while also converting those visitors into actual leads. That means deep neighbourhood coverage, fast-loading pages, a smart quote form, reliable email delivery, and all the unglamorous infrastructure (DNS, email authentication, schema markup, accessibility) that decides whether a site actually works for its owner.

What I built

A full Next.js 15 App Router site with TypeScript and Tailwind CSS v4, deployed on Netlify with automatic CI/CD from GitHub. The site is entirely data-driven — adding a new service or city is a one-line change in a single file, and the sitemap, service listing, and navigation all update automatically.

Quote system: An 8-step smart quote wizard that collects everything Reza needs to produce an accurate written estimate without an on-site visit — service type, room dimensions, surface condition, paint preferences, photos, and contact details. Travel zone detection automatically calculates and displays the correct travel fee based on the customer's city. The form persists state across page refreshes and URL-shares the current step.

Email system: Two branded email templates using Resend — a detailed notification to Reza with all quote data, travel zone badge, and photo attachments, and a confirmation to the customer with their reference number and project summary.

SEO infrastructure: 170 service area pages covering every city, town, and neighbourhood within 100km of Toronto — from Rosedale and Forest Hill to Kleinburg, Port Credit, Brooklin, and Friday Harbour. 41 service pages with cost guides, process steps, and FAQ schema. 8 long-form blog articles targeting high-value search terms. LocalBusiness and FAQPage JSON-LD schema throughout. SPF and DMARC email authentication. llms.txt for AI search visibility.

Accessibility: WCAG AA compliant — contrast ratios verified, valid ARIA roles throughout, keyboard navigation correct, mobile drawer properly hidden from screen readers when closed.

Testing: 246 unit tests and 124 E2E Playwright tests, all passing, with a gating CI pipeline on GitHub Actions.

Key features

  • 8-step smart quote form with travel zone detection and fee calculation
  • 170 neighbourhood and city pages across the GTA and surrounding area
  • 41 service pages — interior, exterior, commercial, stucco, drywall, kitchen, bathroom, deck, fence, power washing, and more
  • 8 SEO blog articles (900–1,050 words each)
  • Branded transactional email system (customer confirmation + owner notification with photos)
  • Real Google reviews section with direct review link
  • Google Analytics 4, Google Search Console, Google Business Profile
  • WCAG AA accessibility compliance
  • 246 unit tests + 124 E2E tests, CI gating on GitHub Actions
  • Full DNS, domain, email authentication (SPF + DMARC), and SSL configuration

Tools

  • Next.js 15 (App Router)
  • TypeScript (strict)
  • Tailwind CSS v4
  • React Hook Form + Zod
  • Resend (email)
  • Netlify
  • Google Analytics 4
  • Google Search Console
  • Playwright (E2E testing)
  • Vitest (unit testing)
  • Vibe Coding (Claude Code)
Visit project →