Files
boc/quixzoom-landing-fixed/resources/index.html
T
Bernt 6989a98d75 feat: Passwordless cross-device authentication
- Arkitektur: docs/auth/passwordless-architecture.md
- Backend: iom/quixzoom-auth-service/ (FastAPI + Redis)
- Webb: quixzoom-market-pages/se/login/ (QR-kod + polling)
- App: iom/quixzoom-app/src/features/auth/ (push + deep links)

Flöde: QR-kod → app-godkännande → webb-inloggad
2026-07-07 07:11:50 +00:00

367 lines
20 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Resources — quiXzoom</title>
<meta name="description" content="Documentation, API guides and use-case resources for organisations using quiXzoom field data.">
<link rel="canonical" href="https://www.quixzoom.com/resources/">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<meta property="og:type" content="website">
<meta property="og:url" content="https://www.quixzoom.com/resources/">
<meta property="og:title" content="Resources — quiXzoom">
<meta property="og:description" content="Documentation, API guides and use-case resources for organisations using quiXzoom field data.">
<meta property="og:image" content="https://www.quixzoom.com/images/hero-zoomer-city.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="quiXzoom — Collect Reality. Get Paid.">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Resources — quiXzoom">
<meta name="twitter:description" content="Documentation, API guides and use-case resources for organisations using quiXzoom field data.">
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
--bg-dark:#0a0a0a;--bg-white:#FFFFFF;--bg-off:#F7F7F5;
--blue:#0066FF;--blue-dark:#0052CC;--blue-pale:rgba(0,102,255,.07);
--green:#00C853;--text-dark:#0a0a0a;--text-body:#3a3a3a;--text-muted:#6B6B6B;
--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;
--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;
--radius-sm:8px;--radius-md:14px;--radius-lg:24px;--radius-full:100px;
--radius-card:16px;
--qx-blue:#0066FF;
}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,'Inter','Helvetica Neue',sans-serif;font-size:1rem;line-height:1.65;color:var(--text-body);background:var(--bg-white);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{cursor:pointer;font-family:inherit}
.container{width:100%;max-width:1160px;margin:0 auto;padding:0 24px}
/* NAV */
nav{position:sticky;top:0;z-index:300;background:var(--bg-dark);border-bottom:1px solid rgba(255,255,255,.06)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:68px;gap:32px}
.nav-logo{font-size:1.375rem;font-weight:900;color:#fff;letter-spacing:-.04em}
.nav-logo .x{color:var(--blue)}
.nav-links{display:flex;align-items:center;gap:32px;flex:1;justify-content:center;list-style:none}
.nav-links a{color:rgba(255,255,255,.75);font-size:var(--text-base);font-weight:500;transition:color .15s}
.nav-links a:hover{color:#fff}
.btn-nav{background:var(--blue);color:#fff;border:none;border-radius: var(--radius-lg);padding:10px 24px;font-size:var(--text-base);font-weight:700;transition:background .15s;white-space:nowrap;flex-shrink:0;text-decoration:none;display:inline-block}
.btn-nav:hover{background:var(--blue-dark)}
@media(max-width:768px){.nav-links{display:none}.btn-nav{display:none}}
/* PAGE HERO */
.page-hero{background:var(--bg-dark);padding:72px 0 80px;color:#fff}
.breadcrumb{font-size:.8rem;color:rgba(255,255,255,.75);margin-bottom:16px}
.breadcrumb a{color:var(--blue)}
.breadcrumb a:hover{color:#fff}
.page-hero h1{font-size:clamp(2rem,5vw,3.5rem);font-weight:900;letter-spacing:-.05em;line-height:1.1;margin-bottom:16px}
.page-hero p{font-size:var(--text-lg);color:rgba(255,255,255,.65);max-width:560px;line-height:1.6}
/* RESOURCE SECTIONS */
.resources-body{padding:72px 0 96px;background:var(--bg-white)}
.resource-group{margin-bottom:64px}
.resource-group:last-child{margin-bottom:0}
.group-label{
font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;
color:rgba(0,0,0,.3);margin-bottom:20px;
}
.resource-list{display:flex;flex-direction:column;gap:12px}
.resource-row{
display:flex;align-items:center;justify-content:space-between;gap:24px;
background:#fff;border:1.5px solid #EAEAEA;border-radius: var(--radius-md);
padding:20px 24px;
transition:border-color .2s,box-shadow .2s,transform .2s;
}
.resource-row:hover{
border-color:rgba(0,102,255,.25);
box-shadow:0 8px 24px rgba(0,0,0,.07);
transform:translateY(-1px);
}
.resource-info{flex:1}
.resource-info h3{font-size:1rem;font-weight:700;color:var(--text-dark);margin-bottom:4px;line-height:1.3}
.resource-info p{font-size:.875rem;color:var(--text-muted);line-height:1.5}
.resource-tag{
flex-shrink:0;
font-size:.7rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
background:var(--blue-pale);color:var(--blue);border-radius: var(--radius-sm);padding:4px 10px;
}
.resource-arrow{
flex-shrink:0;color:var(--blue);font-weight:700;font-size:.875rem;
display:flex;align-items:center;gap:4px;
}
/* FOOTER */
footer{background:#0a0a0a;color:#fff;padding:0;border-top:none}
.footer-top{padding:56px 0 48px;border-bottom:1px solid rgba(255,255,255,.1)}
.footer-grid{display:grid;grid-template-columns:200px repeat(5,1fr);gap:32px;max-width:1200px;margin:0 auto;padding:0 32px}
.footer-brand-col .footer-logo{font-size:1.3rem;font-weight:800;letter-spacing:-.04em;color:#fff;text-decoration:none;display:block;margin-bottom:12px}
.footer-brand-col .footer-logo .x{color:var(--qx-blue,#0066FF)}
.footer-brand-col .footer-desc{font-size:.8rem;color:rgba(255,255,255,.75);line-height:1.6;margin-bottom:20px}
.footer-social-row{display:flex;gap:10px}
.footer-soc-btn{width:36px;height:36px;border-radius: var(--radius-md);background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.7);text-decoration:none;transition:background .15s,color .15s}
.footer-soc-btn:hover{background:rgba(255,255,255,.16);color:#fff}
.footer-col-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.75);margin-bottom:16px}
.footer-col-links{list-style:none;padding:0;margin:0}
.footer-col-links li{margin-bottom:10px}
.footer-col-links a{font-size:.875rem;color:rgba(255,255,255,.65);text-decoration:none;transition:color .15s}
.footer-col-links a:hover{color:#fff}
.badge-new{font-size:.65rem;font-weight:700;background:var(--qx-blue,#0066FF);color:#fff;padding:1px 5px;border-radius: var(--radius-sm);margin-left:5px;vertical-align:middle}
.footer-trust{display:flex;align-items:center;gap:16px;margin-top:20px;flex-wrap:wrap}
.trust-badge{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius: var(--radius-md);padding:8px 12px;font-size:.72rem;font-weight:700;color:rgba(255,255,255,.7);display:flex;align-items:center;gap:6px;letter-spacing:.02em}
.footer-bottom{max-width:1200px;margin:0 auto;padding:20px 32px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.footer-copy{font-size:.8rem;color:rgba(255,255,255,.75)}
.footer-legal-links{display:flex;gap:20px}
.footer-legal-links a{font-size:.8rem;color:rgba(255,255,255,.75);text-decoration:none}
.footer-legal-links a:hover{color:rgba(255,255,255,.8)}
.footer-lang-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.footer-lang-row .fl-lbl{font-size:.72rem;color:rgba(255,255,255,.75)}
.flang{font-size:.78rem;color:rgba(255,255,255,.75);text-decoration:none;padding:3px 6px;border-radius: var(--radius-sm)}
.flang:hover,.flang.active{background:rgba(255,255,255,.1);color:#fff}
@media(max-width:1024px){.footer-grid{grid-template-columns:1fr 1fr 1fr}.footer-brand-col{grid-column:1/-1}}
@media(max-width:768px){.resource-row{flex-wrap:wrap}.resource-tag{display:none}}
@media(max-width:600px){.footer-grid{grid-template-columns:1fr 1fr;padding:0 16px}.footer-bottom{flex-direction:column;align-items:flex-start;gap:10px}}
@media(max-width:480px){.footer-grid{grid-template-columns:1fr;padding:0 12px}}
</style>
<style>
@media (max-width: 640px) {
.hero h1 { font-size: 2rem !important; }
.hero p { font-size: 1rem !important; }
.card { padding: 1.5rem !important; }
.grid { grid-template-columns: 1fr !important; }
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
}
</style>
</head>
<body>
<nav>
<div class="container">
<div class="nav-inner">
<a href="/" class="nav-logo">qui<span class="x">X</span>zoom</a>
<ul class="nav-links">
<li><a href="/#how">How it works</a></li>
<li><a href="/for-organisations/">For organisations</a></li>
<li><a href="/resources/">Resources</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/for-organisations/#contact" class="btn-nav">Request a demo &#8594;</a>
</div>
</div>
</nav>
<div class="page-hero">
<div class="container">
<div class="breadcrumb"><a href="/">quiXzoom</a> / Resources</div>
<h1>Resources for organisations</h1>
<p>Documentation, API guides and use-case resources for organisations using quiXzoom field data.</p>
</div>
</div>
<section class="resources-body">
<div class="container">
<div class="resource-group">
<div class="group-label">Platform</div>
<div class="resource-list">
<a href="/for-organisations/" class="resource-row">
<div class="resource-info">
<h3>For organisations</h3>
<p>Overview of quiXzoom's field data platform for municipalities, infrastructure operators, insurers and property managers.</p>
</div>
<span class="resource-tag">Overview</span>
<span class="resource-arrow">View &#8594;</span>
</a>
<a href="/use-cases/road-inspection/sweden/" class="resource-row">
<div class="resource-info">
<h3>Use case: Road inspection in Sweden</h3>
<p>How Swedish municipalities use quiXzoom missions to collect pavement condition data at scale.</p>
</div>
<span class="resource-tag">Use case</span>
<span class="resource-arrow">View &#8594;</span>
</a>
</div>
</div>
<div class="resource-group">
<div class="group-label">Developer</div>
<div class="resource-list">
<a href="/developer/openapi.json" class="resource-row">
<div class="resource-info">
<h3>API documentation (OpenAPI spec)</h3>
<p>Full reference for the quiXzoom REST API. Authentication, endpoints, webhooks and rate limits.</p>
</div>
<span class="resource-tag">Docs</span>
<span class="resource-arrow">View &#8594;</span>
</a>
<a href="/changelog" class="resource-row">
<div class="resource-info">
<h3>Changelog</h3>
<p>Platform updates, API version history and upcoming changes.</p>
</div>
<span class="resource-tag">Updates</span>
<span class="resource-arrow">View &#8594;</span>
</a>
</div>
</div>
<div class="resource-group">
<div class="group-label">Trust &amp; compliance</div>
<div class="resource-list">
<a href="/security" class="resource-row">
<div class="resource-info">
<h3>Security &amp; trust</h3>
<p>Data handling practices, GDPR compliance, EU data residency and responsible disclosure policy.</p>
</div>
<span class="resource-tag">Security</span>
<span class="resource-arrow">View &#8594;</span>
</a>
<a href="privacy/index.html" class="resource-row">
<div class="resource-info">
<h3>Privacy policy</h3>
<p>How quiXzoom collects, processes and protects personal data for Zoomers, clients and end users.</p>
</div>
<span class="resource-tag">Legal</span>
<span class="resource-arrow">View &#8594;</span>
</a>
</div>
</div>
</div>
</section>
<footer>
<div class="footer-top">
<div class="footer-grid">
<div class="footer-brand-col">
<a href="/" class="footer-logo">qui<span class="x">X</span>zoom</a>
<p class="footer-desc">Crowdsourced field data collection. Zoomers photograph infrastructure, real estate and urban environments on demand.</p>
<div class="footer-social-row">
<a href="https://www.linkedin.com/company/quixzoom" class="footer-soc-btn" aria-label="LinkedIn" target="_blank" rel="noopener">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
</a>
<a href="https://twitter.com/quixzoom" class="footer-soc-btn" aria-label="X / Twitter" target="_blank" rel="noopener">
<svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.744l7.73-8.835L1.254 2.25H8.08l4.253 5.622zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
</a>
<a href="https://www.instagram.com/quixzoom" class="footer-soc-btn" aria-label="Instagram" target="_blank" rel="noopener">
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>
</a>
</div>
<div class="footer-trust">
<div class="trust-badge"><span class="tb-icon"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span>GDPR compliant</div>
<div class="trust-badge"><span class="tb-icon"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10z"/></svg></span>EU data residency</div>
<div class="trust-badge"><span class="tb-icon"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg></span>Stripe payouts</div>
</div>
</div>
<div>
<div class="footer-col-title">Platform</div>
<ul class="footer-col-links">
<li><a href="#how">How it works</a></li>
<li><a href="#missions">Mission types</a></li>
<li><a href="#earnings">Zoomer earnings</a></li>
<li><a href="/markets/se/">Sverige launch <span class="badge-new">Aug 2026</span></a></li>
<li><a href="/markets/">All markets</a></li>
<li><a href="https://app.quixzoom.com/join">Join as Zoomer</a></li>
</ul>
</div>
<div>
<div class="footer-col-title">Solutions</div>
<ul class="footer-col-links">
<li><a href="/for-organisations/">For organisations</a></li>
<li><a href="/for-organisations/#use-cases">Use cases</a></li>
<li><a href="/for-organisations/#enterprise">Enterprise</a></li>
<li><a href="/pricing">Pricing</a></li>
<li><a href="/for-organisations/#contact">Request a demo</a></li>
</ul>
</div>
<div>
<div class="footer-col-title">Developers</div>
<ul class="footer-col-links">
<li><a href="/developer/openapi.json">OpenAPI spec</a></li>
<li><a href="/changelog">Changelog</a></li>
<li><a href="/status">System status</a></li>
</ul>
</div>
<div>
<div class="footer-col-title">Resources</div>
<ul class="footer-col-links">
<li><a href="/academy/">Zoomer Academy</a></li>
<li><a href="/resources/">Resources</a></li>
<li><a href="/glossary">Glossary</a></li>
<li><a href="/security">Security &amp; trust</a></li>
<li><a href="/careers/">Careers</a></li>
<li><a href="/about">About quiXzoom</a></li>
<li><a href="support.html">Support centre</a></li>
</ul>
</div>
<div>
<div class="footer-col-title">Legal</div>
<ul class="footer-col-links">
<li><a href="privacy/index.html">Privacy policy</a></li>
<li><a href="terms/index.html">Terms of service</a></li>
<li><a href="/terms#DAC7B2>DAC7 reporting</a></li>
<li><a href="/privacy#gdpr">GDPR rights</a></li>
<li><a href="/security#responsible">Responsible disclosure</a></li>
</ul>
</div>
</div>
</div>
<div style="border-bottom:1px solid rgba(255,255,255,.07)">
<div class="footer-bottom" style="padding-top:16px;padding-bottom:16px">
<div class="footer-lang-row">
<span class="fl-lbl"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10z"/></svg></span>
<a href="https://www.quixzoom.com/" class="flang active">EN</a>
<a href="/markets/se/" class="flang">SV</a>
<a href="/markets/nl/" class="flang">NL</a>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">DE</span>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">FR</span>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">IT</span>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">ES</span>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">FI</span>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">DK</span>
</div>
</div>
</div>
<div class="footer-bottom">
<p class="footer-copy">&#169; 2026 quiXzoom &#183; All rights reserved</p>
<div class="footer-legal-links">
<a href="privacy/index.html">Privacy</a>
<a href="terms/index.html">Terms</a>
<a href="/security">Security</a>
<a href="support.html">Support</a>
</div>
</div>
</footer>
</body>
</html>