docs: add quixzoom-auth-core product to AAMOS
- Product documentation in docs/products/ - Updated MEMORY.md with product info - quiXzoom Auth Core as AAMOS Identity product
This commit is contained in:
@@ -4,363 +4,313 @@
|
||||
<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.">
|
||||
|
||||
<meta name="description" content="quiXzoom resources: documentation, guides, API references, and more.">
|
||||
<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}}
|
||||
:root{--bg-white:#FFFFFF;--bg-off:#F7F7F5;--blue:#0066FF;--text-dark:#1a1a1a;--text-body:#3a3a3a;--text-muted:#6B6B6B;--radius-card:16px;}
|
||||
*{box-sizing:border-box;margin:0;padding:0}
|
||||
body{font-family:-apple-system,BlinkMacSystemFont,'Inter',sans-serif;background:var(--bg-white);color:var(--text-body);line-height:1.65}
|
||||
.container{max-width:900px;margin:0 auto;padding:48px 24px}
|
||||
h1{font-size:2.5rem;font-weight:900;color:var(--text-dark);margin-bottom:16px}
|
||||
h2{font-size:1.3rem;font-weight:800;color:var(--text-dark);margin:32px 0 16px}
|
||||
p{margin-bottom:16px;color:var(--text-body)}
|
||||
.back{margin-bottom:24px;display:inline-block;color:var(--blue);text-decoration:none;font-weight:600}
|
||||
.back:hover{text-decoration:underline}
|
||||
.resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px}
|
||||
.resource-card{background:var(--bg-off);border-radius:var(--radius-card);padding:24px;text-decoration:none;color:inherit;display:block;transition:transform .15s,box-shadow .15s}
|
||||
.resource-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.1)}
|
||||
.resource-icon{font-size:2rem;margin-bottom:12px}
|
||||
.resource-title{font-size:1.1rem;font-weight:700;color:var(--text-dark);margin-bottom:8px}
|
||||
.resource-desc{font-size:.9rem;color:var(--text-muted)}
|
||||
</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>
|
||||
<script type="module" src="https://auth.quixzoom.com/site-auth-snippet.js"></script>
|
||||
</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 →</a>
|
||||
<a href="/" class="back">← Back to quiXzoom</a>
|
||||
<h1>Resources</h1>
|
||||
<p>Documentation, guides, and references for the quiXzoom platform.</p>
|
||||
|
||||
<h2>For Zoomers</h2>
|
||||
<div class="resource-grid">
|
||||
<a href="/glossary" class="resource-card">
|
||||
<div class="resource-icon">📖</div>
|
||||
<div class="resource-title">Glossary</div>
|
||||
<div class="resource-desc">Terms and definitions used on the quiXzoom platform.</div>
|
||||
</a>
|
||||
<a href="/academy/" class="resource-card">
|
||||
<div class="resource-icon">🎓</div>
|
||||
<div class="resource-title">Zoomer Academy</div>
|
||||
<div class="resource-desc">Training materials and best practices for field photography.</div>
|
||||
</a>
|
||||
<a href="/support" class="resource-card">
|
||||
<div class="resource-icon">❓</div>
|
||||
<div class="resource-title">Support Center</div>
|
||||
<div class="resource-desc">FAQs, troubleshooting, and help articles.</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h2>For Developers</h2>
|
||||
<div class="resource-grid">
|
||||
<a href="/developer/openapi.json" class="resource-card">
|
||||
<div class="resource-icon">🔌</div>
|
||||
<div class="resource-title">API Reference</div>
|
||||
<div class="resource-desc">OpenAPI specification for the quiXzoom platform.</div>
|
||||
</a>
|
||||
<a href="/changelog" class="resource-card">
|
||||
<div class="resource-icon">📝</div>
|
||||
<div class="resource-title">Changelog</div>
|
||||
<div class="resource-desc">Latest updates and platform improvements.</div>
|
||||
</a>
|
||||
<a href="/status" class="resource-card">
|
||||
<div class="resource-icon">📊</div>
|
||||
<div class="resource-title">System Status</div>
|
||||
<div class="resource-desc">Platform uptime and service health.</div>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h2>For Organisations</h2>
|
||||
<div class="resource-grid">
|
||||
<a href="/for-organisations/" class="resource-card">
|
||||
<div class="resource-icon">🏢</div>
|
||||
<div class="resource-title">Enterprise Guide</div>
|
||||
<div class="resource-desc">How to deploy photo missions at scale.</div>
|
||||
</a>
|
||||
<a href="/pricing/" class="resource-card">
|
||||
<div class="resource-icon">💰</div>
|
||||
<div class="resource-title">Pricing</div>
|
||||
<div class="resource-desc">Mission pricing, lead packages, and enterprise plans.</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<!-- quiXzoom Mina Sidor - Universal Header Component -->
|
||||
<!-- Injicera detta i <head> på alla quiXzoom-sajter -->
|
||||
|
||||
<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>
|
||||
<style>
|
||||
.qz-auth-bar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 48px;
|
||||
background: #0A0A0A;
|
||||
border-bottom: 1px solid rgba(255,255,255,0.1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 20px;
|
||||
z-index: 9999;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', Roboto, sans-serif;
|
||||
}
|
||||
.qz-auth-bar .qz-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
.qz-auth-bar .qz-logo span {
|
||||
color: #007AFF;
|
||||
}
|
||||
.qz-auth-bar .qz-nav {
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
align-items: center;
|
||||
}
|
||||
.qz-auth-bar .qz-btn {
|
||||
padding: 8px 16px;
|
||||
border-radius: 8px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
.qz-auth-bar .qz-btn-primary {
|
||||
background: #007AFF;
|
||||
color: white;
|
||||
}
|
||||
.qz-auth-bar .qz-btn-primary:hover {
|
||||
background: #0056CC;
|
||||
}
|
||||
.qz-auth-bar .qz-btn-ghost {
|
||||
background: transparent;
|
||||
color: rgba(255,255,255,0.8);
|
||||
}
|
||||
.qz-auth-bar .qz-btn-ghost:hover {
|
||||
background: rgba(255,255,255,0.1);
|
||||
color: white;
|
||||
}
|
||||
.qz-auth-bar .qz-user {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: white;
|
||||
font-size: 14px;
|
||||
}
|
||||
.qz-auth-bar .qz-avatar {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: #007AFF;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
}
|
||||
.qz-auth-bar .qz-dropdown {
|
||||
position: relative;
|
||||
}
|
||||
.qz-auth-bar .qz-dropdown-menu {
|
||||
position: absolute;
|
||||
top: 40px;
|
||||
right: 0;
|
||||
background: #1C1C1E;
|
||||
border: 1px solid rgba(255,255,255,0.1);
|
||||
border-radius: 12px;
|
||||
padding: 8px;
|
||||
min-width: 200px;
|
||||
display: none;
|
||||
box-shadow: 0 8px 32px rgba(0,0,0,0.4);
|
||||
}
|
||||
.qz-auth-bar .qz-dropdown-menu.active {
|
||||
display: block;
|
||||
}
|
||||
.qz-auth-bar .qz-dropdown-item {
|
||||
padding: 10px 12px;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
font-size: 14px;
|
||||
transition: background 0.2s;
|
||||
}
|
||||
.qz-auth-bar .qz-dropdown-item:hover {
|
||||
background: rgba(255,255,255,0.1);
|
||||
}
|
||||
.qz-auth-bar .qz-dropdown-divider {
|
||||
height: 1px;
|
||||
background: rgba(255,255,255,0.1);
|
||||
margin: 8px 0;
|
||||
}
|
||||
.qz-auth-bar .qz-balance {
|
||||
background: rgba(0,122,255,0.15);
|
||||
color: #007AFF;
|
||||
padding: 4px 10px;
|
||||
border-radius: 6px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
}
|
||||
@media (max-width: 640px) {
|
||||
.qz-auth-bar .qz-nav .qz-btn-ghost:not(.qz-user) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="qz-auth-bar" class="qz-auth-bar">
|
||||
<a href="https://quixzoom.com" class="qz-logo">qui<span>X</span>zoom</a>
|
||||
<div class="qz-nav">
|
||||
<div id="qz-auth-guest">
|
||||
<a href="https://app.quixzoom.com/login" class="qz-btn qz-btn-ghost">Logga in</a>
|
||||
<a href="https://app.quixzoom.com/register" class="qz-btn qz-btn-primary">Bli Zoomer</a>
|
||||
</div>
|
||||
<div id="qz-auth-user" style="display:none;">
|
||||
<span class="qz-balance" id="qz-balance">$0.00</span>
|
||||
<div class="qz-dropdown">
|
||||
<button class="qz-btn qz-btn-ghost qz-user" onclick="qzToggleDropdown()">
|
||||
<div class="qz-avatar" id="qz-avatar">E</div>
|
||||
<span id="qz-user-name">Erik</span>
|
||||
<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M2.5 4.5L6 8L9.5 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
||||
</button>
|
||||
<div class="qz-dropdown-menu" id="qz-dropdown-menu">
|
||||
<a href="https://app.quixzoom.com/dashboard" class="qz-dropdown-item">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/></svg>
|
||||
Dashboard
|
||||
</a>
|
||||
<a href="https://app.quixzoom.com/wallet" class="qz-dropdown-item">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12V7H5a2 2 0 0 1 0-4h14v4"/><path d="M3 5v14a2 2 0 0 0 2 2h16v-5"/><path d="M18 12a2 2 0 0 0 0 4h4v-4h-4z"/></svg>
|
||||
Plånbok
|
||||
</a>
|
||||
<a href="https://app.quixzoom.com/missions" class="qz-dropdown-item">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/></svg>
|
||||
Mina uppdrag
|
||||
</a>
|
||||
<div class="qz-dropdown-divider"></div>
|
||||
<a href="https://app.quixzoom.com/settings" class="qz-dropdown-item">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.67 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.67 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.67a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>
|
||||
Inställningar
|
||||
</a>
|
||||
<a href="#" onclick="qzLogout(); return false;" class="qz-dropdown-item">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/></svg>
|
||||
Logga ut
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="resources-body">
|
||||
<div class="container">
|
||||
<script>
|
||||
(function() {
|
||||
const SSO_BASE = 'https://auth.quixzoom.com';
|
||||
const APP_BASE = 'https://app.quixzoom.com';
|
||||
|
||||
<div class="resource-group">
|
||||
<div class="group-label">Platform</div>
|
||||
<div class="resource-list">
|
||||
// Check auth status
|
||||
async function qzCheckAuth() {
|
||||
try {
|
||||
const res = await fetch(SSO_BASE + '/auth/check', {
|
||||
credentials: 'include',
|
||||
});
|
||||
if (res.ok) {
|
||||
const data = await res.json();
|
||||
if (data.authenticated) {
|
||||
document.getElementById('qz-auth-guest').style.display = 'none';
|
||||
document.getElementById('qz-auth-user').style.display = 'flex';
|
||||
document.getElementById('qz-user-name').textContent = data.user.name || data.user.email;
|
||||
document.getElementById('qz-avatar').textContent = (data.user.name || data.user.email)[0].toUpperCase();
|
||||
if (data.user.balance !== undefined) {
|
||||
document.getElementById('qz-balance').textContent = '$' + data.user.balance.toFixed(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
// Silent fail - show guest state
|
||||
}
|
||||
}
|
||||
|
||||
<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 →</span>
|
||||
</a>
|
||||
// Toggle dropdown
|
||||
window.qzToggleDropdown = function() {
|
||||
document.getElementById('qz-dropdown-menu').classList.toggle('active');
|
||||
};
|
||||
|
||||
<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 →</span>
|
||||
</a>
|
||||
// Close dropdown on outside click
|
||||
document.addEventListener('click', function(e) {
|
||||
if (!e.target.closest('.qz-dropdown')) {
|
||||
document.getElementById('qz-dropdown-menu').classList.remove('active');
|
||||
}
|
||||
});
|
||||
|
||||
</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 →</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 →</span>
|
||||
</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="resource-group">
|
||||
<div class="group-label">Trust & compliance</div>
|
||||
<div class="resource-list">
|
||||
|
||||
<a href="/security" class="resource-row">
|
||||
<div class="resource-info">
|
||||
<h3>Security & 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 →</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 →</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 & 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">© 2026 quiXzoom · 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>
|
||||
// Logout
|
||||
window.qzLogout = async function() {
|
||||
try {
|
||||
await fetch(SSO_BASE + '/auth/logout', {
|
||||
method: 'POST',
|
||||
credentials: 'include',
|
||||
});
|
||||
} catch (e) {}
|
||||
document.cookie = 'qz_access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=.quixzoom.com; path=/;';
|
||||
document.cookie = 'qz_refresh_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=.quixzoom.com; path=/;';
|
||||
window.location.reload();
|
||||
};
|
||||
|
||||
// Init
|
||||
qzCheckAuth();
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
Reference in New Issue
Block a user