SELECTED WORK / CLEANING SERVICES

Always Clean.

Eldridge, Iowa · the Quad Cities

A website for a family-owned Quad Cities cleaning crew, built around one idea, dirty to clean: the homepage is a fogged window visitors wipe clear.

Visit live website (opens in a new tab)Explore the project
Always Clean homepage: “The Quad Cities’ one crew for inside and out” over a view through a window
CLIENT
Always Clean
INDUSTRY
Cleaning services
OUR WORK
Website design & development, technical SEO
WEBSITE
alwaysclean.biz

THE PROJECT

A local cleaning crew.
A website you can wipe clean.

Always Clean is a family-owned cleaning company in Eldridge, Iowa. It handles commercial janitorial work, window cleaning, power washing and deck restoration for businesses and homes across Davenport, Bettendorf and the rest of the Quad Cities.

We replaced the company’s Wix site with a custom website built for two jobs: show the work in a way people remember, and give search engines and ad visitors complete, lightweight pages that lead to a quote request. Old Wix addresses redirect to their new pages, so existing links still work.

DESIGN STRATEGY

Dirty to clean,
on every screen.

The design rests on one idea: dirty to clean. The homepage hero is a window behind fogged glass, and moving the cursor wipes it clear like a squeegee. As you scroll, grime clears off the crew’s photos, bright white sections cut through deep navy ones, and the towns Always Clean serves roll past in large outlined type.

Strict brand rules keep the effects from getting in the way. Each page works as complete HTML first; the motion starts only on capable devices, after a visitor interacts, and never for people who prefer reduced motion.

TYPOGRAPHY

Poppins for headlines and Inter for body text, never the other way round.

COLOR

A bright brand blue against deep-water navy, with orange kept for quote and call buttons, once per screen.

PHOTOGRAPHY

Apart from one licensed photo, every image is the crew’s own work, matched to the service it sits beside.

HOW IT’S BUILT

Complete HTML first.
Effects where they help.

The site runs on Next.js 16 with React and TypeScript, styled with Tailwind CSS 4. The squeegee hero uses three.js through React Three Fiber, scroll effects use GSAP with ScrollTrigger and SplitText, and Lenis adds smooth scrolling on desktop.

Every page is prerendered and served from CloudFront’s cache. Quote requests are checked with React Hook Form and Zod and emailed through Amazon SES from the client’s own domain.

FRAMEWORK
Next.js 16 (App Router) and React 19
LANGUAGE
TypeScript
STYLING
Tailwind CSS 4 with brand tokens
MOTION
three.js (React Three Fiber), GSAP ScrollTrigger and Lenis
LEADS
React Hook Form and Zod, delivered by Amazon SES
HOSTING
AWS Amplify and CloudFront

SEARCH, BUILT IN

A page for every town,
built to load fast.

The new site gives search engines complete pages for every service and every town the crew covers, with nothing hidden behind JavaScript.

We redirected the old Wix page addresses to their new equivalents with permanent redirects.

Each of the four services has its own page with Service and FAQ structured data, and the FAQ answers are in the page’s HTML rather than loaded on click.

We built eleven city pages, from Davenport and Bettendorf to Moline and Walcott, each with its own services, FAQs and local business markup.

The robots.txt welcomes AI crawlers such as GPTBot and ClaudeBot, and an llms.txt file sets out the services, service areas and key facts for AI answer engines.

Every page is complete server-rendered HTML; the WebGL, animation and smooth-scroll code waits until a visitor interacts, and service pages are held to a set JavaScript budget.

The Always Clean homepage on a phone, with its Get a Free Quote button

THE SAME WEBSITE. A SMALLER SCREEN.

PROJECT HIGHLIGHTS

The details
that make it work.

Squeegee hero

A WebGL window the visitor wipes clean with the cursor, which slowly fogs back over and runs its own squeegee pass when left alone.

Before and after

A comparison slider built on a native range input, so it works with a mouse, a finger, keyboard arrows and screen readers.

A quote form for every visitor

The quote form works without JavaScript, records the ad click that brought each visitor and always finishes on a trackable thank-you page.

YOUR NEXT WEBSITE

Planning a website
your customers will use?

Let’s talk about your business, your customers and what your website needs to do.