Республика Саха (Якутия) · техническое задание
Техническое задание · v1.0

Маркетплейс изделий ручной работы мастеров Якутии

Каталожная площадка-витрина, объединяющая мастеров Республики Саха и покупателей. Площадка не является интернет-магазином: оплата и доставка происходят напрямую между сторонами, а монетизация — через платное размещение объявлений.

Тип продуктаКаталог-витрина (lead-gen)
СтекNext.js 15 · TS · Tailwind
РегионРеспублика Саха (Якутия)
МонетизацияПлатное размещение
01

Концепция и бизнес-модель

«ТАЛ ТАЛ» — это онлайн-витрина изделий ручной работы мастеров Якутии, а не классический e-commerce. Площадка соединяет мастера и покупателя, но не участвует в расчётах.


Принцип работы

  • Покупатель находит изделие в каталоге и связывается с мастером напрямую: телефон, WhatsApp, Instagram.
  • Площадка не оформляет заказы и не принимает оплату. Цена, доставка и оплата согласуются между мастером и покупателем вне платформы.
  • Объявления создаёт и публикует администратор (по материалам мастера), что обеспечивает единое качество карточек.

Монетизация — только размещение объявлений. Продавец оплачивает публикацию изделия (пакет / срок размещения). Покупатели пользуются каталогом бесплатно. Никаких комиссий с продаж — их площадка не видит.

Источники дохода

Платное размещение

Тариф за публикацию карточки на срок (30 / 90 / 180 дней).

Продвижение

Поднятие в выдаче, метки «Премиум», баннеры на главной.

Пакеты для мастерских

Оптовые тарифы на N объявлений со скидкой.

Витрины-подборки

Спонсорские коллекции к праздникам и сезонам.

02

Целевая аудитория

Покупатели

Жители Якутии и других регионов России, туристы, коллекционеры, ценители национального искусства, корпоративные клиенты (подарки, протокол).

Продавцы

Частные мастера, ремесленники, художники, ювелиры, мастерские и небольшие предприятия Республики Саха.

Ключевые мотивы покупателя

  • Подлинность. Гарантия, что изделие — настоящая ручная работа мастера из Якутии.
  • Прямой контакт. Возможность обсудить с автором детали, размер, индивидуальный заказ.
  • Доверие. Рейтинги, отзывы, проверенные мастера, фото и видео изделия.
03

Структура сайта

Публичная часть

  • Главная — hero, поиск, популярные категории, новые поступления, популярные товары, национальные изделия, отзывы, о проекте, футер.
  • Каталог — поиск, фильтры (категория, цена, город, мастер, наличие видео, рейтинг), сортировка, сетка/список, пагинация.
  • Карточка товара — до 5 фото + видео, описание, характеристики, варианты цвета и размера, рейтинг, отзывы, блок продавца с CTA-контактами.
  • Страница мастера — профиль, его изделия, рейтинг, контакты.
  • Категория — посадочная страница с SEO-описанием и подкатегориями.

Личные кабинеты

  • Кабинет продавца — список товаров, просмотры, статус и срок размещения (минимальный, т.к. публикует администратор).
  • Админ-панель — товары, категории, модерация отзывов, пользователи, жалобы, платежи, статистика.
04

Категории и подкатегории

Структура отражает специфику ремёсел Якутии. Дерево двухуровневое, с возможностью расширения.

УкрашенияСерьги · кольца · колье и подвески · браслеты · броши · гарнитуры (илин кэбиһэр)
Национальная одеждаПлатья (халадаай) · головные уборы (дьабака) · пояса · аксессуары
Изделия из мехаУнты · торбаса · шапки · рукавицы · жилеты · шубы
Изделия из кожиСумки · ремни · кошельки · обувь · чехлы
СувенирыОбереги · магниты · брелоки · фигурки · открытки
КартиныЖивопись · графика · батик · вышитые панно
ДекорПанно · подсвечники · текстиль · настенные украшения
ПосудаЧороны · кытыйа · берестяные изделия · деревянная посуда
ИгрушкиКуклы в национальных костюмах · текстильные · деревянные
Ножи и ремесленные изделияЯкутский нож (быһах) · ножны · кузнечные изделия
Музыкальные инструментыХомус (варган) · футляры · аксессуары
Резьба по костиБивень мамонта · рог · фигурки · украшения
Подарочные наборыДля дома · для гостей республики · корпоративные · сувенирные
05

UX: сценарии и CJM

Ключевые сценарии

  1. Покупатель-турист: ищет аутентичный сувенир → находит по категории «Сувениры» → читает отзывы → пишет мастеру в WhatsApp → договаривается о покупке и самовывозе.
  2. Коллекционер из другого региона: ищет резьбу по кости → фильтрует по мастеру и рейтингу → смотрит видео → звонит мастеру → организует доставку.
  3. Мастер: отправляет материалы администратору → оплачивает размещение → видит публикацию и просмотры в кабинете → получает обращения покупателей.

Customer Journey Map (покупатель)

ЭтапДействиеТочки контактаЭмоцииВозможности
ОсознаниеХочет уникальный подарок / изделиеПоиск, соцсети, реклама🙂 интересSEO-посадочные по категориям
ПоискПросматривает каталог, фильтруетКаталог, поиск, фильтры🤔 сравнениеУдобные фильтры, фото/видео
ОценкаИзучает карточку, отзывы, мастераКарточка товара, профиль😀 довериеРейтинги, метка «проверен»
КонтактСвязывается с мастеромCTA: звонок / WhatsApp / IG😊 решимостьКрупные понятные CTA
СделкаДоговаривается вне платформыЛичный мессенджер🥳 радостьПодсказки по безопасной сделке
ЛояльностьОставляет отзыв, возвращаетсяФорма отзыва, избранное❤️ привязанностьНапоминание оставить отзыв
06

Пользовательские потоки

Покупатель → контакт с мастером

Главная / поиск Каталог + фильтры Карточка товара Отзывы / мастер CTA «Написать» Мессенджер

Мастер → размещение

Заявка на размещение Материалы админу Оплата тарифа Создание карточки (админ) Модерация Публикация

Администратор → модерация

Очередь модерации Проверка контента Одобрить / Отклонить Публикация / правки
07

Мобильное поведение (адаптивность)

Mobile-first: значительная часть аудитории (туристы, мессенджеры) приходит со смартфонов. Брейкпоинты Tailwind: sm 640, md 768, lg 1024, xl 1280.

  • Шапка: логотип + иконка поиска; полноэкранный поиск по тапу; меню категорий — выезжающая панель.
  • Каталог: 2 колонки карточек; фильтры — нижний sheet по кнопке «Фильтры»; сортировка — bottom-sheet.
  • Карточка: галерея-свайп; CTA-контакты закреплены внизу экрана (sticky bottom bar) — звонок и WhatsApp всегда под рукой.
  • Хит-таргеты не меньше 44×44px; крупный шрифт от 16px для основного текста.
08

UI Design System

Цветовая палитра

Primary#16412F
Primary 950#0C241C
Accent#9B2226
Gold#E6B35A
Paper#FAF8F4
Sand#F3F0EA
Graphite#2B2C29

Типографика

Дисплейная антиква Cormorant для заголовков (премиальность, «рукотворность») + гротеск Manrope для интерфейса и текста. Моноширинный JetBrains Mono для артикулов и тех-данных.

Заголовок H1Cormorant 600 · 48–68px
Заголовок секцииCormorant 600 · 32–40px
Подзаголовок / акцентManrope 700 · 18px
Основной текст интерфейсаManrope 400 · 15–16px
Артикул · мета · кодJetBrains Mono · 12–13px

Сетка и отступы

  • Контейнер: max-width 1280px, боковые поля 24px.
  • Сетка: 12 колонок, gutter 24px. Каталог — 4 колонки (десктоп) / 3 / 2 (мобайл).
  • Шкала отступов: 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 px.
  • Радиусы: 4 / 8 / 14px. Тени: мягкие, тонированные в зелёный.
09

Компоненты

Кнопки

Primary (зелёная), Accent (красная), Ghost, Light. Размеры md/lg, состояния hover/active/disabled, иконки слева.

Карточка товара

Фото 3:4, бейджи, избранное, метка видео, цена, название, мастер + город, рейтинг.

Формы

Поля, селекты, чекбоксы/радио (accent зелёный), слайдер цены, переключатели. Валидация Zod + RHF.

Модальные окна

Галерея, форма отзыва, подтверждения, диалоги админки. Overlay + focus-trap.

Таблицы админки

Сортировка, статус-бейджи, строковые действия, пагинация, пустые состояния.

Бейджи и статусы

Хит / Премиум / Новинка / Скидка; статусы объявлений: активно / модерация / истекло.

10

SEO-структура

URL

# Главная
/
# Категория и подкатегория
/catalog/[category]            → /catalog/ukrasheniya
/catalog/[category]/[sub]      → /catalog/ukrasheniya/sergi
# Карточка товара (slug + id)
/product/[slug]-[id]          → /product/unty-iz-kamusa-1042
# Мастер
/master/[slug]

Метатеги (пример карточки)

title: Унты женские из камуса с вышивкой — Мастерская «Тыал» · ТАЛ ТАЛ
description: Унты ручной работы из камуса, г. Вилюйск. Свяжитесь
с мастером напрямую: телефон, WhatsApp, Instagram. Рейтинг 5.0.
canonical: https://taltal.ru/product/unty-iz-kamusa-1042
robots: index, follow

Open Graph

og:type     = product
og:title    = Унты женские из камуса с вышивкой
og:image    = .../products/1042/cover-1200x630.jpg
og:url      = https://taltal.ru/product/unty-iz-kamusa-1042
og:locale   = ru_RU
product:price:amount   = 42000
product:price:currency = RUB

Schema.org (JSON-LD)

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Унты женские из камуса с вышивкой",
  "image": ["…/cover.jpg"],
  "brand": { "@type":"Brand", "name":"Мастерская «Тыал»" },
  "offers": { "@type":"Offer", "price":"42000",
              "priceCurrency":"RUB", "availability":"InStock" },
  "aggregateRating": { "@type":"AggregateRating",
              "ratingValue":"5.0", "reviewCount":"24" }
}

Дополнительно: BreadcrumbList на категориях и карточках, Organization на главной, sitemap.xml и robots.txt генерируются Next.js (app/sitemap.ts).

11

База данных (PostgreSQL)

Схема нормализована, связи через внешние ключи. Денормализованные счётчики (просмотры, рейтинг) — для скорости выдачи.

users

ПолеТипОписание
id PKuuidИдентификатор
roleenumbuyer · seller · admin
namevarcharИмя / название мастерской
phonevarcharТелефон
whatsappvarcharКонтакт WhatsApp
instagramvarcharПрофиль Instagram
cityvarcharГород / улус
is_verifiedbooleanПроверенный мастер
created_attimestamptzДата регистрации

categories

ПолеТипОписание
id PKserialИдентификатор
parent_id FKint → categories.idРодитель (для подкатегорий)
namevarcharНазвание
slugvarcharURL-сегмент (уникальный)
seo_texttextSEO-описание категории

products

ПолеТипОписание
id PKuuidИдентификатор
seller_id FKuuid → users.idМастер
category_id FKint → categories.idКатегория
title / slugvarcharНазвание и URL-slug
descriptiontextОписание
pricenumericЦена (₽)
attributesjsonbХарактеристики, цвета, размеры
imagesjsonbДо 5 фото (URL)
video_urlvarcharВидео (опц.)
rating_avg / reviews_cntnumeric / intДенорм. рейтинг
views_countintСчётчик просмотров
statusenumdraft · moderation · active · expired
published_at / expires_attimestamptzСрок размещения

reviews

ПолеТипОписание
id PKuuidИдентификатор
product_id FKuuid → products.idТовар
author_id FKuuid → users.idАвтор (nullable)
ratingsmallintОценка 1–5
texttextТекст отзыва
statusenumpending · approved · rejected · spam
created_attimestamptzДата
views

id · product_id FK · ip_hash · session · created_at. Защита от накрутки по IP+сессии.

complaints

id · target_type (product/review) · target_id · reason · status · created_at.

payments_for_ads

id · seller_id FK · product_id FK · amount · plan · period_days · status · paid_at.

Связи

users 1—∞ products · products 1—∞ reviews/views · products 1—∞ payments · categories self-ref (parent_id).

Защита отзывов от спама: rate-limit по IP/сессии, обязательная пре-модерация (status=pending), фильтр стоп-слов и ссылок, капча на форме, флаг «подозрительный» от антиспам-эвристики.

12

Архитектура Next.js

Next.js 15 (App Router, RSC), TypeScript, Tailwind, shadcn/ui, React Query (клиентские данные), Zod + React Hook Form (формы).

# Структура проекта
yarmarka/
├─ app/
│  ├─ (public)/
│  │  ├─ page.tsx                  # Главная
│  │  ├─ catalog/[category]/page.tsx
│  │  ├─ product/[slug]/page.tsx
│  │  └─ master/[slug]/page.tsx
│  ├─ (cabinet)/seller/page.tsx    # Кабинет продавца
│  ├─ (admin)/admin/
│  │  ├─ page.tsx                  # Дашборд
│  │  ├─ products/ · categories/
│  │  ├─ reviews/ · complaints/
│  │  └─ users/ · payments/
│  ├─ api/                         # Route Handlers
│  │  ├─ products/route.ts
│  │  ├─ reviews/route.ts
│  │  └─ views/route.ts
│  ├─ sitemap.ts · robots.ts
│  └─ layout.tsx
├─ components/
│  ├─ ui/            # shadcn/ui примитивы
│  ├─ product/       # ProductCard, Gallery, SellerCTA
│  ├─ catalog/       # Filters, SortBar, Pagination
│  └─ layout/        # Header, Footer, Nav
├─ lib/
│  ├─ db.ts          # Prisma / Drizzle client
│  ├─ api.ts         # fetchers для React Query
│  └─ seo.ts         # generateMetadata, JSON-LD
├─ schemas/        # Zod-схемы (product, review…)
├─ hooks/          # useProducts, useFilters…
└─ types/

API-слой

Метод · путьНазначение
GET /api/productsСписок с фильтрами, сортировкой, пагинацией
GET /api/products/:idКарточка товара
POST /api/reviewsСоздать отзыв (Zod-валидация, pending)
POST /api/viewsИнкремент просмотра (dedupe по сессии)
POST /api/complaintsЖалоба на товар/отзыв
admin: CRUDproducts · categories · reviews · users · payments

Рендеринг: главная и категории — SSG/ISR (revalidate), карточка — ISR с on-demand revalidation при правке в админке, кабинет и админка — клиентский рендер с React Query.

13

UI-концепция страниц

Интерактивные прототипы выполнены в едином дизайн-коде. Откройте каждый экран: