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
261 lines
14 KiB
HTML
261 lines
14 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 Modules — Enterprise APIs | AAMOS</title>
|
||
<meta name="description" content="Production-grade enterprise modules from AAMOS — Incident Management and AI Image Deviation Engine. Battle-tested at scale. Available as REST APIs.">
|
||
<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 {
|
||
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); }
|
||
.nav-logo span { color: var(--blue); }
|
||
.nav-back { font-size: 14px; color: var(--gray-600); }
|
||
.btn-nav { background: var(--navy); color: var(--white); padding: 8px 16px; border-radius: 8px; font-weight: 600; font-size: 14px; }
|
||
.hero {
|
||
background: linear-gradient(135deg, #0d1f3c 0%, #1a3a60 100%);
|
||
color: var(--white); padding: 72px 24px 64px; 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: 20px;
|
||
}
|
||
.hero h1 { font-size: clamp(28px, 5vw, 46px); font-weight: 700; letter-spacing: -1px; line-height: 1.1; margin-bottom: 16px; }
|
||
.hero p { font-size: 17px; color: rgba(255,255,255,0.75); max-width: 540px; margin: 0 auto 32px; }
|
||
.origin-strip {
|
||
display: inline-flex; align-items: center; gap: 10px;
|
||
background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.12);
|
||
border-radius: 10px; padding: 12px 20px; margin-top: 28px;
|
||
font-size: 13px; color: rgba(255,255,255,0.65); max-width: 480px;
|
||
}
|
||
.origin-dot { width: 8px; height: 8px; border-radius: 50%; background: #4ade80; flex-shrink: 0; }
|
||
.btn-primary { background: var(--blue); color: var(--white); padding: 14px 28px; border-radius: 10px; font-size: 15px; font-weight: 600; display: inline-block; transition: background 0.15s; }
|
||
.btn-primary:hover { background: var(--blue-light); }
|
||
.content { max-width: 860px; margin: 0 auto; padding: 64px 24px; }
|
||
.block { margin-bottom: 60px; }
|
||
.block-label { font-size: 12px; font-weight: 700; color: var(--blue); letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 12px; }
|
||
.block h2 { font-size: clamp(22px, 3.5vw, 30px); font-weight: 700; letter-spacing: -0.5px; color: var(--navy); margin-bottom: 24px; }
|
||
.module-cards { display: grid; gap: 20px; }
|
||
.module-card {
|
||
border: 1px solid var(--gray-200); border-radius: 16px; padding: 28px 24px;
|
||
background: var(--white);
|
||
}
|
||
.module-header { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
|
||
.module-icon {
|
||
width: 44px; height: 44px; border-radius: 12px; flex-shrink: 0;
|
||
background: linear-gradient(135deg, var(--blue) 0%, #4f46e5 100%);
|
||
display: flex; align-items: center; justify-content: center;
|
||
}
|
||
.module-icon svg { width: 22px; height: 22px; fill: none; stroke: white; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
|
||
.module-name { font-size: 18px; font-weight: 700; color: var(--navy); }
|
||
.module-tag { font-size: 11px; font-weight: 600; color: var(--blue); background: rgba(99,91,255,0.08); border-radius: 4px; padding: 2px 8px; }
|
||
.module-desc { font-size: 15px; color: var(--gray-600); margin-bottom: 20px; }
|
||
.module-features { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
|
||
.module-features li { font-size: 14px; color: var(--gray-600); display: flex; align-items: center; gap: 8px; }
|
||
.module-features li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--blue); flex-shrink: 0; }
|
||
.code-block {
|
||
background: var(--navy); border-radius: 14px; padding: 24px;
|
||
font-family: 'SF Mono', 'Fira Code', monospace; font-size: 13px;
|
||
line-height: 1.75; color: rgba(255,255,255,0.85); overflow-x: auto;
|
||
margin-top: 20px;
|
||
}
|
||
.code-block .kw { color: #a5b4fc; }
|
||
.code-block .str { color: #86efac; }
|
||
.code-block .cm { color: rgba(255,255,255,0.4); }
|
||
.code-block .num { color: #fcd34d; }
|
||
.pricing-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
|
||
.price-card { border: 1px solid var(--gray-200); border-radius: 16px; padding: 28px 24px; display: flex; flex-direction: column; }
|
||
.price-card.featured { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(99,91,255,0.1); }
|
||
.price-tier { font-size: 13px; font-weight: 700; color: var(--blue); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px; }
|
||
.price-amount { font-size: 32px; font-weight: 700; color: var(--navy); letter-spacing: -1px; }
|
||
.price-amount span { font-size: 15px; font-weight: 500; color: var(--gray-400); }
|
||
.price-desc { font-size: 13px; color: var(--gray-400); margin-top: 4px; margin-bottom: 20px; }
|
||
.price-features { list-style: none; display: flex; flex-direction: column; gap: 10px; flex: 1; margin-bottom: 24px; }
|
||
.price-features li { font-size: 14px; color: var(--gray-600); display: flex; align-items: center; gap: 8px; }
|
||
.price-features li::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--blue); flex-shrink: 0; }
|
||
.btn-outline { border: 1px solid var(--gray-200); border-radius: 8px; padding: 10px 16px; font-size: 14px; font-weight: 600; color: var(--navy); text-align: center; display: block; transition: border-color 0.15s; }
|
||
.btn-outline:hover { border-color: var(--blue); }
|
||
.btn-filled { background: var(--blue); border-radius: 8px; padding: 10px 16px; font-size: 14px; font-weight: 600; color: white; text-align: center; display: block; }
|
||
.cta-bottom { background: var(--navy); color: var(--white); padding: 64px 24px; text-align: center; }
|
||
.cta-bottom h2 { font-size: clamp(22px, 4vw, 32px); font-weight: 700; letter-spacing: -0.5px; margin-bottom: 14px; }
|
||
.cta-bottom p { color: rgba(255,255,255,0.7); font-size: 16px; margin-bottom: 28px; max-width: 440px; margin-left: auto; margin-right: auto; }
|
||
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); }
|
||
.footer-links { display: flex; gap: 20px; }
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<nav>
|
||
<a href="/" class="nav-logo">A<span>AMOS</span></a>
|
||
<a href="/" class="nav-back">← All products</a>
|
||
<a href="#" class="btn-nav">Get API key</a>
|
||
</nav>
|
||
<section class="hero">
|
||
<div class="hero-badge">Enterprise</div>
|
||
<h1>AAMOS Modules</h1>
|
||
<p>Enterprise-grade modules from our own production stack. Battle-tested across 300+ microservices. Available as clean REST APIs.</p>
|
||
<a href="#" class="btn-primary">Get API key — free tier included</a>
|
||
<div>
|
||
<div class="origin-strip">
|
||
<div class="origin-dot"></div>
|
||
These modules run Landvex's own operations. You're buying the same infrastructure we run on.
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<div class="content">
|
||
<div class="block">
|
||
<div class="block-label">Available modules</div>
|
||
<h2>Two modules. Production-ready today.</h2>
|
||
<div class="module-cards">
|
||
|
||
<div class="module-card">
|
||
<div class="module-header">
|
||
<div class="module-icon">
|
||
<svg viewBox="0 0 24 24"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
|
||
</div>
|
||
<div>
|
||
<div class="module-tag">Incident Management</div>
|
||
<div class="module-name">Incident API</div>
|
||
</div>
|
||
</div>
|
||
<p class="module-desc">Structured incident lifecycle management — from detection to resolution. Full API with webhook events, priority queuing, assignment, and audit trail.</p>
|
||
<ul class="module-features">
|
||
<li>Create and track incidents</li>
|
||
<li>Priority levels + SLA timers</li>
|
||
<li>Assignment and ownership</li>
|
||
<li>Status transitions + webhooks</li>
|
||
<li>Comment threads</li>
|
||
<li>Full audit log</li>
|
||
<li>Integrates with any ticketing system</li>
|
||
<li>REST + webhook delivery</li>
|
||
</ul>
|
||
<div class="code-block">
|
||
<span class="cm"># Create an incident</span><br>
|
||
<span class="kw">curl</span> -X POST https://api.aamos.ai/v1/incident/incidents \<br>
|
||
-H <span class="str">"Authorization: Bearer ***"</span> \<br>
|
||
-d '{<br>
|
||
<span class="str">"title"</span>: <span class="str">"Water leak detected — Block 4B"</span>,<br>
|
||
<span class="str">"priority"</span>: <span class="str">"high"</span>,<br>
|
||
<span class="str">"source"</span>: <span class="str">"vims-api"</span>,<br>
|
||
<span class="str">"assignee_group"</span>: <span class="str">"maintenance-east"</span><br>
|
||
}'<br><br>
|
||
{ <span class="str">"incident_id"</span>: <span class="str">"inc_7f3a9b"</span>, <span class="str">"status"</span>: <span class="str">"open"</span>, <span class="str">"sla_deadline"</span>: <span class="str">"..."</span> }
|
||
</div>
|
||
</div>
|
||
|
||
<div class="module-card">
|
||
<div class="module-header">
|
||
<div class="module-icon">
|
||
<svg viewBox="0 0 24 24"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9"/></svg>
|
||
</div>
|
||
<div>
|
||
<div class="module-tag">Vision AI</div>
|
||
<div class="module-name">AI Image Deviation Engine</div>
|
||
</div>
|
||
</div>
|
||
<p class="module-desc">Submit any image against a stored baseline — get back a structured deviation report. Pixel-level and semantic analysis. Designed for quality control, inspection workflows, and asset monitoring.</p>
|
||
<ul class="module-features">
|
||
<li>Baseline storage per asset ID</li>
|
||
<li>Deviation score (0–1)</li>
|
||
<li>Semantic change classification</li>
|
||
<li>Region-of-interest masks</li>
|
||
<li>Batch processing</li>
|
||
<li>Confidence thresholds</li>
|
||
<li>Works on any image type</li>
|
||
<li>Integrates with VIMS API</li>
|
||
</ul>
|
||
<div class="code-block">
|
||
<span class="cm"># Compare image to stored baseline</span><br>
|
||
<span class="kw">curl</span> -X POST https://api.aamos.ai/v1/deviation/compare \<br>
|
||
-H <span class="str">"Authorization: Bearer ***"</span> \<br>
|
||
-F <span class="str">"image=@current.jpg"</span> \<br>
|
||
-F <span class="str">"asset_id=warehouse-roof-7"</span><br><br>
|
||
{<br>
|
||
<span class="str">"asset_id"</span>: <span class="str">"warehouse-roof-7"</span>,<br>
|
||
<span class="str">"deviation_score"</span>: <span class="num">0.63</span>,<br>
|
||
<span class="str">"change_type"</span>: <span class="str">"structural"</span>,<br>
|
||
<span class="str">"regions"</span>: [{ <span class="str">"label"</span>: <span class="str">"crack"</span>, <span class="str">"area_pct"</span>: <span class="num">4.2</span> }],<br>
|
||
<span class="str">"recommend_action"</span>: <span class="str">"schedule_inspection"</span><br>
|
||
}
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="block">
|
||
<div class="block-label">Pricing</div>
|
||
<h2>One plan. Both modules included.</h2>
|
||
<div class="pricing-grid">
|
||
<div class="price-card">
|
||
<div class="price-tier">Starter</div>
|
||
<div class="price-amount">$199 <span>/mo</span></div>
|
||
<div class="price-desc">Both modules included</div>
|
||
<ul class="price-features">
|
||
<li>500 incidents / month</li>
|
||
<li>1,000 deviation analyses / month</li>
|
||
<li>Webhook events</li>
|
||
<li>Email support</li>
|
||
</ul>
|
||
<a href="#" class="btn-outline">Get started</a>
|
||
</div>
|
||
<div class="price-card featured">
|
||
<div class="price-tier">Pro</div>
|
||
<div class="price-amount">$799 <span>/mo</span></div>
|
||
<div class="price-desc">High volume + SLA</div>
|
||
<ul class="price-features">
|
||
<li>Unlimited incidents</li>
|
||
<li>50,000 deviation analyses / month</li>
|
||
<li>Custom asset models</li>
|
||
<li>Priority support</li>
|
||
<li>99.9% SLA</li>
|
||
<li>Audit export</li>
|
||
</ul>
|
||
<a href="#" class="btn-filled">Get started</a>
|
||
</div>
|
||
<div class="price-card">
|
||
<div class="price-tier">Enterprise</div>
|
||
<div class="price-amount">Custom</div>
|
||
<div class="price-desc">Volume + dedicated infra</div>
|
||
<ul class="price-features">
|
||
<li>Unlimited everything</li>
|
||
<li>On-premise option</li>
|
||
<li>Custom model training</li>
|
||
<li>SLA to 99.99%</li>
|
||
<li>Dedicated account manager</li>
|
||
</ul>
|
||
<a href="mailto:sales@aamos.ai" class="btn-outline">Contact sales</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<section class="cta-bottom">
|
||
<h2>Ready to integrate enterprise-grade modules?</h2>
|
||
<p>Start with Starter. We're running these in production — so you don't have to prove they work.</p>
|
||
<a href="#" class="btn-primary">Get API key</a>
|
||
</section>
|
||
<footer>
|
||
<span>© 2026 AAMOS / Landvex AB</span>
|
||
<div class="footer-links"><a href="#">Privacy</a><a href="#">Terms</a><a href="/">Home</a></div>
|
||
</footer>
|
||
</body>
|
||
</html>
|