58ca4e68db
- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics) - Rust analytics service with parallel report generation - C runtime with POSIX shared memory IPC - PostgreSQL schema with 30+ tables, full migrations - Redis cache, sessions, pub/sub - Kafka event streaming with Zookeeper - WebSocket hub for real-time updates - Automation engine with cron jobs, workflows, event triggers - JWT authentication, multi-tenant from start - Docker Compose with all services - Nginx reverse proxy with rate limiting - Integration tests passing - Feature gap analysis against Fortnox/Odoo/Visma Refs: BOC-001
368 lines
13 KiB
HTML
368 lines
13 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>AAMOS — Infrastructure Intelligence APIs</title>
|
|
<meta name="description" content="API-first infrastructure intelligence. Visual monitoring, real-world alerts, identity verification, and enterprise modules — all developer-ready.">
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
<style>
|
|
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
:root {
|
|
--navy: #0A2540;
|
|
--blue: #635BFF;
|
|
--blue-light: #7B74FF;
|
|
--gray-50: #F8FAFC;
|
|
--gray-100: #F1F5F9;
|
|
--gray-200: #E2E8F0;
|
|
--gray-400: #94A3B8;
|
|
--gray-600: #475569;
|
|
--gray-800: #1E293B;
|
|
--white: #FFFFFF;
|
|
--font: 'Inter', system-ui, -apple-system, sans-serif;
|
|
}
|
|
body { font-family: var(--font); background: var(--white); color: var(--gray-800); line-height: 1.6; }
|
|
a { color: inherit; text-decoration: none; }
|
|
|
|
/* NAV */
|
|
nav {
|
|
position: sticky; top: 0; z-index: 100;
|
|
background: rgba(255,255,255,0.95);
|
|
backdrop-filter: blur(8px);
|
|
border-bottom: 1px solid var(--gray-200);
|
|
padding: 0 24px;
|
|
height: 60px;
|
|
display: flex; align-items: center; justify-content: space-between;
|
|
}
|
|
.nav-logo { font-size: 18px; font-weight: 700; color: var(--navy); letter-spacing: -0.5px; }
|
|
.nav-logo span { color: var(--blue); }
|
|
.nav-links { display: flex; align-items: center; gap: 8px; }
|
|
.nav-links a { font-size: 14px; font-weight: 500; color: var(--gray-600); padding: 8px 12px; border-radius: 8px; transition: background 0.15s; }
|
|
.nav-links a:hover { background: var(--gray-100); color: var(--gray-800); }
|
|
.btn-nav {
|
|
background: var(--navy); color: var(--white) !important;
|
|
padding: 8px 16px !important; border-radius: 8px; font-weight: 600;
|
|
font-size: 14px; transition: background 0.15s;
|
|
}
|
|
.btn-nav:hover { background: var(--blue) !important; }
|
|
@media(max-width:600px) { .nav-links a:not(.btn-nav) { display: none; } }
|
|
|
|
/* HERO */
|
|
.hero {
|
|
background: linear-gradient(135deg, var(--navy) 0%, #1a3a60 100%);
|
|
color: var(--white);
|
|
padding: 80px 24px 72px;
|
|
text-align: center;
|
|
}
|
|
.hero-badge {
|
|
display: inline-block;
|
|
background: rgba(99,91,255,0.25);
|
|
color: #a5b4fc;
|
|
border: 1px solid rgba(99,91,255,0.4);
|
|
border-radius: 100px;
|
|
padding: 4px 14px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
letter-spacing: 0.05em;
|
|
text-transform: uppercase;
|
|
margin-bottom: 24px;
|
|
}
|
|
.hero h1 {
|
|
font-size: clamp(32px, 6vw, 52px);
|
|
font-weight: 700;
|
|
letter-spacing: -1.5px;
|
|
line-height: 1.1;
|
|
margin-bottom: 20px;
|
|
max-width: 700px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
.hero p {
|
|
font-size: clamp(16px, 2.5vw, 18px);
|
|
color: rgba(255,255,255,0.75);
|
|
max-width: 520px;
|
|
margin: 0 auto 36px;
|
|
}
|
|
.hero-ctas { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
|
|
.btn-primary {
|
|
background: var(--blue); color: var(--white);
|
|
padding: 14px 28px; border-radius: 10px;
|
|
font-size: 15px; font-weight: 600;
|
|
transition: background 0.15s, transform 0.1s;
|
|
display: inline-block;
|
|
}
|
|
.btn-primary:hover { background: var(--blue-light); transform: translateY(-1px); }
|
|
.btn-secondary {
|
|
background: rgba(255,255,255,0.1); color: var(--white);
|
|
border: 1px solid rgba(255,255,255,0.25);
|
|
padding: 14px 28px; border-radius: 10px;
|
|
font-size: 15px; font-weight: 600;
|
|
transition: background 0.15s;
|
|
display: inline-block;
|
|
}
|
|
.btn-secondary:hover { background: rgba(255,255,255,0.18); }
|
|
|
|
/* CODE PEEK */
|
|
.code-peek {
|
|
background: rgba(0,0,0,0.35);
|
|
border: 1px solid rgba(255,255,255,0.1);
|
|
border-radius: 12px;
|
|
padding: 20px 24px;
|
|
max-width: 540px;
|
|
margin: 48px auto 0;
|
|
text-align: left;
|
|
font-family: 'SF Mono', 'Fira Code', monospace;
|
|
font-size: 13px;
|
|
line-height: 1.7;
|
|
color: rgba(255,255,255,0.85);
|
|
overflow-x: auto;
|
|
}
|
|
.code-peek .kw { color: #a5b4fc; }
|
|
.code-peek .str { color: #86efac; }
|
|
.code-peek .cm { color: rgba(255,255,255,0.4); }
|
|
|
|
/* TRUST */
|
|
.trust {
|
|
background: var(--gray-50);
|
|
border-bottom: 1px solid var(--gray-200);
|
|
padding: 16px 24px;
|
|
text-align: center;
|
|
font-size: 13px;
|
|
color: var(--gray-400);
|
|
font-weight: 500;
|
|
letter-spacing: 0.02em;
|
|
}
|
|
|
|
/* PRODUCTS */
|
|
.products { padding: 72px 24px; max-width: 1100px; margin: 0 auto; }
|
|
.section-label {
|
|
font-size: 12px; font-weight: 700; color: var(--blue);
|
|
letter-spacing: 0.1em; text-transform: uppercase;
|
|
margin-bottom: 12px;
|
|
}
|
|
.section-title {
|
|
font-size: clamp(24px, 4vw, 36px);
|
|
font-weight: 700; letter-spacing: -0.8px;
|
|
color: var(--navy); margin-bottom: 8px;
|
|
}
|
|
.section-sub { font-size: 16px; color: var(--gray-600); margin-bottom: 48px; max-width: 480px; }
|
|
.product-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
|
gap: 20px;
|
|
}
|
|
.product-card {
|
|
background: var(--white);
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 16px;
|
|
padding: 28px 24px;
|
|
transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s;
|
|
display: flex; flex-direction: column;
|
|
}
|
|
.product-card:hover {
|
|
box-shadow: 0 8px 32px rgba(10,37,64,0.1);
|
|
transform: translateY(-2px);
|
|
border-color: var(--blue);
|
|
}
|
|
.product-icon {
|
|
width: 44px; height: 44px;
|
|
background: linear-gradient(135deg, var(--blue) 0%, #4f46e5 100%);
|
|
border-radius: 12px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
margin-bottom: 20px;
|
|
}
|
|
.product-icon svg { width: 22px; height: 22px; fill: none; stroke: white; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
|
|
.product-tag {
|
|
font-size: 11px; font-weight: 700;
|
|
color: var(--blue);
|
|
background: rgba(99,91,255,0.08);
|
|
border-radius: 4px;
|
|
padding: 2px 8px;
|
|
display: inline-block;
|
|
margin-bottom: 8px;
|
|
letter-spacing: 0.04em;
|
|
text-transform: uppercase;
|
|
}
|
|
.product-card h3 { font-size: 18px; font-weight: 700; color: var(--navy); margin-bottom: 8px; }
|
|
.product-card p { font-size: 14px; color: var(--gray-600); flex: 1; margin-bottom: 20px; }
|
|
.card-link {
|
|
font-size: 14px; font-weight: 600; color: var(--blue);
|
|
display: flex; align-items: center; gap: 4px;
|
|
transition: gap 0.15s;
|
|
}
|
|
.product-card:hover .card-link { gap: 8px; }
|
|
|
|
/* HOW IT WORKS */
|
|
.how { background: var(--gray-50); padding: 72px 24px; }
|
|
.how-inner { max-width: 900px; margin: 0 auto; }
|
|
.steps { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 24px; margin-top: 48px; }
|
|
.step { display: flex; flex-direction: column; }
|
|
.step-num {
|
|
font-size: 13px; font-weight: 700; color: var(--blue);
|
|
margin-bottom: 12px;
|
|
background: rgba(99,91,255,0.1);
|
|
width: 28px; height: 28px; border-radius: 8px;
|
|
display: flex; align-items: center; justify-content: center;
|
|
}
|
|
.step h4 { font-size: 15px; font-weight: 700; color: var(--navy); margin-bottom: 6px; }
|
|
.step p { font-size: 14px; color: var(--gray-600); }
|
|
|
|
/* CTA BOTTOM */
|
|
.cta-bottom {
|
|
background: var(--navy);
|
|
color: var(--white);
|
|
padding: 72px 24px;
|
|
text-align: center;
|
|
}
|
|
.cta-bottom h2 { font-size: clamp(24px, 4vw, 36px); font-weight: 700; letter-spacing: -0.8px; margin-bottom: 16px; }
|
|
.cta-bottom p { color: rgba(255,255,255,0.7); font-size: 16px; margin-bottom: 32px; max-width: 420px; margin-left: auto; margin-right: auto; }
|
|
.cta-bottom .btn-primary { font-size: 16px; padding: 16px 32px; }
|
|
|
|
/* FOOTER */
|
|
footer {
|
|
border-top: 1px solid var(--gray-200);
|
|
padding: 24px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 12px;
|
|
font-size: 13px;
|
|
color: var(--gray-400);
|
|
}
|
|
footer a { color: var(--gray-400); transition: color 0.15s; }
|
|
footer a:hover { color: var(--gray-800); }
|
|
.footer-links { display: flex; gap: 20px; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<nav>
|
|
<a href="/" class="nav-logo">A<span>AMOS</span></a>
|
|
<div class="nav-links">
|
|
<a href="#products">Products</a>
|
|
<a href="#">Docs</a>
|
|
<a href="#" class="btn-nav">Get API key</a>
|
|
</div>
|
|
</nav>
|
|
|
|
<section class="hero">
|
|
<div class="hero-badge">API Platform — by Landvex</div>
|
|
<h1>We built it for ourselves.<br>Now you can use it too.</h1>
|
|
<p>300+ microservices powering Landvex's infrastructure operations. The best ones — available as clean REST APIs for your stack.</p>
|
|
<div class="hero-ctas">
|
|
<a href="#" class="btn-primary">Get API key</a>
|
|
<a href="#" class="btn-secondary">View docs</a>
|
|
</div>
|
|
<div class="code-peek">
|
|
<span class="cm"># Analyze an image for infrastructure changes</span><br>
|
|
<span class="kw">curl</span> -X POST https://api.aamos.ai/v1/vims/analyze \<br>
|
|
-H <span class="str">"Authorization: Bearer <YOUR_KEY>"</span> \<br>
|
|
-F <span class="str">"image=@inspection.jpg"</span> \<br>
|
|
-F <span class="str">"object_id=bridge-e4-north"</span>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="trust">
|
|
Battle-tested in production at Landvex · Used by infrastructure operators, municipalities, and insurers across Europe
|
|
</div>
|
|
|
|
<section class="products" id="products">
|
|
<div class="section-label">Products</div>
|
|
<h2 class="section-title">Four APIs. One platform.</h2>
|
|
<p class="section-sub">Pick what you need. Integrate in hours, not months.</p>
|
|
|
|
<div class="product-grid">
|
|
|
|
<a href="/vims/" class="product-card">
|
|
<div class="product-icon">
|
|
<svg viewBox="0 0 24 24"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
|
|
</div>
|
|
<span class="product-tag">Vision AI</span>
|
|
<h3>VIMS API</h3>
|
|
<p>Visual infrastructure monitoring. Submit images, get AI-powered change detection, baselines, and risk scores.</p>
|
|
<span class="card-link">Learn more →</span>
|
|
</a>
|
|
|
|
<a href="/reality-alerts/" class="product-card">
|
|
<div class="product-icon">
|
|
<svg viewBox="0 0 24 24"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/></svg>
|
|
</div>
|
|
<span class="product-tag">Real-world data</span>
|
|
<h3>Reality Alerts API</h3>
|
|
<p>AI-verified field observations from Zoomers on the ground, automatically routed to the right recipient.</p>
|
|
<span class="card-link">Learn more →</span>
|
|
</a>
|
|
|
|
<a href="/kyz/" class="product-card">
|
|
<div class="product-icon">
|
|
<svg viewBox="0 0 24 24"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
|
|
</div>
|
|
<span class="product-tag">Identity</span>
|
|
<h3>KYZ</h3>
|
|
<p>Know Your Zoomer. ID document scanning, selfie liveness detection, and verification — built for the gig economy.</p>
|
|
<span class="card-link">Learn more →</span>
|
|
</a>
|
|
|
|
<a href="/modules/" class="product-card">
|
|
<div class="product-icon">
|
|
<svg viewBox="0 0 24 24"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
|
|
</div>
|
|
<span class="product-tag">Enterprise</span>
|
|
<h3>AAMOS Modules</h3>
|
|
<p>Production-grade incident management and AI image deviation engine — drop into your stack via REST API.</p>
|
|
<span class="card-link">Learn more →</span>
|
|
</a>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
<section class="how">
|
|
<div class="how-inner">
|
|
<div class="section-label">How it works</div>
|
|
<h2 class="section-title">Integrate in minutes.</h2>
|
|
<div class="steps">
|
|
<div class="step">
|
|
<div class="step-num">1</div>
|
|
<h4>Get your API key</h4>
|
|
<p>Sign up, generate a key, and you're ready. No sales call required.</p>
|
|
</div>
|
|
<div class="step">
|
|
<div class="step-num">2</div>
|
|
<h4>Call the API</h4>
|
|
<p>Standard REST with JSON responses. SDKs for Node, Python, and Go coming soon.</p>
|
|
</div>
|
|
<div class="step">
|
|
<div class="step-num">3</div>
|
|
<h4>Get intelligence</h4>
|
|
<p>Detections, alerts, verifications, and deviation scores — structured and ready for your system.</p>
|
|
</div>
|
|
<div class="step">
|
|
<div class="step-num">4</div>
|
|
<h4>Scale confidently</h4>
|
|
<p>Start on Free, upgrade as you grow. Enterprise plans for volume and SLA requirements.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="cta-bottom">
|
|
<h2>Ready to build?</h2>
|
|
<p>Get your API key and start integrating today. Free tier included.</p>
|
|
<a href="#" class="btn-primary">Get API key — it's free</a>
|
|
</section>
|
|
|
|
<footer>
|
|
<span>© 2026 AAMOS / Landvex AB</span>
|
|
<div class="footer-links">
|
|
<a href="#">Privacy</a>
|
|
<a href="#">Terms</a>
|
|
<a href="#">Status</a>
|
|
<a href="#">Contact</a>
|
|
</div>
|
|
</footer>
|
|
|
|
</body>
|
|
</html>
|