Files
test/app/app.vue
2026-02-10 15:15:26 +07:00

461 lines
28 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div data-theme="silk" class="min-h-screen bg-mesh text-neutral">
<div class="relative">
<div
class="pointer-events-none absolute -top-24 left-1/2 h-72 w-[1100px] -translate-x-1/2 rounded-full bg-[radial-gradient(circle_at_center,rgba(67,56,118,0.25),transparent_70%)] blur-3xl"
></div>
<main class="relative px-6 pb-16 pt-10 md:px-12 lg:px-20">
<div class="grid gap-8 lg:grid-cols-[220px_1fr]">
<aside class="hidden lg:block">
<div class="sticky top-10 rounded-3xl border border-base-300 bg-base-100/90 p-5 shadow-soft">
<div class="text-xs uppercase tracking-[0.2em] text-neutral/50">Навигация</div>
<nav class="mt-4 space-y-2 text-sm">
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#context">Контекст</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#problem">Проблемы</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#core">Core-фича</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#flow">Как работает</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#value">Value Proposition</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#prototype">Прототип</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#monetization">Монетизация</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#metrics">Метрики</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#roadmap">Roadmap</a>
<a class="block rounded-2xl px-3 py-2 text-neutral/70 hover:bg-base-200" href="#final">Итог</a>
</nav>
</div>
</aside>
<div class="space-y-10">
<section id="context" class="slide">
<div class="slide-top">Контекст</div>
<div class="slide-head">
<h2 class="slide-title">Ремонт редкий и дорогой опыт</h2>
<p class="slide-preamble">
Большинство людей проходят ремонт 12 раза в жизни. Это эмоционально тяжелый процесс с
высокими ставками, где нет навыка управления и нет стандарта качества. Поэтому каждый
проект начинается заново: ожидания не совпадают, правила не зафиксированы, а неопределенность
быстро превращается в конфликт. Заказчик хочет контроля и понятных правил, исполнитель ясных
критериев и гарантии оплаты.
</p>
</div>
<div class="slide-main"></div>
</section>
<section id="problem" class="slide">
<div class="slide-top">Проблемы</div>
<div class="slide-head">
<h2 class="slide-title">Ключевые проблемы</h2>
<p class="slide-preamble">
Мы провели интервью с заказчиками и мастерами и увидели, что проблемы повторяются из проекта
в проект. На практике это всегда упирается в несколько узлов, которые ломают доверие и сроки.
Ниже три ключевых вывода.
</p>
</div>
<div class="slide-main">
<div class="grid gap-6 md:grid-cols-3 md:items-end">
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft md:translate-y-8">
<h3 class="font-display text-2xl">Ожидания и реальность расходятся</h3>
<p class="mt-3 text-sm text-neutral/70">
Нет общего понимания результата: стороны по-разному трактуют «готово» и «качественно».
</p>
<p class="mt-3 text-xs text-neutral/60">Заказчик: не уверен, что «сделано правильно». Исполнитель: не понимает, как это доказать.</p>
</div>
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft md:translate-y-14">
<h3 class="font-display text-2xl">Критерии не зафиксированы</h3>
<p class="mt-3 text-sm text-neutral/70">
Нет списка требований, допусков и контрольных точек спор легко уходит в эмоции.
</p>
<p class="mt-3 text-xs text-neutral/60">Заказчик: нет прозрачной проверки. Исполнитель: нет единого регламента.</p>
</div>
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft md:translate-y-4">
<h3 class="font-display text-2xl">Финансовый риск у обеих сторон</h3>
<p class="mt-3 text-sm text-neutral/70">
Платежи завязаны на доверии, а не на факте качества обе стороны боятся потерь.
</p>
<p class="mt-3 text-xs text-neutral/60">Заказчик: боится переплатить. Исполнитель: боится не получить деньги.</p>
</div>
</div>
</div>
</section>
<section id="core" class="slide">
<div class="slide-top">Core-фича</div>
<div class="slide-head">
<h2 class="slide-title">Ноу-хау: приемка как сервис</h2>
<p class="slide-preamble">
Проанализировав проблемы, мы видим ключевую боль именно в приемке. Когда заранее понятно,
что такое хорошо и что делать дальше в каждом исходе, исчезает источник конфликта. Это и есть
наша killer-feature: критерии фиксируются до старта, а оценка становится независимой.
</p>
</div>
<div class="slide-main">
<div class="rounded-3xl border border-base-300 bg-base-100/90 p-6">
<div class="text-xs font-semibold text-neutral/60">Пример регламентной приемки</div>
<div class="mt-4 grid grid-cols-[1.1fr_1.3fr_0.9fr_1fr] gap-3 text-sm">
<div class="rounded-2xl bg-base-200 px-4 py-3 font-semibold text-neutral/70">Работа</div>
<div class="rounded-2xl bg-base-200 px-4 py-3 font-semibold text-neutral/70">Измерено</div>
<div class="rounded-2xl bg-base-200 px-4 py-3 font-semibold text-neutral/70 text-center">Оценка</div>
<div class="rounded-2xl bg-base-200 px-4 py-3 font-semibold text-neutral/70">Решение</div>
<div class="rounded-2xl bg-white px-4 py-3">Укладка плитки</div>
<div class="rounded-2xl bg-white px-4 py-3">Отклонение 1 мм при норме 2 мм</div>
<div class="rounded-2xl bg-success/15 px-4 py-3 text-center text-success">Ок</div>
<div class="rounded-2xl bg-white px-4 py-3">Оплата 100%</div>
<div class="rounded-2xl bg-white px-4 py-3">Электронный уровень</div>
<div class="rounded-2xl bg-white px-4 py-3">Отклонение 2° при норме 1°</div>
<div class="rounded-2xl bg-warning/15 px-4 py-3 text-center text-warning">На грани</div>
<div class="rounded-2xl bg-white px-4 py-3">Удержать 5%</div>
<div class="rounded-2xl bg-white px-4 py-3">Швы</div>
<div class="rounded-2xl bg-white px-4 py-3">Разбег 2 мм при норме 1 мм</div>
<div class="rounded-2xl bg-error/15 px-4 py-3 text-center text-error">Не ок</div>
<div class="rounded-2xl bg-white px-4 py-3">Переделка участка</div>
</div>
</div>
</div>
</section>
<section id="flow" class="slide">
<div class="slide-top">Как работает</div>
<div class="slide-head">
<h2 class="slide-title">Простой сценарий в три шага</h2>
<p class="slide-preamble">
Мы переводим идею в простой процесс: три шага, которые последовательно ведут клиента от
неопределенности к прозрачной приемке и защищенной оплате для обеих сторон.
</p>
</div>
<div class="slide-main">
<div class="grid gap-6 md:grid-cols-3">
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft">
<div class="text-xs font-semibold text-neutral/60">Шаг 1</div>
<h3 class="mt-2 font-display text-2xl">Вход и расчет</h3>
<p class="mt-3 text-sm text-neutral/70">
Заказчик загружает объект, система сразу считает смету и формирует план.
</p>
</div>
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft">
<div class="text-xs font-semibold text-neutral/60">Шаг 2</div>
<h3 class="mt-2 font-display text-2xl">Регламент и работа</h3>
<p class="mt-3 text-sm text-neutral/70">
Этапы и критерии фиксируются, исполнитель ведет работы по чек-листам.
</p>
</div>
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft">
<div class="text-xs font-semibold text-neutral/60">Шаг 3</div>
<h3 class="mt-2 font-display text-2xl">Независимая проверка</h3>
<p class="mt-3 text-sm text-neutral/70">
Инспектор подтверждает качество, сервис переводит эскроу исполнителю по результату.
</p>
</div>
</div>
</div>
</section>
<section id="value" class="slide">
<div class="slide-top">Value Proposition</div>
<div class="slide-head">
<h2 class="slide-title">Что получает каждая сторона</h2>
<p class="slide-preamble">
Итог сценария должен быть очевиден для обеих ролей. Мы фиксируем ценность отдельно для
заказчика и для исполнителя, чтобы не было перекоса и спора за «справедливость».
</p>
</div>
<div class="slide-main">
<div class="grid gap-6 md:grid-cols-2">
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft">
<h3 class="font-display text-2xl">Заказчик</h3>
<p class="mt-3 text-sm text-neutral/70">
Прозрачная смета, понятные критерии качества и независимая приемка. Деньги защищены
эскроу, а результат подтвержден экспертом.
</p>
</div>
<div class="rounded-3xl bg-base-100/90 p-6 shadow-soft">
<h3 class="font-display text-2xl">Исполнитель</h3>
<p class="mt-3 text-sm text-neutral/70">
Четкий регламент работ, меньше спорных ситуаций и гарантированная оплата после проверки.
Проще сдавать этапы и выстраивать доверие.
</p>
</div>
</div>
</div>
</section>
<section id="prototype" class="slide">
<div class="slide-top">Прототип</div>
<div class="slide-head">
<h2 class="slide-title">Один экран один смысл</h2>
<p class="slide-preamble">
Посмотрите прототип: мы подготовили сценарий, который показывает, как пользователь проходит
путь от объекта до понятной сметы, этапов и уведомлений. Окунитесь в то, как это может выглядеть.
</p>
</div>
<div class="slide-main">
<div class="relative flex justify-center">
<div class="mockup-phone border-primary/40 shadow-glow">
<div class="camera"></div>
<div class="display">
<div class="artboard artboard-demo phone-1 bg-base-100 p-4">
<div class="space-y-4">
<div class="rounded-2xl bg-base-200 p-3">
<div class="text-xs font-semibold text-neutral/60">Старт проекта</div>
<div class="mt-2 flex items-center justify-between">
<div class="font-display">Добавить объект</div>
<button class="btn btn-xs btn-primary">Добавить</button>
</div>
</div>
<div class="rounded-2xl bg-white p-3 shadow-soft">
<div class="text-xs font-semibold text-neutral/60">Шаг 1</div>
<div class="mt-1 font-display">Фото и видео объекта</div>
<div class="mt-2 flex gap-2">
<button class="btn btn-xs btn-outline">Добавить фото</button>
<button class="btn btn-xs btn-outline">Добавить видео</button>
</div>
</div>
<div class="rounded-2xl bg-white p-3 shadow-soft">
<div class="text-xs font-semibold text-neutral/60">Шаг 2</div>
<div class="mt-1 font-display">Смета и этапы</div>
<div class="mt-2 text-xs text-neutral/60">Выберите дату старта проекта</div>
<div class="mt-2 flex items-center justify-between rounded-xl bg-base-200 px-3 py-2 text-xs">
<span>Старт: 15 апреля</span>
<span>6 этапов</span>
</div>
<div class="mt-2 text-xs text-neutral/60">Спецификация: материалы + объемы</div>
</div>
<div class="rounded-2xl bg-base-200 p-3">
<div class="text-xs font-semibold text-neutral/60">Шаг 3</div>
<div class="mt-1 font-display">Уведомление о приемке</div>
<div class="mt-2 text-xs text-neutral/60">Этап Черновые работы завершен. Проверьте и подтвердите.</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="monetization" class="slide">
<div class="slide-top">Монетизация</div>
<div class="slide-head">
<h2 class="slide-title">Прозрачные источники выручки</h2>
<p class="slide-preamble">
Мы фиксируем этапы, сроки и материалы значит, точно знаем, где создается ценность. Это
делает монетизацию понятной для обеих сторон и логично вытекающей из процесса.
</p>
</div>
<div class="slide-main">
<div class="relative overflow-hidden rounded-3xl border border-base-300 bg-base-100/90 p-8">
<div class="pointer-events-none absolute -left-16 top-10 h-36 w-36 rounded-full bg-primary/15 blur-3xl"></div>
<div class="pointer-events-none absolute -right-10 bottom-0 h-40 w-40 rounded-full bg-secondary/20 blur-3xl"></div>
<div class="relative grid gap-6 md:grid-cols-3">
<div class="rounded-3xl bg-white/90 p-6 shadow-soft">
<div class="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/15 text-primary">
<svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="1.6">
<path d="M12 3v18M7 7h5a3 3 0 1 1 0 6H9a3 3 0 1 0 0 6h5" />
</svg>
</div>
<h3 class="font-display text-2xl">Комиссия эскроу</h3>
<p class="mt-3 text-sm text-neutral/70">Процент от подтвержденного этапа, удерживается сервисом.</p>
</div>
<div class="rounded-3xl bg-white/90 p-6 shadow-soft">
<div class="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/15 text-primary">
<svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="1.6">
<path d="M4 20h16M6 20l2-10h8l2 10M9 10V6a3 3 0 0 1 6 0v4" />
</svg>
</div>
<h3 class="font-display text-2xl">Инспекция</h3>
<p class="mt-3 text-sm text-neutral/70">Плата за выезд и экспертизу, инициирует заказчик.</p>
</div>
<div class="rounded-3xl bg-white/90 p-6 shadow-soft">
<div class="mb-4 inline-flex h-12 w-12 items-center justify-center rounded-2xl bg-primary/15 text-primary">
<svg viewBox="0 0 24 24" class="h-6 w-6" fill="none" stroke="currentColor" stroke-width="1.6">
<path d="M4 7h16l-2 10H6L4 7z" />
<path d="M8 7V5a4 4 0 0 1 8 0v2" />
</svg>
</div>
<h3 class="font-display text-2xl">Материалы</h3>
<p class="mt-3 text-sm text-neutral/70">За материалы платит заказчик, сервис получает маржу.</p>
</div>
</div>
</div>
</div>
</section>
<section id="metrics" class="slide">
<div class="slide-top">Метрики</div>
<div class="slide-head">
<h2 class="slide-title">Проверяем, что продукт работает</h2>
<p class="slide-preamble">
Метрики должны показать, что сервис снижает конфликт и ускоряет приемку. Мы отслеживаем
ключевые сигналы качества, скорости и точности.
</p>
</div>
<div class="slide-main">
<div class="grid gap-6 md:grid-cols-[1fr_1fr]">
<div>
<h3 class="font-display text-2xl">North Star Metric</h3>
<p class="mt-3 text-sm text-neutral/70">Доля этапов, принятых с первого раза.</p>
<p class="mt-3 text-sm text-neutral/70">
Влияют: точность автосметы, скорость приемки, доля зеленых оценок.
</p>
</div>
<div class="grid gap-4">
<div class="rounded-3xl border border-base-300 bg-base-100/90 p-6">
<div class="text-xs font-semibold text-neutral/60">Качество</div>
<div class="mt-2 font-display text-xl">Доля зеленых приемок</div>
</div>
<div class="rounded-3xl border border-base-300 bg-base-100/90 p-6">
<div class="text-xs font-semibold text-neutral/60">Скорость</div>
<div class="mt-2 font-display text-xl">Среднее время приемки этапа</div>
</div>
<div class="rounded-3xl border border-base-300 bg-base-100/90 p-6">
<div class="text-xs font-semibold text-neutral/60">Точность</div>
<div class="mt-2 font-display text-xl">Отклонение сметы от факта</div>
</div>
</div>
</div>
</div>
</section>
<section id="roadmap" class="slide">
<div class="slide-top">Roadmap</div>
<div class="slide-head">
<h2 class="slide-title">Валидация и масштабирование</h2>
<p class="slide-preamble">
В фокусе не разработка, а проверка гипотез и запуск в реальных процессах. Сначала пилот
и валидируемые результаты, затем подключение партнеров и масштабирование.
</p>
</div>
<div class="slide-main">
<div class="rounded-3xl border border-base-300 bg-base-100/90 p-6">
<div class="grid gap-4 text-sm">
<div class="grid grid-cols-6 gap-2 text-xs text-neutral/50">
<div>М1</div>
<div>М2</div>
<div>М3</div>
<div>М4</div>
<div>М5</div>
<div>М6</div>
</div>
<div class="grid grid-cols-[160px_1fr] items-center gap-4">
<div class="text-neutral/70">Пилот и гипотезы</div>
<div class="grid grid-cols-6 gap-2">
<div class="col-span-2 rounded-full bg-primary/80 py-2 text-center text-xs text-primary-content">М1М2</div>
<div class="col-span-4 rounded-full bg-base-200 py-2"></div>
</div>
</div>
<div class="grid grid-cols-[160px_1fr] items-center gap-4">
<div class="text-neutral/70">Встраивание в процессы</div>
<div class="grid grid-cols-6 gap-2">
<div class="col-span-2 rounded-full bg-base-200 py-2"></div>
<div class="col-span-2 rounded-full bg-primary/80 py-2 text-center text-xs text-primary-content">М3М4</div>
<div class="col-span-2 rounded-full bg-base-200 py-2"></div>
</div>
</div>
<div class="grid grid-cols-[160px_1fr] items-center gap-4">
<div class="text-neutral/70">Масштабирование</div>
<div class="grid grid-cols-6 gap-2">
<div class="col-span-4 rounded-full bg-base-200 py-2"></div>
<div class="col-span-2 rounded-full bg-primary/80 py-2 text-center text-xs text-primary-content">М5М6</div>
</div>
</div>
</div>
</div>
</div>
</section>
<section id="final" class="slide">
<div class="slide-top">Итог</div>
<div class="slide-head">
<h2 class="slide-title">Ремонт становится управляемым процессом</h2>
<p class="slide-preamble">
Методология, приемка и деньги внутри сервиса. Пользователи получают спокойствие, а бизнес
масштабируемую модель с экспертизой и прозрачной экономикой.
</p>
</div>
<div class="slide-main"></div>
</section>
</div>
</div>
</main>
</div>
</div>
</template>
<script setup>
useHead({
title: 'Контроль ремонта — презентация',
meta: [
{ name: 'description', content: 'Презентация продукта: смета, приемка, эскроу и методология ремонта.' }
]
})
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;600;700&family=Space+Grotesk:wght@400;600;700&display=swap');
:root {
color-scheme: light;
}
body {
font-family: 'Manrope', system-ui, sans-serif;
}
.font-display {
font-family: 'Space Grotesk', system-ui, sans-serif;
}
.slide {
border-radius: 2rem;
background: color-mix(in oklab, white 80%, transparent);
border: 1px solid rgba(20, 20, 20, 0.08);
padding: 2.5rem;
box-shadow: 0 18px 50px rgba(20, 20, 20, 0.08);
min-height: 70vh;
display: flex;
flex-direction: column;
}
.slide-top {
font-size: 0.75rem;
text-transform: uppercase;
letter-spacing: 0.2em;
color: rgba(20, 20, 20, 0.45);
margin-bottom: 1.25rem;
}
.slide-title {
font-family: 'Space Grotesk', system-ui, sans-serif;
font-size: clamp(2rem, 3vw, 2.75rem);
line-height: 1.1;
margin: 0;
}
.slide-preamble {
margin-top: 0.75rem;
color: rgba(20, 20, 20, 0.7);
font-size: 1rem;
max-width: 52rem;
}
.slide-head {
margin-bottom: 1.5rem;
}
.slide-main {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
gap: 1.5rem;
}
</style>