Собственный продукт / SEO / Django + Next.js
Liforia
Продукт, который проверяет гипотезу: маленькие честные инструменты для бытовых задач системно собирают органический трафик. 25 инструментов, своя админка и техническое SEO с первого дня.
Задача
Проверить модель роста, а не выпустить очередной калькулятор.
Ниша бытовых расчётов забита сайтами, где под каждый запрос клонируется одна и та же страница. Такое растёт быстро и падает вместе с очередным апдейтом. Мне было интересно обратное: можно ли расти на небольшом числе честных страниц, каждая из которых реально отвечает на свой вопрос.
Отсюда главное правило проекта: одна реальная задача пользователя - одна сильная страница. Никаких алиасов, городских клонов и текстовых перестановок ради семантики.
Качество вместо количества
Рост только через новые честные инструменты, а не через размножение шаблона.
Не выдумывать нормативы
Если честный расчёт невозможен без внешней базы - инструмента не будет.
Данные вебмастеров
Решение о новой странице принимает человек по спросу, а не генератор.
Продукт
25 инструментов в девяти темах - от ремонта до денег и дат.
Ремонт, дача, кухня, размеры, быт, материалы, деньги, авто, время. Каждый инструмент считает по данным, которые вводит пользователь: расход с упаковки, свою ставку, свой рецепт. Там, где «правильной» цифры не существует, мы её не подставляем - и говорим об этом прямо в интерфейсе.
- Краска, плитка, обои, ламинат, пиломатериалы - по фактическому расходу с упаковки.
- Платёж по кредиту и доход по вкладу - по классическим формулам, с честным предупреждением про страховки и налог.
- Расход топлива, сравнение шин, время в пути - геометрия и арифметика без маркетинга.
- Дни между датами, точный возраст, время чтения - календарь и статистика языка.
- Каждый результат объясняет, откуда взялась цифра, и предупреждает о границах применимости.
Только на сервере
Формулы живут в Python-реестре и покрыты тестами. Через интерфейс их не поменять - это сознательное ограничение.
Никаких фиктивных сигналов
Ни выдуманных рейтингов, ни фальшивых отзывов, ни HowTo-разметки на страницах, которые не являются инструкцией.
Архитектура
Три слоя с чёткой границей ответственности.
База хранит метаданные и SEO-контент, Python считает и валидирует, Next рисует интерфейс. Ни один слой не лезет в чужую зону: новый инструмент - это запись в базе, класс калькулятора и форма во фронтовом реестре.
Django 5 + DRF
PostgreSQL 16, поиск на pg_trgm, реестр калькуляторов без eval, 127 тестов.
Next.js 16, App Router
TypeScript strict, серверный рендер SEO-контента, форма - отдельный клиентский остров.
Docker, CI, автодеплой
Прогон тестов на каждый push, выкладка на VPS после зелёного CI.
Расчёт всегда валидируется на сервере, даже если фронт уже проверил форму: клиентская валидация - это удобство, а не источник истины.
SEO
Техническая часть закрыта до первой страницы в индексе.
- Self-canonical, sitemap из опубликованного контента, robots с Clean-param для Яндекса.
- Schema.org: Organization, WebSite, BreadcrumbList, WebApplication, FAQPage из реального FAQ, Article для статей.
- og:image генерируется на лету под каждую страницу - заголовок, описание и цвет темы.
- AI-краулеры пущены осознанно: цитирование в ответах ассистентов даёт трафик и узнаваемость.
- Внутренняя перелинковка: хаб темы, связанные инструменты, поддерживающие статьи.
- Свой аудит-скрипт в management-командах: проверяет каждый инструмент на алиасы, FAQ, метаданные и связи.
Проверка до создания страницы
Новый интент - новая страница. Та же задача другими словами - алиас существующего инструмента.
Данные вебмастеров в цикл
Запрос без своей страницы или страница с показами без кликов - кандидаты на работу.
Админка и данные
Отдельный модуль со своим оформлением и своей авторизацией.
Панель живёт по служебному адресу, закрыта от индексации и не имеет ничего общего с вёрсткой публичного сайта: тёмный плотный интерфейс против светлого журнального. Авторизация на JWT, токены в httpOnly-куках - браузерный JS их не видит, поэтому XSS на публичной части не даёт доступа к управлению.
Полный CRUD
Статьи с черновиками и SEO-полями, темы, метаданные инструментов, пользователи.
Просмотры и вызовы по дням
Считаются на сервере при рендере, боты отсекаются по User-Agent.
Формулы - только в коде
Из панели выбирается существующий калькулятор, сослаться на несуществующий валидация не даст.
Что получилось
Работающий продукт, а не прототип на локалхосте.
Инструментов и тем
Каждый решает свою задачу, ни один не повторяет другой.
Автотеста
127 на бэкенде, 23 юнита и 23 сквозных на фронте, включая проверку разметки.
Замечаний своего SEO-аудита
Скрипт проверяет все опубликованные страницы на каждом прогоне.
Дальше - контент под новые темы, поддерживающие статьи и цикл на данных вебмастеров: смотрим, какие кластеры дают показы, и растим их новыми инструментами.
Живые ссылки
Сайт открыт и работает.
Нужен продукт, а не набор страниц