Telegram - @aalqin
← Все проекты

Собственный продукт / SEO / Django + Next.js

Liforia

Продукт, который проверяет гипотезу: маленькие честные инструменты для бытовых задач системно собирают органический трафик. 25 инструментов, своя админка и техническое SEO с первого дня.

ФорматСвой продукт
СтекDjango + Next.js
Инструментов25 в 9 темах
Тесты173 автотеста
01

Задача

Проверить модель роста, а не выпустить очередной калькулятор.

Ниша бытовых расчётов забита сайтами, где под каждый запрос клонируется одна и та же страница. Такое растёт быстро и падает вместе с очередным апдейтом. Мне было интересно обратное: можно ли расти на небольшом числе честных страниц, каждая из которых реально отвечает на свой вопрос.

Отсюда главное правило проекта: одна реальная задача пользователя - одна сильная страница. Никаких алиасов, городских клонов и текстовых перестановок ради семантики.

Гипотеза

Качество вместо количества

Рост только через новые честные инструменты, а не через размножение шаблона.

Ограничение

Не выдумывать нормативы

Если честный расчёт невозможен без внешней базы - инструмента не будет.

Проверка

Данные вебмастеров

Решение о новой странице принимает человек по спросу, а не генератор.

02

Продукт

25 инструментов в девяти темах - от ремонта до денег и дат.

Ремонт, дача, кухня, размеры, быт, материалы, деньги, авто, время. Каждый инструмент считает по данным, которые вводит пользователь: расход с упаковки, свою ставку, свой рецепт. Там, где «правильной» цифры не существует, мы её не подставляем - и говорим об этом прямо в интерфейсе.

  • Краска, плитка, обои, ламинат, пиломатериалы - по фактическому расходу с упаковки.
  • Платёж по кредиту и доход по вкладу - по классическим формулам, с честным предупреждением про страховки и налог.
  • Расход топлива, сравнение шин, время в пути - геометрия и арифметика без маркетинга.
  • Дни между датами, точный возраст, время чтения - календарь и статистика языка.
  • Каждый результат объясняет, откуда взялась цифра, и предупреждает о границах применимости.
Расчёт

Только на сервере

Формулы живут в Python-реестре и покрыты тестами. Через интерфейс их не поменять - это сознательное ограничение.

Контент

Никаких фиктивных сигналов

Ни выдуманных рейтингов, ни фальшивых отзывов, ни HowTo-разметки на страницах, которые не являются инструкцией.

03

Архитектура

Три слоя с чёткой границей ответственности.

База хранит метаданные и SEO-контент, Python считает и валидирует, Next рисует интерфейс. Ни один слой не лезет в чужую зону: новый инструмент - это запись в базе, класс калькулятора и форма во фронтовом реестре.

Backend

Django 5 + DRF

PostgreSQL 16, поиск на pg_trgm, реестр калькуляторов без eval, 127 тестов.

Frontend

Next.js 16, App Router

TypeScript strict, серверный рендер SEO-контента, форма - отдельный клиентский остров.

Инфраструктура

Docker, CI, автодеплой

Прогон тестов на каждый push, выкладка на VPS после зелёного CI.

Расчёт всегда валидируется на сервере, даже если фронт уже проверил форму: клиентская валидация - это удобство, а не источник истины.

04

SEO

Техническая часть закрыта до первой страницы в индексе.

  • Self-canonical, sitemap из опубликованного контента, robots с Clean-param для Яндекса.
  • Schema.org: Organization, WebSite, BreadcrumbList, WebApplication, FAQPage из реального FAQ, Article для статей.
  • og:image генерируется на лету под каждую страницу - заголовок, описание и цвет темы.
  • AI-краулеры пущены осознанно: цитирование в ответах ассистентов даёт трафик и узнаваемость.
  • Внутренняя перелинковка: хаб темы, связанные инструменты, поддерживающие статьи.
  • Свой аудит-скрипт в management-командах: проверяет каждый инструмент на алиасы, FAQ, метаданные и связи.
Анти-каннибализация

Проверка до создания страницы

Новый интент - новая страница. Та же задача другими словами - алиас существующего инструмента.

Обратная связь

Данные вебмастеров в цикл

Запрос без своей страницы или страница с показами без кликов - кандидаты на работу.

05

Админка и данные

Отдельный модуль со своим оформлением и своей авторизацией.

Панель живёт по служебному адресу, закрыта от индексации и не имеет ничего общего с вёрсткой публичного сайта: тёмный плотный интерфейс против светлого журнального. Авторизация на JWT, токены в httpOnly-куках - браузерный JS их не видит, поэтому XSS на публичной части не даёт доступа к управлению.

Контент

Полный CRUD

Статьи с черновиками и SEO-полями, темы, метаданные инструментов, пользователи.

Статистика

Просмотры и вызовы по дням

Считаются на сервере при рендере, боты отсекаются по User-Agent.

Границы

Формулы - только в коде

Из панели выбирается существующий калькулятор, сослаться на несуществующий валидация не даст.

06

Что получилось

Работающий продукт, а не прототип на локалхосте.

25 / 9

Инструментов и тем

Каждый решает свою задачу, ни один не повторяет другой.

173

Автотеста

127 на бэкенде, 23 юнита и 23 сквозных на фронте, включая проверку разметки.

0

Замечаний своего SEO-аудита

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

Дальше - контент под новые темы, поддерживающие статьи и цикл на данных вебмастеров: смотрим, какие кластеры дают показы, и растим их новыми инструментами.

Нужен продукт, а не набор страниц

Соберу от архитектуры до трафика.

@aalqin↗