Ports the single-file ЭкзоОтель page to the same architecture as the fitness
landing: Vite + React 19 + TypeScript + Tailwind v4 on the client, Express 5 for
the /api/leads/hotels endpoint, zod schema shared between the two.
The original page is kept in legacy/index.html as the visual reference. Its 15
inlined base64 images are extracted to files (the 1 MB HTML becomes ~318 KB of
JS plus assets loaded on demand), and its text is reproduced line for line —
verified with an innerText diff. Section heights stay within 0.6% at 375 and
1440 px; the drift comes from Inter actually loading, which the original asked
for but never served.
Three deliberate departures, documented in the README:
* eyebrow and lead in the CTA block were dark teal on navy (3.4:1); they now
match the other dark sections
* hero fact values overflowed their 80px column into the label below 430px
* "2025–2026г.." typo in the market source note
Leads reuse the fitness amoCRM integration: contact lookup by phone in every
spelling, deal in the first stage of pipeline 10980758, account fields matched
automatically with the rest written to a note. Rate limit, honeypot, and a
localStorage fallback so a lead survives the CRM being down. Vite runs on 5174
and the API on 3001 so both landings can run at once.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
49 lines
2.6 KiB
HTML
49 lines
2.6 KiB
HTML
<!doctype html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
<title>ЭкзоОтель — пространство восстановления для гостей | Экзо Групп</title>
|
|
<meta
|
|
name="description"
|
|
content="ЭкзоОтель — готовое пространство восстановления внутри отеля: 4 аппарата, формат с одним специалистом, форматы размещения, меню программ. Дополнительный сервис для выручки, LTV и привлечения гостей."
|
|
/>
|
|
<meta name="theme-color" content="#0A2540" />
|
|
<meta name="robots" content="index,follow" />
|
|
<link rel="canonical" href="%VITE_SITE_URL%" />
|
|
<link rel="icon" type="image/png" href="/favicon.png" />
|
|
<link rel="apple-touch-icon" href="/favicon.png" />
|
|
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:locale" content="ru_RU" />
|
|
<meta property="og:site_name" content="Экзо Групп" />
|
|
<meta property="og:title" content="ЭкзоОтель: пространство восстановления для гостей" />
|
|
<meta
|
|
property="og:description"
|
|
content="Готовое wellness-tech пространство для дополнительной выручки, роста ценности проживания, LTV и привлечения гостей."
|
|
/>
|
|
<meta property="og:url" content="%VITE_SITE_URL%" />
|
|
<meta property="og:image" content="%VITE_SITE_URL%/og-image.jpg" />
|
|
<meta property="og:image:width" content="1200" />
|
|
<meta property="og:image:height" content="630" />
|
|
<meta property="og:image:alt" content="Премиальное пространство ЭкзоОтель с оборудованием Экзо Групп" />
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Service",
|
|
"name": "ЭкзоОтель — пространство восстановления для гостей отеля",
|
|
"provider": { "@type": "Organization", "name": "Экзо Групп" },
|
|
"serviceType": "Проектирование и запуск кабинета восстановления в отеле",
|
|
"areaServed": "RU",
|
|
"url": "https://exodevices.ru/hotels"
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<script type="module" src="/src/main.tsx"></script>
|
|
</body>
|
|
</html>
|