The problem
An industrial-automation company in Egypt needed one site for two audiences: local factories, Arabic first, and foreign manufacturers setting up plants in Egypt, in English, Chinese and Turkish. It had to be fast, accessible and cheap to run: the domain is the only paid item.
Approach
- An interactive HMI demo and motion design that respects reduced-motion settings.
- A contact form with spam protection (Turnstile, honeypot, validation) and email delivery from the Worker.
- CI with about 950 unit tests and 900 end-to-end tests across Chrome, Android and iPhone Safari, plus axe accessibility checks.
Architecture
-
Users and apps
- Visitors (EN, AR, ZH, TR)
-
Orchestration
- Worker: language redirect, form API
-
Services
- Astro static build, 4 locales
- Interactive HMI demo
- Email delivery
-
Infrastructure
- Cloudflare Workers (free tier)
-
Quality
- Turnstile
- CI: ~950 unit, ~900 E2E, axe
Connections
- Visitors (EN, AR, ZH, TR) to Cloudflare Workers (free tier)
- Cloudflare Workers (free tier) to Worker: language redirect, form API
- Cloudflare Workers (free tier) to Astro static build, 4 locales
- Astro static build, 4 locales to Interactive HMI demo
- Worker: language redirect, form API to Turnstile
- Worker: language redirect, form API to Email delivery
- CI: ~950 unit, ~900 E2E, axe to Astro static build, 4 locales (tests every push and deploy)
Figure 2 Component view: a static Astro build served by Cloudflare Workers; a small Worker handles the language redirect and the contact form; automated tests run in CI and before every deploy. Diagrams show the components named in public descriptions of the work. They are simplified, not complete system maps.
Outcome
- Live at logic-controls.com in 4 languages.
- WCAG 2.2 AA with zero axe violations; Lighthouse 98–100 on mobile and 100 on desktop.
- About 950 unit and 900 end-to-end tests run in CI.
Stack
- Services
- AstroTypeScriptTailwind CSS
- Infrastructure
- Cloudflare Workers
- Quality
- TurnstileVitestPlaywrightaxe-core
Links
Where these facts come from. Everything on this page comes from the Logic Controls project and its public repository and my GitHub profile and repositories. Nothing is estimated: where no figure is public, the page describes what the system does.