Serhiy NikiforovOpen to work
Back to work

React · Cloudflare edge · Solo design + build

Alex Motors

2026

A cinematic one-page site for a real auto-repair workshop on the Irish border — designed and built solo, from the neon-sign concept to the edge backend, in three languages.

~75 kB
Gzipped JS for the whole site, React 19 included
3 languages
English, Irish (Gaeilge) and Russian on a custom typed i18n
0 cookies
No third-party scripts or trackers — and no GDPR banner

Alex Motors is a working one-man garage on the Donegal–Derry border. The site is its entire digital presence: a single cinematic page that has to earn a local customer's trust in one scroll — services, customer reviews, an FAQ and instant ways to get in touch. I owned everything solo: concept and art direction, front end, edge backend, testing and CI.

The visual idea is a neon garage sign at night. The logo flickers on over a brick wall that runs seamlessly beneath all five full-screen scenes, and paging between them is owned entirely by native CSS scroll snap — after prototyping a JS wheel-paging layer I removed it completely, having proven that the browser's directional snapping does the job with zero scroll-hijacking bugs. Everything is built accessibility-first: ARIA tablists with roving tabindex, live regions, inert crossfade decks that keep all content crawlable, and every animation gated behind prefers-reduced-motion.

The site ships as a Cloudflare Worker: static assets at the edge plus a POST /api/contact endpoint that validates against the same shared contract as the browser form, filters bots with a honeypot, and hand-builds an RFC 5322 email for Cloudflare Email Routing. Three languages — English, Irish and Russian — run on a custom typed dictionary instead of an i18n library, including a unicode-range font fallback that serves a heavier Cyrillic cut so Russian display text matches the Latin face optically. Quality is enforced by Vitest unit tests, a Playwright smoke suite against the real dev server, and GitHub Actions CI on every PR.

Screens

  • Hero — the sign switches on

  • Services — master-detail showcase

  • Reviews — infinite carousel

  • FAQ — neon-glow master-detail

  • Contact — details & enquiry form

Tech stack

Core

  • React 19
  • TypeScript
  • Vite 8
  • Tailwind CSS v4

Edge & backend

  • Cloudflare Workers
  • Email Routing
  • run_worker_first routing
  • Wrangler
  • Workers Builds

i18n & typography

  • Custom typed i18n (EN / GA / RU)
  • Bebas Neue
  • Oswald Cyrillic (unicode-range)
  • font-display: block

Motion & UX

  • Native CSS scroll snap
  • IntersectionObserver reveals
  • CSS-only neon & flicker
  • grid-rows accordion
  • prefers-reduced-motion

Quality

  • Vitest
  • Playwright
  • GitHub Actions CI
  • oxlint
  • Shared validation contract

SEO & a11y

  • schema.org AutoRepair JSON-LD
  • ARIA tablists & live regions
  • inert crossfade decks
  • Honeypot anti-spam