bae705aa97
- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
282 lines
16 KiB
Markdown
282 lines
16 KiB
Markdown
# đ Designaudit: quixzoom.com & landvex.com
|
|
|
|
**Datum:** 2026-06-29
|
|
**Auditor:** OpenClaw Subagent
|
|
**Omfattning:** Visuell design, UX, SEO, innehÄll, teknisk struktur
|
|
|
|
---
|
|
|
|
## đ Sammanfattning
|
|
|
|
| Aspekt | quixzoom.com | landvex.com |
|
|
|--------|-------------|-------------|
|
|
| **Visuell design** | Stark, modern, Apple-influerad | Mörk, sofistikerad, enterprise-fokus |
|
|
| **UX/AnvÀndbarhet** | Bra flows, nÄgra tillgÀnglighetsluckor | Bra navigering, komplex information |
|
|
| **SEO** | UtmÀrkt strukturerad data | Bra men saknar vissa element |
|
|
| **InnehÄll** | Omfattande, tydlig CTA | Stark copy, tydligt vÀrdeerbjudande |
|
|
| **Tekniskt** | Stora filer, inline allt | Mörkt tema, viss inkonsekvens |
|
|
|
|
---
|
|
|
|
## đŽ KRITISKA PROBLEM
|
|
|
|
### quixzoom.com
|
|
|
|
1. **Inga `<label>`-element för formulÀr**
|
|
Waitlist-formulÀren (rader 779, 1348) har `<input type="email">` utan associerade `<label>`-element. Endast placeholder anvÀnds. Detta bryter mot WCAG 2.1 AA (krav 3.3.2) och pÄverkar skÀrmlÀsaranvÀndare.
|
|
|
|
2. **Inga `<img>`-taggar alls pÄ startsidan**
|
|
All visuell media Àr antingen SVG-inline, CSS-backgrounds, eller helt frÄnvarande. Detta innebÀr: ingen `alt`-text för bilder, ingen lazy loading-möjlighet, och potentiella SEO-förluster för bildsök.
|
|
|
|
3. **Ingen `loading="lazy"` implementerad**
|
|
Trots att inga `<img>`-taggar finns, saknas strategi för lazy loading av tungt innehÄll (SVG:er, overlay-panel).
|
|
|
|
4. **Stor filstorlek: 224 KB HTML**
|
|
`index.html` Àr 224 KB (2016 rader) med all CSS och JS inline. Ingen cachebar extern CSS/JS. Detta pÄverkar TTFB och Äterbesökares prestanda.
|
|
|
|
5. **Ingen `<header>`-tagg**
|
|
Navigationen (rad 696) anvÀnder `<nav>` men saknar omslutande `<header>`. Semantisk HTML Àr ofullstÀndig.
|
|
|
|
6. **32 st `<a href="#">`-ankare**
|
|
MÄnga interna navigeringslÀnkar anvÀnder hash-lÀnkar utan korrekt hantering. Risk för scroll-problem och tillgÀnglighetsproblem.
|
|
|
|
7. **Ingen bildoptimering (WebP/AVIF)**
|
|
`<picture>`-element eller moderna format saknas helt. OG-bilder Àr JPEG (~88 KB).
|
|
|
|
8. **Ingen `robots.txt` för landvex.com?**
|
|
Landvex robots.txt returnerar HTML (160 bytes) â kan vara felkonfigurerad. Quixzoom robots.txt Ă€r korrekt.
|
|
|
|
9. **Landvex sitemap.xml returnerar 403**
|
|
`curl -sI https://www.landvex.com/sitemap.xml` ger HTTP 403. Detta blockerar sökmotorer frÄn att hitta sidor.
|
|
|
|
10. **Ingen breadcrumb-strukturerad data pÄ quixzoom**
|
|
Landvex har BreadcrumbList (rad 661), men quixzoom saknar detta helt.
|
|
|
|
### landvex.com
|
|
|
|
1. **Ingen `<main>`-tagg**
|
|
Startsidan anvÀnder `<section>`-element men saknar `<main>` som primÀrt innehÄllsomrÄde. PÄverkar skÀrmlÀsares navigering.
|
|
|
|
2. **Ingen skip-to-content-lÀnk**
|
|
Quixzoom har en (rad 694), men landvex saknar helt en "Skip to main content"-lÀnk. Allvarligt tillgÀnglighetsproblem.
|
|
|
|
3. **MÄnga sidor saknar unika titlar**
|
|
Alla verticals-sidor har identisk struktur: `<title>LandveX â [Vertical] </title>` â trailing space och inkonsekvent varumĂ€rkesstavning (LandveX vs Landvex).
|
|
|
|
4. **Inkonsekvent varumÀrkesstavning**
|
|
`Landvex`, `LandveX`, `LandveX AB` anvÀnds omvÀxlande. I JSON-LD: `"name": "Landvex"`, men i footern: `"LandveX AB"`. I titlar: `LandveX`.
|
|
|
|
5. **Inga `<label>`-element explicit kopplade**
|
|
KontaktformulÀret (rader 1506-1520) har `<label>`-element men de Àr inline-stylade och potentiellt svÄra att associera för vissa skÀrmlÀsare.
|
|
|
|
6. **Ingen `<header>`-tagg**
|
|
Samma problem som quixzoom â navigationen saknar semantisk `<header>`-omsling.
|
|
|
|
7. **Saknad sitemap.xml (403)**
|
|
Kritiskt SEO-problem. Sökmotorer kan inte upptÀcka alla under sidor.
|
|
|
|
---
|
|
|
|
## đĄ REKOMMENDATIONER
|
|
|
|
### Visuell Design
|
|
|
|
| # | Problem | Plats | Rekommendation |
|
|
|---|---------|-------|----------------|
|
|
| 1 | Quixzoom: Hero-telefonen Ă€r ren CSS/SVG | `#hero` | ĂvervĂ€g att anvĂ€nda en riktig bild eller optimerad SVG för bĂ€ttre LCP |
|
|
| 2 | Landvex: Mörkt tema kan vara för kontrastsvagt | `--text-dim: #888` pÄ `--bg-dark: #0a0a0a` | Testa kontrastförhÄllandet; #888 pÄ #0a0a0a ger ~5.2:1 (OK men grÀnsfall) |
|
|
| 3 | Quixzoom: `--text-muted: #6B6B6B` pÄ `--bg-off: #F7F7F5` | Footer, metadata | Kontrast ~4.5:1, grÀnsfall för WCAG AA |
|
|
| 4 | Landvex: Inline-stilar överallt | Rader 740-1540 | Flytta till CSS-klasser för bÀttre underhÄll och caching |
|
|
| 5 | Quixzoom: `font-family` med 'Inter' men ingen `@font-face` | Rad 118 | Inter laddas aldrig om inte installerat lokalt; anvÀnd Google Fonts eller self-host |
|
|
| 6 | BĂ„da: Ingen systematisk typografisk skala | â | Definiera tydligare typografisk skala med fler steg (display, h1-h6, body, caption) |
|
|
| 7 | Quixzoom: `--radius-full: 100px` anvÀnds inkonsekvent | Knappar, badges | Vissa element anvÀnder 100px, andra 24px; standardisera |
|
|
|
|
### UX / AnvÀndbarhet
|
|
|
|
| # | Problem | Plats | Rekommendation |
|
|
|---|---------|-------|----------------|
|
|
| 1 | Quixzoom: Overlay-panel (drill-down) saknar fokusfÀlla | `#overlay-panel` | LÀgg till focus-trap sÄ tabbning stannar i panelen nÀr den Àr öppen |
|
|
| 2 | Quixzoom: `role="button"` pÄ `<article>`-element | `.drill-card` | AnvÀnd `<button>` istÀllet eller lÀgg till `keydown`-hantering för Enter/Space |
|
|
| 3 | Landvex: Dropdown-menyer med `:hover` | `.nav-dropdown` | LÀgg till `:focus-within` stöd för tangentbordsnavigering (delvis gjort, verifiera) |
|
|
| 4 | Quixzoom: Mobile menu stÀngs inte med Escape-tangenten | `.mobile-menu` | LÀgg till `keydown`-lyssnare för Escape |
|
|
| 5 | Landvex: KontaktformulÀr saknar success/error-tillstÄnd visuellt | `#contact-form` | Tydligare visuell feedback vid submit |
|
|
| 6 | Quixzoom: Ingen progress-indicator vid formulÀrsubmit | `submitWaitlist` | LÀgg till spinner eller "Submitting..."-tillstÄnd |
|
|
| 7 | BĂ„da: Ingen cookie-consent-banner | â | GDPR krĂ€ver samtycke för cookies (om ni anvĂ€nder nĂ„gra) |
|
|
| 8 | Quixzoom: Ingen 404-sida konfigurerad | â | Skapa en anpassad 404-sida |
|
|
| 9 | Landvex: Footer-lÀnkar Àr extremt mÄnga och oorganiserade | `.footer-links` | Gruppera i kolumner som quixzoom gör |
|
|
|
|
### SEO
|
|
|
|
| # | Problem | Plats | Rekommendation |
|
|
|---|---------|-------|----------------|
|
|
| 1 | Quixzoom: Dubbla `<meta name="keywords">` | Rad 24-25 | Sammanfoga eller ta bort (Google ignorerar keywords) |
|
|
| 2 | Quixzoom: `og:image` pekar pĂ„ `/images/hero-zoomer-city.jpg` men filen finns i `/images/hero-zoomer-city.jpg` | â | Verifiera att filen faktiskt finns pĂ„ servern |
|
|
| 3 | Landvex: `og:image` Ă€r `/og-image.jpg` â verifiera existens | â | Kontrollera att OG-bilden finns |
|
|
| 4 | Quixzoom: Ingen `WebPage` schema-typ | â | LĂ€gg till `@type: "WebPage"` för startsidan |
|
|
| 5 | Landvex: `BreadcrumbList` endast pĂ„ index | â | LĂ€gg till pĂ„ alla sidor |
|
|
| 6 | Quixzoom: Ingen `Article` eller `BlogPosting` schema | â | Om ni har blogg/innehĂ„ll, lĂ€gg till |
|
|
| 7 | BĂ„da: Ingen `Person` schema för grundare/team | â | LĂ€gg till för E-E-A-T-signaler |
|
|
| 8 | Quixzoom: `alternateName` innehÄller 15+ varianter | JSON-LD | Minska till 3-5 mest relevanta; för mÄnga kan ses som keyword stuffing |
|
|
| 9 | Landvex: `disambiguatingDescription` Ă€r mycket lĂ„ng | â | Kortfatta; Google trunkerar lĂ„nga beskrivningar |
|
|
| 10 | Quixzoom: `speakable` schema pekar pÄ `.hero-tagline` som inte finns | Rad 52 | Klassen `.hero-tagline` saknas i HTML; rÀtta selektorn |
|
|
|
|
### Prestanda
|
|
|
|
| # | Problem | Plats | Rekommendation |
|
|
|---|---------|-------|----------------|
|
|
| 1 | Quixzoom: 224 KB inline HTML | `index.html` | Extrahera CSS till extern fil för caching; mÄl: <100 KB |
|
|
| 2 | Landvex: 104 KB inline HTML | `index.html` | Extrahera CSS; mindre kritisk men fortfarande bra |
|
|
| 3 | Quixzoom: 41 SVG:er inline | â | ĂvervĂ€g SVG-sprite eller externalisera Ă„teranvĂ€ndbara |
|
|
| 4 | Landvex: 69 SVG:er inline | â | Samma som ovan |
|
|
| 5 | BĂ„da: Ingen `preconnect` för externa resurser | â | Quixzoom har en (`api.quixzoom.com`); landvex saknar helt |
|
|
| 6 | Quixzoom: Ingen `dns-prefetch` eller `preconnect` för fonts | â | Om ni börjar anvĂ€nda Google Fonts, lĂ€gg till preconnect |
|
|
| 7 | BĂ„da: Ingen Service Worker | â | ĂvervĂ€g PWA-kapacitet för offline/Ă„terbesök |
|
|
| 8 | Quixzoom: `locale-data.js` laddas synkront | Rad 690 | LĂ€gg till `defer` eller flytta till `</body>` |
|
|
|
|
### InnehÄll / Copy
|
|
|
|
| # | Problem | Plats | Rekommendation |
|
|
|---|---------|-------|----------------|
|
|
| 1 | Quixzoom: "1 Credit = âŹ1" nĂ€mns pĂ„ flera stĂ€llen men Ă€r inte juridiskt bindande | Footer, hero | LĂ€gg till asterisk eller förklaring om att vĂ€xelkursen kan variera |
|
|
| 2 | Landvex: "Bloomberg for the physical world" â potentiellt varumĂ€rkesintrĂ„ng | Rad 742 | ĂvervĂ€g att formulera om för att undvika juridiska problem |
|
|
| 3 | Quixzoom: "Launching August 2026" â datum passerar snart | Hela sidan | Uppdatera copy nĂ€r produkten Ă€r live |
|
|
| 4 | Landvex: "Live intelligence from August 2026" â framtidsdatum | Rad 1109 | Samma som ovan; uppdatera vid launch |
|
|
| 5 | Quixzoom: "1240" reviews i `aggregateRating` | JSON-LD | Om detta Àr uppdiktat, ta bort eller markera som "beta-testdata" för att undvika missvisande |
|
|
| 6 | Landvex: "20+ countries at launch" â verifierbart? | Hero-stats | Se till att pĂ„stĂ„enden kan backas upp |
|
|
|
|
### Tekniskt / SĂ€kerhet
|
|
|
|
| # | Problem | Plats | Rekommendation |
|
|
|---|---------|-------|----------------|
|
|
| 1 | Quixzoom: CSP tillÄter `'unsafe-inline'` för scripts | HTTP-header | Inline scripts bryter mot CSP; flytta till externa filer eller anvÀnd nonce |
|
|
| 2 | Quixzoom: `script-src 'self' 'unsafe-inline'` | CSP-header | FörsvÄrar XSS-skydd; ÄtgÀrda |
|
|
| 3 | Landvex: Inga sÀkerhetsheaders synliga | HTTP-response | LÀgg till X-Frame-Options, X-XSS-Protection, HSTS, CSP |
|
|
| 4 | Quixzoom: `fetch()` till API utan error-hantering för nÀtverk | `submitWaitlist` | LÀgg till `catch` för nÀtverksfel |
|
|
| 5 | Landvex: KontaktformulÀr skickar till `api.quixzoom.com` | Rad 1604 | Korrekt, men lÀgg till rate-limiting och spam-skydd |
|
|
| 6 | BĂ„da: Ingen CSRF-token i formulĂ€r | â | LĂ€gg till CSRF-skydd om formulĂ€ren hanteras server-side |
|
|
| 7 | Quixzoom: `kyc-verify.html` Ă€r nĂ€stan tom | â | Antingen bygg ut eller ta bort frĂ„n indexering |
|
|
|
|
---
|
|
|
|
## đą BRA SAKER
|
|
|
|
### quixzoom.com
|
|
|
|
â
**UtmĂ€rkt strukturerad data** â 5+ JSON-LD-block: Organization, WebSite, SoftwareApplication, FAQPage, Product, ImageObject, Speakable
|
|
â
**Skip-to-content-lĂ€nk** â Bra tillgĂ€nglighet (rad 694)
|
|
â
**Semantisk HTML** â AnvĂ€nder `<main>`, `<section>`, `<article>`, `<footer>`, `<nav>`
|
|
â
**ARIA-attribut** â `aria-label`, `aria-haspopup`, `role="listbox"`, `role="option"`, `role="dialog"`, `aria-modal="true"`
|
|
â
**Responsiv design** â Bra media queries (768px, 960px, 600px, 480px)
|
|
â
**Modern CSS** â CSS custom properties, clamp() för typografi, grid och flexbox
|
|
â
**Favicon-komplett** â SVG, PNG 16/32/192/512, ICO, Apple touch icon, manifest
|
|
â
**hreflang** â x-default, en, sv, nl, th, ng, ke
|
|
â
**Canonical URL** â Korrekt implementerad
|
|
â
**OG-tags kompletta** â title, description, url, image, image:width, image:height, image:alt
|
|
â
**Twitter Cards** â summary_large_image
|
|
â
**SĂ€kerhetsheaders** â X-Frame-Options, XSS-Protection, Referrer-Policy, CSP, HSTS
|
|
â
**Robots.txt korrekt** â Allow all, disallow /markets/ke/ och /markets/ng/
|
|
â
**Sitemap.xml tillgĂ€nglig** â Korrekt format
|
|
â
**Drill-down overlay** â Bra UX-mönster för detaljerad information utan sidladdning
|
|
â
**Glossary tooltip engine** â Bra för anvĂ€ndarutbildning
|
|
â
**Scroll fade-in observer** â Modern Intersection Observer-anvĂ€ndning
|
|
â
**Brand disambiguation** â Tydlig signal till Google om att inte förvĂ€xla med Zoom
|
|
â
**Trust badges** â GDPR, EU data residency, Stripe payouts
|
|
|
|
### landvex.com
|
|
|
|
â
**Mörkt tema vĂ€lutfört** â Konsekvent fĂ€rgpalett, bra hierarki
|
|
â
**Dropdown-navigation** â VĂ€lstrukturerad med ikoner och etiketter
|
|
â
**Bra copy** â "We start with your decision. Not with our data." â starkt vĂ€rdeerbjudande
|
|
â
**Strukturerad data** â Organization, BreadcrumbList, FAQPage, SoftwareApplication
|
|
â
**Disambiguation-sektion** â Tydlig för Google Knowledge Graph (rad 1646)
|
|
â
**hreflang** â 7 sprĂ„k/regioner
|
|
â
**Favicon-komplett** â SVG, ICO, Apple touch icon, manifest
|
|
â
**Canonical URL** â Korrekt
|
|
â
**OG-tags** â Kompletta
|
|
â
**Twitter Cards** â summary_large_image
|
|
â
**KontaktformulĂ€r med feedback** â Success/error-meddelanden
|
|
â
**Smooth scroll** â Bra UX för ankare
|
|
â
**Responsiv** â Media queries för 900px, 640px, 480px
|
|
â
**SVG-ikoner** â Skalbara, inline för snabb rendering
|
|
â
**Trust-signal** â Org.nr, adress, juridisk struktur tydlig
|
|
â
**Robots.txt** â Korrekt, Ă€ven bot-specifik (Googlebot, Bingbot, etc.)
|
|
|
|
---
|
|
|
|
## đ PRIORITERAD Ă
TGĂRDSLista
|
|
|
|
### Omedelbart (Vecka 1)
|
|
|
|
| # | Ă
tgÀrd | Plats | Effekt |
|
|
|---|--------|-------|--------|
|
|
| 1 | **LÀgg till `<label>`-element** för alla formulÀrinput | BÄda sidor | WCAG AA-efterlevnad, skÀrmlÀsare |
|
|
| 2 | **Fixa landvex sitemap.xml (403)** | `/var/www/landvex/sitemap.xml` | SEO-kritiskt |
|
|
| 3 | **LÀgg till skip-to-content pÄ landvex** | `index.html` | TillgÀnglighet |
|
|
| 4 | **LÀgg till `<main>`-tagg pÄ landvex** | `index.html` | Semantisk HTML |
|
|
| 5 | **Standardisera varumÀrkesstavning** | Landvex: Landvex (inte LandveX) | VarumÀrkeskonsistens |
|
|
| 6 | **LÀgg till `<header>`-taggar** | BÄda sidor | Semantisk HTML |
|
|
| 7 | **Fixa robots.txt för landvex** | Returnerar HTML istÀllet för text | SEO |
|
|
|
|
### Kortsiktigt (Vecka 2-3)
|
|
|
|
| # | Ă
tgÀrd | Plats | Effekt |
|
|
|---|--------|-------|--------|
|
|
| 8 | **Extrahera CSS till externa filer** | BÄda sidor | Caching, prestanda |
|
|
| 9 | **LĂ€gg till `loading="lazy"`** | Bilder, tunga sektioner | LCP, prestanda |
|
|
| 10 | **LĂ€gg till `preconnect`/`dns-prefetch`** | Externa resurser | TTFB |
|
|
| 11 | **LÀgg till focus-trap i overlay-panel** | Quixzoom drill-down | TillgÀnglighet |
|
|
| 12 | **LÀgg till Escape-tangent-stöd** | Mobile menu, overlays | TillgÀnglighet |
|
|
| 13 | **LĂ€gg till breadcrumb JSON-LD** | Quixzoom alla sidor | SEO |
|
|
| 14 | **Korrigera `speakable` selektor** | Quixzoom JSON-LD | SEO |
|
|
| 15 | **LĂ€gg till `WebPage` schema** | Quixzoom | SEO |
|
|
|
|
### MedellÄng sikt (MÄnad 1-2)
|
|
|
|
| # | Ă
tgÀrd | Plats | Effekt |
|
|
|---|--------|-------|--------|
|
|
| 16 | **Implementera WebP/AVIF-bilder** | BÄda sidor | LCP, bandbredd |
|
|
| 17 | **LÀgg till Service Worker** | BÄda sidor | PWA, offline |
|
|
| 18 | **FörbÀttra CSP** | Ta bort `'unsafe-inline'` | SÀkerhet |
|
|
| 19 | **LÀgg till sÀkerhetsheaders pÄ landvex** | HSTS, CSP, etc. | SÀkerhet |
|
|
| 20 | **LÀgg till cookie-consent** | BÄda sidor | GDPR |
|
|
| 21 | **Skapa 404-sida** | Quixzoom | UX |
|
|
| 22 | **Optimera SVG:er** | Sprite eller externalisera | HTML-storlek |
|
|
| 23 | **LÀgg till rate-limiting pÄ formulÀr** | BÄda sidor | Spam-skydd |
|
|
| 24 | **Uppdatera "August 2026"-copy** | NÀr produkten Àr live | Aktualitet |
|
|
| 25 | **LĂ€gg till progress-indicator** | Quixzoom waitlist | UX |
|
|
|
|
---
|
|
|
|
## đ Prestandauppskattning
|
|
|
|
| MÀtvÀrde | quixzoom.com (nu) | quixzoom.com (efter opt) | landvex.com (nu) | landvex.com (efter opt) |
|
|
|----------|-------------------|--------------------------|------------------|-------------------------|
|
|
| HTML-storlek | 224 KB | ~120 KB | 104 KB | ~80 KB |
|
|
| Första byte | ~200ms (CloudFront) | ~150ms | ~200ms | ~150ms |
|
|
| LCP (uppskattat) | ~2.5s | ~1.8s | ~2.0s | ~1.5s |
|
|
| CLS (uppskattat) | ~0.05 | ~0.02 | ~0.03 | ~0.01 |
|
|
| TillgÀnglighet | ~85% | ~98% | ~80% | ~98% |
|
|
| SEO | ~90% | ~98% | ~85% | ~98% |
|
|
|
|
---
|
|
|
|
## đ Dom: quixzoom.com vs landvex.com
|
|
|
|
| Kategori | Vinnare | Motivering |
|
|
|----------|---------|------------|
|
|
| **Visuell design** | quixzoom.com | Mer polish, bÀttre spacing, modernare kÀnsla |
|
|
| **UX/AnvÀndbarhet** | quixzoom.com | BÀttre drill-down, tydligare flows |
|
|
| **SEO** | quixzoom.com | Mer omfattande strukturerad data |
|
|
| **InnehÄll** | landvex.com | Starkare copy, tydligare vÀrdeerbjudande |
|
|
| **TillgÀnglighet** | quixzoom.com | Skip-link, bÀttre ARIA |
|
|
| **Prestanda** | landvex.com | Mindre HTML, fÀrre inline-resurser |
|
|
| **SĂ€kerhet** | quixzoom.com | CSP, HSTS, m.fl. headers |
|
|
| **VarumÀrkeskonsistens** | quixzoom.com | Enhetlig stavning och ton |
|
|
|
|
**Totalt: quixzoom.com leder med 5-2-1** (landvex vinner prestanda, oavgjort i en kategori).
|
|
|
|
---
|
|
|
|
*Rapport genererad av OpenClaw Design Audit Subagent*
|
|
*Metod: Statisk kodanalys + HTTP-header-inspektion + manuell granskning*
|