惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Proofpoint News Feed
Attack and Defense Labs
Attack and Defense Labs
Security Archives - TechRepublic
Security Archives - TechRepublic
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Full Disclosure
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
V2EX - 技术
V2EX - 技术
B
Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
M
MIT News - Artificial intelligence
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
W
WeLiveSecurity
Stack Overflow Blog
Stack Overflow Blog
TaoSecurity Blog
TaoSecurity Blog
T
Threatpost
小众软件
小众软件
T
The Blog of Author Tim Ferriss
Google Online Security Blog
Google Online Security Blog
MongoDB | Blog
MongoDB | Blog
T
Tenable Blog
P
Privacy International News Feed
S
Security @ Cisco Blogs
H
Heimdal Security Blog
大猫的无限游戏
大猫的无限游戏
B
Blog RSS Feed
H
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
有赞技术团队
有赞技术团队
Application and Cybersecurity Blog
Application and Cybersecurity Blog
O
OpenAI News
Security Latest
Security Latest
S
Securelist
Cyberwarzone
Cyberwarzone
D
Docker
S
Schneier on Security
V
Vulnerabilities – Threatpost
The GitHub Blog
The GitHub Blog
P
Privacy & Cybersecurity Law Blog
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
4 MVP за 4 месяца, 30 холодных DM, 1 регистрация: building in public по‑русски
OneZee · 2026-05-22 · via Все публикации подряд на Хабре
Дашборд stats.teachtrack.ru

Дашборд stats.teachtrack.ru

Меня зовут Никита, я бэкендер из Краснодара. Плотно сижу на NestJS/TypeScript в продуктовой команде. Параллельно с основной работой веду формат Proof of Work — 30-дневные публичные спринты по своим инди‑проектам: каждый день рассказываю, что сделал, и не бросаю свои идеи в заметки Obsidian/Notion на годы (по крайней мере, теперь).

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

По итогам четырёх сезонов я мог бы написать «10 советов как сделать стартап», но таких текстов и без меня хватает. Здесь — конкретный разбор того, что у меня сработало, что не сработало и какой ценой. С цифрами, с названиями инструментов, с граблями, на которые я наступил лично.

Если вы делаете свой инди‑продукт или думаете начать — возможно, часть моего опыта сэкономит вам пару недель и замотивирует наконец начать.

TL;DR. Без одного конкретного человека, который скажет «да, я этим воспользуюсь», лучше не начинать. Учить новый стек и параллельно гнать сроки — не получается, что‑то одно. Email‑верификация как блокер на регистрации убивает воронку. В РФ холодный аутрич без явного обмена «делаю → получаю» работает плохо. И выпуск продукта — начало работы, а не конец. Ниже подробно по каждому пункту, плюс отдельный раздел про юридическую часть и Telegram‑релей в обход блокировок российского хостинга (которые как раз недавно начались в 2026).

Четыре проекта за четыре месяца: краткий обзор

Чтобы дальше было понятно, о чём речь, коротко по проектам.

Сезон 1. Stars Marketplace. Telegram BOT который должен был покупать через Fragment звезды/премиум для Telegram на 30–40% дешевле чем у официальных магазинов. Сделал всё — бэкенд, бот, инфраструктуру. До запуска не дошёл: подряд три российских платёжных процессора (ЮKassa, Т‑Банк (тогда Tinkoff), Robokassa) отказались работать с такой моделью. Закрыл сезон с продуктом, который не может принимать деньги, и пошёл дальше.

Сезон 2. LifeTrack. Минималистичный трекер привычек. iOS на SwiftUI с нуля (ни строчки на Swift до этого не писал) и Android‑версия на React Native. Выпустил в App Store и Google Play, идёт органика, люди пользуются.

Сезон 3. TripTrack. «Strava для машин» — приложение для трекинга поездок. SwiftUI, MapKit, Core Location. Fog‑of‑war карта, геймификация, карточки поездок. Тоже в App Store, тоже работает. Так как в проекте пришлось придумывать небольшой велосипед с фильтром Калмана, писал об этом статью на Хабре.

Сезон 4. TeachTrack. Веб‑сервис для частных репетиторов: расписание, ученики, оплаты, Telegram‑бот с автоматическими напоминаниями. Полный стек: NestJS, React, PostgreSQL, Kubernetes на российском хостинге. Юридически по‑белому: оператор ПДн, сервер в РФ, уведомление в Роскомнадзор отправил 2 мая 2026 года. Этот сезон как раз заканчиваю — поэтому материала по нему больше всего. Технический разбор инфраструктуры с конфигами вышел отдельной статьёй на Хабре, здесь — про общие выводы.

Четыре проекта за четыре месяца. Один не дошёл до релиза, три при этом живут

Четыре проекта за четыре месяца. Один не дошёл до релиза, три при этом живут

Теперь — по разделам.

Откуда брать идеи для инди‑проекта

У меня было четыре источника, и они дали радикально разный результат.

Stars Marketplace родился из рыночной гипотезы и из задачи на основной работе: «Telegram Stars — новая платёжная штука, наверняка в этом есть бизнес». У меня не было конкретного человека, у которого болела эта проблема, я просто решал точно такую же задачу на основной работе и решил, что будет круто, сделать свой отдельный сервис, который как раз можно было бы интегрировать к себе потом в продукт, но в компании. Идея была в том, чтобы покупать звезды через Fragment, найдя способ через их незадокументированное API брать их автоматизированно. Так как точно такая же задача была дана мне по работе, я такой способ нашел.

LifeTrack пришёл из личной боли — нужен был трекер привычек, который не превращает в раба сложного интерфейса. Мне лично требовался бы трекер, который мог бы помогать мне не забывать следить за моими привычками необходимыми для поддержания здоровья. Я был получается одновременно пользователем и разработчиком.

TripTrack — тоже личная боль, но уже шире. Я часто за рулём, причем обожаю долгие поездки, мне нравится вспоминать о том, где я был и когда, а Strava‑подобной штуки для машин на рынке просто нет. Тут уже было ощущение, что это нужно не только мне.

TeachTrack. Два года назад моя девушка, преподаватель английского, пожаловалась, что ученики постоянно забывают о занятиях. Я за один вечер собрал Telegram‑бот, который рассылал её ученикам напоминания о расписании. Она пользуется им до сих пор. Через два года я решил сделать из этого нормальный сервис — и оказалось, что у меня уже есть валидированная идея, живой пользователь и работающий прототип.

Что из этого вышло: из четырех проектов, единственный, который умер до релиза и не смог все‑таки принести кому‑то пользу — это Stars Marketplace. У него на старте не было ни одного потенциального пользователя — даже меня самого. Совпадение или нет, судите сами.

Правило, которое я для себя сформулировал: если ни одного конкретного человека‑пользователя нет — стоит остановиться и подумать ещё раз. Идея может быть отличной, но без живого человека за ней вы работаете вслепую, глаз настолько замылится от ежедневного кодинга и проработки бизнес‑идеи, что вы не заметите, что делаете, если нет валидатора в виде реального юзера. Когда такой человек есть, даже посредственная идея даёт обратную связь, на которой продукт можно докручивать.

Валидация идеи до первой строки кода

С Stars Marketplace я ничего не проверял. Просто увидел тренд, сам загорелся, понял быстро, что это работает как бизнес‑модель, сел и начал писать архитектуру. Через месяц у меня был полноценный бэкенд, бот, инфраструктура — и три отказа от платёжных процессоров подряд. Никто из них не хотел работать с моей моделью оборота Stars. Я узнал об этом, потратив на разработку 30 дней. Если бы я за неделю до начала позвонил в три платёжных процессора и спросил, готовы ли они работать с такой схемой, сэкономил бы месяц.

С TeachTrack валидация произошла сама, без моего ведома. Тот самый бот за вечер два года назад был полноценным MVP. Он решал живую проблему конкретного человека. К моменту, когда я сел делать «настоящий продукт», я уже знал, что фича напоминаний работает и нужна.

Урок отсюда такой: до первой строки кода нужна хотя бы одна история человека, который сказал «да, я бы этим пользовался». Не в общем — «да, идея классная», а конкретно — «я завтра установлю на свой телефон и попробую».

Без этого можно построить технически идеальную штуку, в которой никто не нуждается. Я построил.

Как я реально собираю MVP за 30 дней: пошаговый конвейер

В книжках про MVP обычно пишут «неделя 1 — авторизация, неделя 2 — основная логика, неделя 3 — дизайн». Так у меня не получается. Большая часть работы происходит до первой строки продакшен‑кода — в документах и блок‑схемах. А благодаря AI‑агентам сама реализация занимает уже не недели, а дни.

Ниже — конвейер из девяти этапов, как я его собрал за четыре сезона подряд. На каждом этапе пример из TeachTrack, чтобы было предметно.

Этап 1. Идея и алгоритм в голове

Сначала есть бизнес‑задача в чистом виде. Например: «отправлять каждому ученику напоминание за 30 минут до начала урока».

Дальше в голове провожу мини‑исследование решений:

  • Удобно через Telegram‑бота.

  • Бот пишу на NestJS — мой рабочий стек.

  • Бот по cron раз в минуту проверяет расписание и для уроков, до которых осталось 30 минут, шлёт сообщение в личку привязанному ученику.

Дальше упираюсь в мысль: «а как технически бот напишет ученику». Telegram не разрешает боту писать первым — ученик сам должен нажать /start. Самый простой вариант:

  • Каждый репетитор получает своего персонального бота.

  • Препод присылает ссылку на бота своим ученикам.

  • Ученик запускает /start — препод видит у себя в диалоге со своим ботом, что подключился новый ученик с такими‑то данными.

  • Дальше препод в админке создаёт записи учеников, привязывает к ним занятия, бот сам шлёт напоминания.

Минут за 20 в голове появляется простой работающий MVP‑алгоритм. Edge‑кейсы (несколько часовых поясов, отмены, повторяющиеся занятия) продумываются здесь же.

На этом этапе важно остановиться, когда алгоритм работает, а не когда он идеален. Идеальный алгоритм находится на этапе 7, не раньше.

Этап 2. Алгоритм на бумаге или в виде блок‑схемы

Цель — увидеть придуманное в голове снаружи. Беру Obsidian / любой блокнот / лист А4, рисую блок‑схему: сущности, события, ветвления.

Обычно после этого находятся изъяны: что‑то не сходится математически, есть пробел в логике, забыл какое‑то из состояний пользователя, в общем, проверяю на стандартную схему конечного автомата. Фикшу алгоритм, чтобы он работал без дыр, если требует. Таким образом и получается основная бизнес‑логика будущего приложения.

Если алгоритм совсем простой и в голове умещается без напряжения — можно пропустить рисование. Но если есть хоть какая‑то развилка — рисуйте. Я лично пропускал в первых сезонах, потом возвращался и переделывал.

Этап 3. Брейншторм с AI‑агентом

В Cursor создаю новую папку под проект и закидываю агенту промпт примерно такого содержания:

Делаем такой-то продукт для такой-то аудитории.

Бизнес-задача: ...

Алгоритм работы (см. блок-схему во вложении): ...

Стек: ...

Помоги: 1) пройтись по алгоритму и найти дыры,

        2) задать неудобные вопросы по edge-кейсам,

        3) предложить альтернативы там, где видишь смысл.

Если у вас в Claude Code подключён плагин Superpowers (или аналог) — агент сам подтягивает брейншторм‑флоу и начинает задавать неудобные вопросы. Это тот этап, на котором сам бы я не остановился.

Этап 4. Бизнес‑требования и техническое решение

Когда вместе с агентом дочистили концепцию, прошу его зафиксировать всё в два документа в docs/ репозитория:

  • docs/bizreq.md — бизнес‑требования или БТ: что делаем, для кого, зачем, какие сценарии пользователя, что считается успехом MVP.

  • docs/tech.md — техническое решение или ТР: какой стек, какие сервисы и внешние API, методология по каждой ключевой фиче, и главное — контракты: бэкенд ↔ БД (схемы таблиц, индексы), бэкенд ↔ клиент (endpoint'ы, форматы запросов/ответов), бэкенд ↔ внешние сервисы (Telegram, платёжные процессоры и тому подобное).

Эти два документа — переломный момент конвейера. До них вся инфа была у меня в голове. После них её сможет прочитать любой следующий агент в новой сессии, не теряя контекста.

Уточню: что конечно, у вас в идеале еще должно быть ТЗ — техническое задание, но в процессе реализации своего же проекта из вашей же головы, тем более в такой ужатый срок, думаю это уже излишнее.

Если для кого‑то важно выполнить сторонний заказ, сделать для кого‑то приложение за те же 30 дней, то обязательно составьте техническое задание, так как в голове вы вряд ли удержите весь контекст той идеи, которой вы сами не загорелись изначально.

Очень советую посмотреть вот эти материалы от Диджитализируй. Фундаментальная база:

  1. #1 Покажем, как создаются ИТ продукты с нуля. Идея, разработка ТЗ и прототипов интерфейса. Стартуем!

  2. #2 Разработка схемы работы сервиса, прототипов интерфейса и дизайна

К концу данного этапа в репозитории лежат два (а может и три) структурированных документа, на которые опираются все следующие шаги.

Этап 5. UX/UI через генеративный дизайн

Для дизайна сейчас использую Figma Make (Claude Design тоже умеет, но пока справляется хуже). На входе:

  • два документа из этапа 4,

  • описание целевых сценариев пользователя.

На выходе — готовые JS‑файлы интерфейса (для веба) или продуманные сценарии экранов/кнопок (для бота). Забираю эти файлы в отдельную папку в проекте — например, frontend/generated/.

Работа над TeachTrack дизайном в Figma Make

Работа над TeachTrack дизайном в Figma Make

Для Telegram‑бота отдельного визуального дизайна нет, но есть UX‑сценарий: какие inline‑кнопки в каком состоянии показываются, что появляется, что исчезает, в каком порядке. Это тоже прогоняю через агента — на выходе получаю описание состояний и переходов, которое потом ляжет в код.

TeachTrack - бот напоминания в Telegram, его inline меню

TeachTrack — бот напоминания в Telegram, его inline меню

Этап 6. Реализация одним прогоном

Возвращаюсь к code‑агенту — это уже Claude Code с Opus и плагином Superpowers. На входе у него три источника правды:

1. docs/bizreq.md

2. docs/tech.md

3. Папка с дизайном

Промпт примерно такой: «Реализуй MVP согласно bizreq.md и tech.md, опираясь на дизайн из frontend/generated/. Работай в auto‑режиме, не жалей токенов, поднимай суб‑агентов под подзадачи, делай self‑review между шагами».

Не считаю нужным придумывать здесь супер пупер качественный промпт‑инжиниринг. Лучше потом после первого прогона, исправить какие‑то неточности уже указывая на ошибки.

Дальше Opus идёт прогон за прогоном: пишет → проверяет себя → находит косяк → чинит → переходит дальше. Я подключаюсь смотреть поднятый локально frontend + backend, делаю скриншоты и говорю «вот тут не так», и снова отхожу по своим делам.

На 6-м этапе появляется первый рабочий каркас приложения — обычно к 10–14 дню сезона. Это и есть момент, после которого основная разработка фактически закончена, и дальше идёт уже полировка и маркетинг.

Этап 7. Итерации тестирования

Тестирую сам, потом отдаю на тест первому живому человеку (если он есть). Найденные косяки записываю списком и отдаю агенту на доработку.

Цикл «тест → правка» повторяется 3–5 раз. К концу — рабочий MVP с покрытой основной функциональностью.

Здесь критично подключить живого человека, а не только себя. Один живой пользователь за 30 минут находит больше дыр, чем я за неделю — проверено на каждом из четырёх сезонов.

Этап 8. Финальный ревью кода

Перед тем как раскатывать в прод, прошу агента прогнать три встроенные команды (касается Claude Code, но для Cursor или любого другого агента можно свои кастомные команды создать):

  • review — общий ревью всего выполненного кода;

  • security-review — отдельная проверка на типичные уязвимости: аутентификация, валидация входа, rate‑limit, обработка ПДн;

  • simplify — упрощение по принципам SOLID / KISS / DRY, чтобы потом я, другие разработчики или следующие агенты могли читать код без боли.

Безопасность бэкенда я после этого всё равно прохожу руками. Любые куски, связанные с аутентификацией, rate‑limit, валидацией входа, обработкой ПДн — читаю сам, переписываю по ощущениям, гоняю свои тест‑кейсы. Здесь агенту не доверяю на автопилоте, так как сам бекендер, плюс мне это интересно.

Этап 9. Инфраструктура и деплой

Снова через AI‑агента: Dockerfile, манифесты Kubernetes (или systemd‑юнит на VPS, если масштаб поменьше), CI/CD‑пайплайн на GitHub Actions / GitLab CI, мониторинг через Prometheus + Grafana + Loki.

Раскатываю на сервер. К этому моменту у меня работающий сервис в проде, доступный по домену. К примеру:

  • TeachTrack — лендинг + в целом, всё приложение;

  • TripTrack — здесь я уже отдельный лендинг делал для SEO продвижения. Основное приложение все‑таки было выполнено на SwiftUI.

Если разложить по 4-недельной канве

Неделя

Что происходит

1

Этапы 1–3: бизнес‑идея, алгоритм на бумаге, брейншторм с агентом, проверка концепции вайб‑кодом на быструю руку.

2

Этапы 4–6 (начало): финальные bizreq.md + tech.md, дизайн через Figma Make, старт основной реализации.

3

Этапы 6 (продолжение) — 7: основная реализация и несколько раундов «тест → правка» до рабочего MVP.

4

Этапы 8–9 + маркетинг: ревью кода, деплой, доработка по фидбэку первых живых пользователей, лендинг, SEO, выкладка в App Store / Google Play или приём пользователей через веб.

Когда я после первого прогона с ai‑агентом дал TeachTrack своей девушке‑преподавательнице на тест — она за 30 минут нашла десяток проблем: от багов с часовыми поясами (бот прислал напоминание на 3 часа раньше, потому что я не определял пояс пользователя) до плавающей ошибки кнопки «Попробовать бесплатно», которая срабатывала через раз. Это та самая четвёртая неделя в действии: живой человек за час даёт больше, чем я сам за неделю.

Главное правило поверх конвейера

Если какая‑то фича делается на будущее или на всякий случай, ну вот горит и не выполняет изначальное, главное обещание продукта — её нет в MVP. Она в бэклоге, в плане на потом, в v1.1. Но не в первой версии, которую вы покажете.

В сумме получается, что соло‑разработчик с грамотным AI‑сетапом за месяц без вложений и без команды собирает MVP, который раньше требовал двух‑трёх человек на пару месяцев. У меня это работает уже четыре сезона подряд — и каждый следующий конвейер быстрее, потому что обкатываются документы‑шаблоны, промпты и команды агентов.

Надеюсь у вас будет также и даже лучше!

Стек и инструменты для быстрого запуска

Для LifeTrack и TripTrack я изучал SwiftUI с нуля. Это был осознанный выбор — я хотел в iOS, в свою первую любовь как пользователя, и был готов платить временем на обучение + непонимание как работать с агентами с мобилками.

С TeachTrack я вернулся в свой стек: NestJS, React, PostgreSQL, всё то, в чём я работаю плотно. И разница в скорости была кратной. Здесь уже основная реализация завершилась буквально за первую же неделю. Полторы последних недели сезона я просто занимался маркетингом и даже поболеть успел.

В iOS‑сезонах большая часть времени уходила не на построение продукта, а на разбирательство с фреймворком. Почему этот modifier ломает layout. Почему MapKit не даёт держать tracking mode и одновременно крутить зум камеры. Почему Combine ведёт себя не так, как я ожидал. Да и просто — как вообще правильно отправлять на ревью свое приложение?

В TeachTrack я не думал о фреймворке вообще. Архитектура модулей в NestJS у меня в пальцах. PostgreSQL‑запросы — это просто инструмент. React + TypeScript + Tailwind — каждый день в работе.

Простой вывод: учёба и скорость не совмещаются. Если хотите учиться — закладывайте двойное время и не ставьте себе амбициозных задач по продукту. Если хотите скорость — идите в свой стек.

Я не жалею, что учил SwiftUI два сезона подряд: это долгая инвестиция, и она окупится. Но если бы начинал заново, не пытался бы одновременно учить Swift и держать цель «выпустить в стор за 30 дней». Что‑то одно.

Как я пишу код: Cursor и Claude Code

AI‑инструменты в коде меняются быстро, статьи про них устаревают за месяц. Поэтому коротко — что у меня сейчас и почему.

Сетап: Cursor ($20/мес подписка) для мелких правок и работы с несколькими репо одновременно, Claude Code (у меня по API, выходит $100–200/мес — у Anthropic есть и подписочные тарифы Max) для больших задач, где нужно много контекста и долгий agent‑цикл. Для Claude Code включён плагин Superpowers — набор готовых сценариев под брейнсторм, отладку, тесты.

Когда задача большая и многошаговая — открываю Claude Code, описываю детально, что хочу, гоняю модель в plan mode или даже auto mode (это когда она сначала строит план, потом пишет код). Когда задача мелкая — правлю в Cursor. Это разделение даёт мне предсказуемость по затратам и не мешает фокусу. При этом, пользуюсь Cursor еще затем, что там куда удобнее можно создавать кастомные команды или скиллы под себя. С Claude как по мне делать это не так гибко, он крут уже готовыми решениями от сообщества, чтобы не создавать велосипед.

Один момент я держу всегда перед собой зачем‑то, просто уже на автомате, иногда не знаю оправдано ли: безопасность бэкенда. Любые куски, связанные с аутентификацией, rate‑limit, валидацией входа, обработкой ПДн — читаю руками, переписываю по ощущениям, гоняю свои тест‑кейсы. Здесь я сам себе ревьюер, агенту не делегирую чаще всего.

Если интересна более развёрнутая раскладка по AI‑сетапу — есть отдельный пост в канале. Сюда не пихаю, чтобы не превращать материал в обзор инструментов.

Юридическая часть, про которую все молчат

Дальше — факты моего опыта, без рекомендаций.

iOS‑релизы из России

Я выпускал LifeTrack и TripTrack в App Store с российским аккаунтом разработчика. Аккаунт работает, ревью проходит, приложения публикуются. Но есть один критичный момент: российский аккаунт Apple Developer не может принимать платежи через In‑App Purchase. То есть платная версия, подписки, разовые покупки внутри приложения — недоступны.

Я это сразу принял и оба iOS‑приложения сделал бесплатными. Если в какой‑то момент захочу включить монетизацию — потребуется иностранное юрлицо. Грузия и UAE Freezone — варианты, которые я изучал, но пока не пробовал. Это отдельная история — регистрация компании, банковский счёт, налоговая отчётность в чужой юрисдикции. Вход с порогом, причем денежным, я пока к этому просто не готов, ни морально, ни по кошельку.

Если вы думаете начинать iOS‑проект из России — учитывайте это с самого начала. Если в планах монетизация через IAP — либо закладывайте бюджет и время на иностранное юрлицо, либо принимайте, что монетизация будет внешней (например, через сайт с подпиской и доступом по логину в приложении).

Веб‑сервис с пользователями из РФ

С TeachTrack я пошёл «по‑белому» в российской юрисдикции. Логика простая: продукт для российских преподавателей, инфраструктура в РФ, ПДн обрабатываются на территории РФ согласно ч. 5 ст. 18 152-ФЗ.

Что для этого сделал:

  • Хостинг — Timeweb, всё в РФ‑локации. БД с персональными данными физически в дата‑центре в РФ, первичная запись/обновление ПДн происходят там же.

  • Уведомление оператора ПДн в Роскомнадзор — отправил 2 мая 2026 года. Процедура несложная, делается через Госуслуги для ИП. Главное — корректно описать, какие данные собираете и зачем. Те же самые AI‑агенты вам в помощь.

  • Политика конфиденциальности и пользовательское соглашение — оформил с учётом 152-ФЗ. Шаблоны есть в открытом доступе, под свой случай подгонял сам.

Один технический сюрприз, на котором я потерял день: на Timeweb режутся исходящие запросы к api.telegram.org. Webhook от Telegram приходит нормально, а ответ обратно — ETIMEDOUT. У других хостеров поведение может отличаться (у людей на Selectel/Yandex Cloud это работает), но конкретно у меня выглядело так:

webhook (incoming, ok)

       ────────────────────────────→  TeachTrack backend

   api.telegram.org                   (NestJS, Timeweb RU)

                                              │

                                              │ outbound HTTP

                                              ▼

                                      ✕ ETIMEDOUT (режется хостингом)

Стандартные обходы (polling, разные webhook‑стратегии) не помогают. Local Bot API Server теоретически может работать — если поднять его на той же зарубежной VPS. Тогда из РФ идём к нему, а он уже общается с MTProto. Это рабочий вариант, особенно для больших файлов и долгоживущих соединений. Я выбрал свой минимальный релей — мне нужны были метрики, аутентификация и потенциальная логика per‑bot, без накладных расходов на полный Local Bot API.

Архитектура после фикса:

webhook (incoming)

       ──────────────────→  TeachTrack backend

   api.telegram.org         (NestJS, Timeweb RU)

                                     │

                                     │ outbound HTTP + auth header

                                     ▼

                             tg-relay

                             (DigitalOcean, Frankfurt)

                             stateless proxy

                                     │

                                     ▼

                             api.telegram.org

Релей — короткий Fastify‑сервис. Минимальный рабочий вариант, который покрывает текстовые методы Bot API (sendMessage, editMessageText и тому подобное):

// tg-relay/src/index.ts

import Fastify from 'fastify';

const app = Fastify({

  // важно: не пишем url в access-log, иначе токен бота уедет в логи

  logger: {
  
    level: 'info',
    
    serializers: { req: (r) => ({ method: r.method, host: r.hostname }) },
  
  },

});


const TG_API = 'https://api.telegram.org';

const RELAY_SECRET = process.env.RELAY_SECRET!;

const TIMEOUT_MS = 10_000;

// catch-all: /bot<token>/<method>

app.post('/*', async (req, reply) => {

  // shared-secret заголовок: иначе релей превращается в open proxy к чужим ботам

  if (req.headers['x-relay-auth'] !== RELAY_SECRET) {
    
    return reply.code(401).send({ ok: false, error: 'unauthorized' });

  }

  const ctrl = new AbortController();
  
  const timer = setTimeout(() => ctrl.abort(), TIMEOUT_MS);
  
  try {
  
    const upstream = await fetch(${TG_API}${req.url}, {
    
      method: 'POST',
      
      headers: { 'content-type': 'application/json' },
      
      body: JSON.stringify(req.body ?? {}),
      
      signal: ctrl.signal,
  
    });

    // проксируем как есть — в т.ч. 4xx/5xx от Telegram
    
    const buf = Buffer.from(await upstream.arrayBuffer());
    
    return reply
    
      .code(upstream.status)

      .header('content-type', upstream.headers.get('content-type') ?? 'application/json')

      .send(buf);
    
  } catch (err: any) {
    
    req.log.error({ err: err.message }, 'relay upstream error');
    
    return reply.code(502).send({ ok: false, error: 'upstream_failed' });
    
  } finally {
  
    clearTimeout(timer);
  
  }

});

(async () => {

  try {
  
    await app.listen({ port: 3000, host: '0.0.0.0' });
  
  } catch (err) {
  
    app.log.error(err);
    
    process.exit(1);
  
  }

})();

На стороне бэкенда меняется одна переменная — базовый URL — и добавляется заголовок:

// На бэкенде в РФ

const TG_BASE = process.env.TG_RELAY_URL ?? 'https://api.telegram.org';

await fetch(${TG_BASE}/bot${token}/sendMessage, {

  method: 'POST',
  
  headers: {
  
    'content-type': 'application/json',
    
    'x-relay-auth': process.env.RELAY_SECRET!, // только если идём через релей
    
  },
  
  body: JSON.stringify({ chat_id, text }),

});

Что важно по данным. Через релей проходит только то, что я ему отдаю: chat_id и текст уведомления. Шаблон уведомления у меня нейтральный («Напоминаем: занятие через 30 минут»), без ФИО ученика, без предмета, без других ПДн — этого достаточно, чтобы напоминание сработало. Сами ПДн остаются в PostgreSQL на Timeweb. Я для себя считаю, что в этом контуре трансграничной передачи ПДн нет, но это моя личная трактовка, у юриста не валидировал — если делаете подобное под продакшен с большим потоком пользователей, лучше посоветуйтесь.

Чего в этом сниппете нет (и чего хватит для production‑проекта, но не хватит для статьи): retry на 429 с учётом retry_after, rate‑limit per chat_id, поддержка multipart/form-data для отправки файлов (sendPhoto/sendDocument через стрим, не через JSON), мониторинг в общем Prometheus, systemd‑юнит, Caddy с TLS перед Fastify. Полный продакшен‑разбор лежит в моей предыдущей статье — там код‑под‑нагрузку.

Если для вашего кейса достаточно proxy_pass без логики — задачу решает Caddy в три строки конфига, без своего кода. Я выбрал Node‑сервис именно потому, что хотел потом дописать туда auth‑проверку токена бота, метрики, rate‑limit per chat — для Caddy это уже было бы лишним.

Публичные метрики проекта: Prometheus, Grafana, Loki

Один из побочных эффектов формата Proof of Work — я стараюсь делать процесс прозрачным. Это касается не только постов в канале, но и метрик.

Для TeachTrack я поднял Prometheus + Grafana + Loki + Promtail на той же инфраструктуре, что и сам сервис. Логи, метрики приложения, метрики хостов — всё в одном месте. И отдельный публичный дашборд, доступный всем: stats.teachtrack.ru. Там видны живые цифры — сколько преподавателей зарегистрировано, сколько учеников создано, сколько занятий проведено, сколько напоминаний бот разослал.

Я не планировал это как «фичу для аудитории». Это рабочий инструмент мониторинга, который я делал в первую очередь для себя — без метрик невозможно понимать, что происходит в продукте. Но публичная часть оказалась побочным бонусом: подписчики канала видят рост или его отсутствие в реальном времени. Это работает на доверие сильнее, чем любые слова.

Первые пользователи: что не работает

Этот раздел — самый болезненный для меня лично. Потому что построить продукт за 30 дней — это понятная инженерная задача. Привести в него людей — задача совершенно другого порядка.

Холодные сообщения в Telegram

В сезоне TeachTrack я попробовал самый прямой подход — нашёл тематический канал в Telegram для репетиторов, выписал из него тех, кто пишет про преподавание, и отправил каждому персональное сообщение с предложением попробовать сервис бесплатно.

Цифры за один день:

  • 30 сообщений отправлено

  • 3 ответа «спасибо, не нужно»

  • 2 ответа «интересно, а что от меня нужно?»

  • 1 ответ с предложением партнёрства

  • 24 молчания

И ровно один человек дошёл до регистрации, подтверждения почты и захода в кабинет. Один из 30. Этот один не создал ни одного ученика, ни одного занятия. Конверсия в «активного пользователя» — нулевая. (Сразу оговорка: выборка крошечная, n=30 — это не статистика, а наблюдение, на основе которого я решил поменять подход)

Потом я рассказал об этом своей девушке‑преподавательнице и как она предположила — основная проблема была не в продукте, а в формулировке. Я писал в духе «делаю проект, попробуй бесплатно, не зайдёт — не страшно». В моей голове это звучало как искреннее «без подвоха». Но со стороны читалось как «незнакомый парень в Telegram что‑то бесплатно предлагает».

«Бесплатно от незнакомого» по умолчанию читается как подвох — на холодную в любом мессенджере, не только в РФ. Либо MLM, либо сбор данных, либо новая схема развода. Презумпция подозрения. А подвоха‑то и нет: сервис правда бесплатный, данных я не собираю сверх необходимых. Но логика рассуждения адресата работает не от фактов, а от шаблонов.

Я переписал шаблон сообщения. Добавил явный обмен: попробуйте сервис, взамен прошу один отзыв, размещу на главной странице сайта. Всё. После этого ответы пошли — потому что обмен теперь явный, а не «бесплатный сыр».

Парадокс, который меня правда удивил: бесплатно — даром не надо. А если за что‑то конкретное — пожалуйста. Дело не в деньгах, а в том, что человек должен понимать, что он даёт и что получает. Когда непонятно — мозг лепит ярлык «развод» по умолчанию.

Если делаете холодный аутрич — даже когда вам реально ничего не нужно от собеседника, придумайте явный обмен. Иначе будете получать либо молчание, либо вопрос «в чём подвох».

Второй риск: рассылка 30+ сообщений в день с одного аккаунта почти гарантированно ведёт к временной блокировке в Telegram. Обходил через второй аккаунт, но в долгую так не масштабируется. Холодный аутрич через личку Telegram с одного аккаунта — не масштабируемый канал привлечения. Если делать это серьёзно, нужны прогретые аккаунты, ротации, шаблоны разной длины — а это уже отдельная инженерия, которую соло‑разработчику тащить не хочется. По крайней мере пока, в данный момент.
Кажется есть эффективнее способы настроить маркетинг. Попробую как раз в августе 2026 года, уже совсем скоро.

Email‑верификация как тормоз конверсии

Здесь я понял, как чек‑лист security best practices может убить конверсию.

Я сделал в TeachTrack стандартную регистрацию — email + пароль + подтверждение почты. Без подтверждения email пользователь не мог создавать учеников и занятия. Логично, безопасно, как у всех.

Через две недели после открытия беты залез в админку. К тому моменту в системе скопилось 17 регистраций — пришли с разных каналов: канала OneZee, ссылки в 21 день челленджа из 30, на Хабре, сарафана. И из этих 17 — 11 застряли на этапе «email не подтверждён, 0 учеников, 0 занятий». Почти 65%. Не все потеряны именно на этом шаге, но точно ощутимая часть.

Всего 3 настоящих, активных преподавателя из 16. Получается 13 из них отвалились на этапе верификации email

Всего 3 настоящих, активных преподавателя из 16. Получается 13 из них отвалились на этапе верификации email

Полез в логи — письма уходили нормально. Запрос на повторную отправку приходил. То есть человек открывал почту, видел письмо, переходил по ссылке — и не нажимал кнопку подтверждения на открывшейся странице. Видимо, ожидал, что переход по ссылке = и есть подтверждение, как у многих сервисов.

Параллельно одна преподавательница написала: «зарегалась, не могу подтвердить, даже повторная ссылка не работает». А по логам у неё всё ок — письмо ушло, ссылка валидная, на страницу она перешла. Просто не нажала кнопку.

Решение: убрал email‑верификацию как блокер. Регистрация теперь даёт полный доступ к функционалу сразу. Email‑верификация осталась необязательной — для будущего восстановления пароля. Так, кстати, живут Notion и Vercel — посмотрите, у них первый вход без лишних шагов.

Бонусом починил silent‑баг: раньше повторная отправка письма возвращала «ок», даже если SMTP реально лежал. Пользователь думал «отправили, жду», а ждать было нечего.

Email‑верификация как блокер на регистрации в моём случае была security theater. Бомбинг регистраций я останавливал rate‑limit‑ами на эндпоинте регистрации, защиту от typo в почте можно сделать после первого захода, имперсонация в B2C‑сервисе для одного учителя — несущественный риск. А вот воронку этот блокер реально убивал. «Правильное» решение из чек‑листа оказалось ловушкой для продукта.

Первые пользователи: что (вероятно) работает

«Вероятно» — потому что я в начале этого пути и не могу с уверенностью сказать «вот этот канал работает». Могу только описать то, что попробовал, и что показало признаки жизни.

Технические статьи для SEO. В разгар сезона я написал статью на Хабр про инфраструктуру TeachTrack — релей‑микросервис, Kubernetes‑сетап, дебаг блокировки api.telegram.org. Статья начала индексироваться, на сайт пошёл трафик из поисковиков. Это не быстрый канал — эффект разворачивается за недели, — но это «вечный» актив, который работает в фоне без моего участия.

Один живой пользователь даёт больше, чем custdev в вакууме. Та самая девушка, для которой я когда‑то делал бота, дала мне больше фидбэка за час разговора, чем все мои самостоятельные размышления о продукте за неделю. Качество другое: человек реально пользуется, а не отвечает на гипотетические вопросы.

Опрос аудитории канала про продукты. Подписчики OneZee telegram канала — люди, которые уже интересуются продуктом. Это не случайная выборка с улицы, но качественный сигнал они дают. Опросы среди них помогают понять, какой из моих продуктов больше резонирует, на что обратить внимание.

Каналы, которые я ещё не пробовал, но хочу. Реклама в тематических Telegram‑каналах (если найду каналы для преподавателей с адекватной ценой размещения). Видео‑контент на YouTube и Reels (у меня уже есть план и сценарии). Партнёрства с сервисами для онлайн‑обучения. Это всё гипотезы — буду проверять в следующих сезонах.

Ловушка нового сезона: почему запуск — не финиш

К концу четвёртого сезона у меня в кармане три рабочих продукта: LifeTrack, TripTrack, TeachTrack. Каждый работает, у каждого есть пользователи (от единиц до десятков), у каждого видно, куда расти дальше.

И ровно в этот момент включается голос: «Окей, TeachTrack выпущен. Через пару недель стартую пятый сезон с новым продуктом. У меня уже есть идея — idle‑игра, которую хочу сделать уже пять лет. Поехали».

Вот эта ловушка и собирает коллекцию заброшенных проектов. У меня таких в архиве уже хватает: недозапущенные эксперименты, наполовину готовые MVP, идеи в виде Figma‑макетов. Каждый в момент создания казался важным. Сейчас — мёртвый код в репозитории.

Решение для себя: следующие сезоны Proof of Work будут не про новые продукты, а про маркетинг существующих. Каждый сезон — 30 дней фокуса на одном продукте. Конкретный план: июнь — TripTrack (лето = сезон поездок, выход на англоязычную аудиторию), июль — LifeTrack (редизайн, потом маркетинг), август — TeachTrack (учебный год начинается в сентябре, август — окно «готовлюсь к новому году»).

Цель каждого сезона — не «1000 скачиваний» (это бесполезная по сути метрика для настоящего продукта), а 10 живых пользователей в день, которые открывают приложение и пишут фидбек.

Звучит мало. Но 10 живых пользователей дают больше понимания продукта, чем 10 000 закачек‑однодневок. И только когда у продукта есть стабильное ядро, для меня имеет смысл думать о монетизации. Раньше — гарантированный провал, проверял.

Выпустить продукт — начало работы, а не конец. Я к этому пришёл к четвёртому сезону. Возможно, у вас уйдёт меньше попыток.

Психология сезонов: одно наблюдение, которое не описывают в гайдах

Одно наблюдение про психику, которое повторилось во всех четырёх сезонах и сильно повлияло на план дальше.

После каждого из четырёх сезонов было одно и то же: закрыл проект, выдохнул — и накрыло. Усталость, апатия, ощущение «не знаю, что дальше». Первый раз я думал, что со мной что‑то не так. Сейчас понимаю: это нормальная реакция организма на 30 дней спринта без выходных. Тело так говорит «не запускай следующий марафон в понедельник».

Поэтому в плане на следующие сезоны у меня есть пункт «обязательная неделя паузы между сезонами». Не считаю её потерянной: за эту неделю успеваешь посмотреть на сделанное со стороны, поправить очевидные косяки в продакшене и придумать, что вообще делать в следующем спринте. Раньше я этой паузы не давал — отсюда и кумулятивная усталость к четвёртому сезону.

Зачем вообще устраивать такие марафоны?

В смысле зачем? А ради чего еще каждый день просыпаться? У нас у каждого отведено достаточно мало времени на здоровые моменты, когда мы можем видеть, сидеть на кресле и нажимать на кнопки клавиатуры. Надо пользоваться моментом и пытаться как можно скорее, качественнее при этом создать полезные вещи для себя и общества.

Немного лирики...

Что я бы сделал иначе, начиная сейчас

Если бы я сегодня начинал пятый сезон с нуля, зная всё, что узнал за четыре, вот что было бы по‑другому.

Про продукт:

  1. Не начинать ничего без одного конкретного человека‑пользователя. Stars Marketplace — пример того, как красивая рыночная гипотеза без живого пользователя превращается в технически рабочий продукт, который не может принимать деньги.

  2. Не учить новый стек одновременно с агрессивными сроками. Что‑то одно. Либо учусь и не давлю на скорость, либо иду в свой стек и фигачу.

  3. Никаких подтверждений email на старте. Пользователь попадает в продукт за минуту, верификация добавляется потом, когда понятно, что она действительно нужна.

  4. Делать инфраструктуру наблюдаемости с первого дня. Открытый дашборд с метриками — это не маркетинг, это рабочий инструмент, который сильно ускоряет понимание собственного продукта.

    Про маркетинг и процесс:

  5. Готовить холодный аутрич с явным обменом. Бесплатно в РФ читается как подвох — собеседник должен понимать, что он даёт и что получает.

  6. Не закрывать сезон с мыслью «дальше — новый продукт». После релиза работа только начинается, и продукт без хотя бы 10 живых пользователей — скорее файл в архиве, чем запуск.

  7. Заранее закладывать паузы между сезонами. Послесезонный тильт — не баг моей психики, это нормальная реакция. К ней лучше готовиться.

  8. Не относиться к каждому проекту как к финальной ставке. Stars Marketplace умер — и это нормально. Я узнал из него больше, чем из любой статьи про платёжные системы. Готовность к провалу — нормальное рабочее состояние, не цинизм.

Главный вопрос, на который у меня нет ответа

Если читать всё, что выше, может показаться, что я разобрался. Это не так.

После четырёх сезонов у меня есть три выпущенных продукта и довольно чёткое понимание, как их строить за 30 дней. Чего у меня нет — рабочей системы привлечения первых пользователей в инди‑продукт без бюджета. Холодные DM не масштабируются и ведут к бану аккаунтов на разных соц. площадках. SEO разворачивается за месяцы, а не недели. Реклама в тематических каналах стоит денег, которых у бесплатного продукта по определению нет. Сарафан требует уже существующих пользователей — то есть как раз того, чего у вас нет на старте.

То, что обычно советуют («идите в комьюнити», «делайте контент», «найдите евангелистов»), для русскоязычного B2C/B2B без бюджета работает медленно. Я не нашёл здесь ни одного канала, про который мог бы честно сказать «вот, делайте так — и будут пользователи».

Что буду пробовать в следующих сезонах:

  1. Видео‑контент с механикой пользы. Не «я выпустил продукт, заходите», а короткие практические ролики для конкретной аудитории (например, для репетиторов — «как выставить расписание с нерегулярными уроками в TeachTrack за 3 минуты»). Гипотеза: ролики ранжируются в YouTube/Reels по сути запроса, а не по тому, насколько ты популярен.

  2. Партнёрства с микро‑сообществами. Не покупка рекламы, а обмен: я делаю им бесплатно полезный отчёт/интеграцию/мини‑фичу, они один раз рассказывают про продукт своей аудитории. Гипотеза: 5 точечных партнёрств с малыми, но релевантными аудиториями дают больше, чем одна реклама в большом канале не по теме.

Обе гипотезы спорные, обе могут не сработать. Если у вас есть кейсы — что у вас реально сработало для первых пользователей в РФ без бюджета — расскажите в комментариях. Это мне сейчас интереснее любого технического совета.


Если делаете свой инди‑продукт, надеюсь, что‑то из этого вам пригодится. Хотите следить за процессом дальше — веду канал OneZee, каждый день пишу, что делал по текущему сезону. Сейчас закрыл четвёртый, дальше — серия маркетинговых сезонов: довожу то, что уже сделал, до живых пользователей.

Кстати эту статью с гайдом того, как делать все‑таки свои проекты я также создал так, как пообещал в рамках поста в Telegram канале.

Ссылки на проекты:

Пишите в комментариях, если хочется обсудить какой‑то из разделов глубже — у меня по каждому ещё много деталей, которые в одну статью не влезают. Не хочу увеличивать контекст здесь, поэтому стараюсь максимально кратко и по делу.