Захотел платформу записи к экспертам. Calendly, только «под российский рынок». Что это значит, я не знал. Юристы, психологи, консультанты, коучи. Человек ставит слоты, другой бронирует. Казалось, дыра очевидна.
Назвал это expert-booking.ru. Взял TypeScript full-stack, знакомый молоток: Node.js, Express, React 18, Vite, PostgreSQL, Knex, Docker, заглушка под ЮKassa, на фронте Feature-Sliced Design.
Первая очередь
Код рос. Платформа для людей, которых я ещё не встретил, получилась полной.
Бэкенд около 1 600 строк: 14 миграций, 12 модулей API, JWT с ролями client, expert, admin, заглушка оплаты.
Фронт около 31 000 строк: админка с аналитикой, календарь эксперта, брони с подтверждением оплаты, ESLint на границы слоёв, Tailwind.
Инфраструктура: Docker Compose, Nginx, SSL, скрипты деплоя, Redis под сессии.
Технически можно было запускать. Рядом лежала маркетинговая стратегия на 21 страницу: ₽1 млн в месяц через 18 месяцев, четыре этапа, на четвёртом уже AI, потому что 2024-й. Документ не читал никто, кроме меня.
Завис не на коде. На первых двадцати экспертах. Кому продавать, чем снимать с живого Calendly или телеграм-бота, какую боль я вообще закрываю. План покорения Эвереста был готов. Из дома я не выходил.
32 600 строк и 21 страница текста под людей, с которыми я не поговорил ни разу.
Вторая очередь, уже на Python
Через несколько месяцев решил, что теперь иначе. FastAPI вместо Node: молоток снова был привычный. Имя короче, slot-me.ru. Сначала три-пять живых людей, потом код.
С несколькими знакомыми экспертами я и правда поговорил: чем пишут запись, где трёт, сколько готовы платить, сядут ли в новый сервис на этой неделе.
Потом снова ушёл в код. Не на неделю. На месяцы. Не MVP, а production.
FastAPI, 196 тестов, покрытие 56%. React и снова FSD. 27 миграций. OAuth через Google и Яндекс. Google Calendar и Яндекс.Календарь. Письма через SMTP и SendGrid. Напоминания на APScheduler. CI/CD, Nginx, Sentry.
Одиннадцать этапов из одиннадцати закрыты. Пользователей готово ноль.
Дело было даже не в деньгах. Хотелось выложить в интернет что-то своё и увидеть, что могу. Вместо гипотезы «людям это нужно» стоял челлендж «соберу без легаси».
Это было неплохое развлечение. Factorio, только коммиты настоящие: другой стек, два провайдера OAuth, 196 тестов, 11 технических документов, бэкапы, health check. Игру я назвал стартапом.
Где светло
В первом проекте бэкенд на 1 600 строк ещё похож на MVP. Фронт на 31 000 уже нет.
До первого пользователя я успел: жёсткую валидацию слоёв FSD для команды, которой нет; запрет deep import для себя одного; админку с графиками на нулях; UTM и кампании, чтобы мерить трафик, которого нет; рефералку, чтобы нулевые пользователи приводили таких же.
Аэропорт в пустыне. Жду, когда сами сядут самолёты.
Код это зона контроля. Разговор с незнакомым человеком нет. Я искал там, где светло, не там, где потерял.
Sentry смотрит тишину
slot-me сейчас в production. Тесты зелёные, 196 из 196. CI/CD везёт. Sentry дежурит у тишины. Живых пользователей ноль. Периодически логинюсь сам, проверить, что дом ещё стоит.
Система напоминаний аккуратно шлёт письма за 24 часа, за час и за 15 минут до встречи. Встреч нет. Она напоминает пустоте о пустоте.
OAuth в один клик. Кликать некому. Красивая дверь в пустой дом.
Одиннадцать документов по архитектуре, деплою, мониторингу. Единственный читатель я, когда забываю, как это устроено.
Фичи, которые я записывал как «запросы пользователей», я придумал сам. Напоминания, дашборды, календари. Мои гипотезы о чужой боли.
Как у врача есть кладбище, у разработчика тоже есть. Эти двое не умерли от плохой архитектуры. Они умерли, потому что в них никто не зашёл.
expert-booking.ru лежит. 32 600 строк, 21 страница стратегии, ноль людей. Эпитафия: идеальная архитектура для отсутствующего продукта.
slot-me технически жив. Можно оставить в портфолио биркой «песочница» и перестать путать игру с кассой. Можно найти первого человека с именем, телефоном и своей дырой, не персону 28-45 лет с доходом ₽80 000. Если вы эксперт и вам правда нужна запись, напишите.


