Содержание всех статей
Содержание
О чем пойдет речь?
Примерно 11 месяцев назад я начал разрабатывать пет-проект - Telegram чат для сайта. С тех пор и до сегодняшнего дня занимаюсь его разработкой и продвижением самостоятельно. У кого-то хобби open source и сбор звезд на GitHub, у меня хобби в виде своего маленького IT продукта. Правда занимаюсь им в свободное от основной работы время, которого мало.
Недавно проект перешагнул за 100 платящих пользователей в месяц и 100 000 рублей суммарной выручки (именно выручки, всё возвращается в проект, в карман ничего пока не положил). Вложения пока не отбились, но плавно к этому иду.
Хочу рассказать тем, кто тоже работает над своими проектами, как за год я пришел к текущим показателям (что было нелегко). Попробовал структурировать свои мысли, вышло довольного много текста. Текст разбил на статьи, содержание будет в каждой статье.
Кто я?
Senior Full-Stack разработчик (NodeJS + React).
5+ лет коммерческого опыта (работал над приложениями для автоматизации бизнес-процессов, над CRM системами и над e-сommerce решениями).
8+ лет в разработке (начинал с Java, пробовал Android, потом ушел в веб; сейчас стек NodeJS, React и много других популярных названий).
Свободное на проект время: ~10-15 часов в неделю, часто меньше.
Про 8 лет в разработке и 4PDA
Оказалось, что первый мой “опубликованный” проект как раз был выложен 8 лет назад на сайте 4PDA. Это было консольное Android приложение, написанное на Pascal (причем написанное на телефоне в мобильной IDE(!)).
Занималось приложение настройкой эмулятора Windows, чтобы запускать разные древние системы по типу Windows 95 на телефоне. Вот ссылка - https://4pda.to/forum/index.php?showtopic=666450
Почти ностальгическую слезу пустил.
Уточнение. Я сторонник мнения, что Full-Stack разработчик не особо может считаться Senior’ом из-за слишком большого количества технологий.
В моем понимании, Senior Full-Stack - это Middle во всём и сразу (от БД с Docker’ом до оптимизации сайта под Google Page Speed и настройки CSS'a). С серьезным опытом, знанием своих технологий и, в случае недостатка знаний, пониманием, где искать дальше решение для качественного выполнения задачи.
Что за проект?
Telegram Feedback - это чат для сайта. Посетитель пишет в чат на сайте, его сообщения приходят в бот, группу или Telegram канал (смотря куда удобнее). Владелец сайта отвечает в самом Telegram, ответ возвращается пользователю в чат на сайте.
Собственно, чат похож на Jivo-чат (тот чат, который выпрыгивает всё время справа внизу экрана, вы его точно видели, хе-хе). Но немного иначе. Jivo умеет группировать сообщения и с сайта, и из WhatsApp, и из Telegram, и из других каналов связи. У меня же просто чат. Специально не усложняю, а решаю только одну задачу для пользователя.
P.S. Я стараюсь яростно агитировать пользователей не включать “выпрыгивание чата”. Всегда раздражало, поэтому по умолчанию у моего чата это выключено.
Текущие финансовые показатели
На момент написания статьи у меня 105 платящих пользователей (81 ежемесячная подписка, остальные оплачивают помесячно вручную). Количество пользователей с тестовым периодом составляет ~20% относительно платящих пользователей.
![Статистика в панели администратора Статистика в панели администратора](https://habrastorage.org/getpro/habr/upload_files/852/9a5/444/8529a5444229507bb52d8a339f41d611.png)
Итого, выручка:
(290 рублей - 5% (комиссия платежной системы) - 6% (налог ИП)) * 105 (клиентов) = 258 * 105 = 27 090 будет в следующем месяце.
Платежи появились только в сентябре. До этого виджет был бесплатный, так как стояла задача понять, какой именно продукт будет удобен пользователям, а не начать зарабатывать.
...хотя платежи добавил, а зарабатывать не начал...
Пользователи бесплатно пользовались, я платно их изучал и дорабатывал продукт. Платно, потому что пользователи находились через рекламу, а реклама не бесплатная.
Вот показатели платежей через CloudPayments с сентября:
![](https://habrastorage.org/getpro/habr/upload_files/9e8/965/ae7/9e8965ae71ce5f3baee74bc77bc95d8e.png)
Занимательный факт №1: на момент подключения оплаты в сентябре у меня было ~100 активных пользователей. После появления оплаты осталось 30 пользователей.
Вывод №1: активные пользователи и активные платящие пользователи - это две разные группы пользователей с разными конверсиями (что логично).
Занимательный факт №2: пока что вся выручка уходит обратно в проект на покупку рекламы и на развитие SEO. Ни копейки в карман я не положил, а наоборот, на каждую копейку выручки я докладывал не одну из своего кармана в течение года.
Вывод №2: прежде, чем проект станет выгодным или хотя бы не будет требовать активных вложений, должно пройти немало времени. И пока продукт станет удобным, и пока база клиентов накопится. Это и близко не один год. Не рассчитывайте на быстрый доход при создании пет-проекта, ставьте перед собой другие цели.
Системы платежей и чеки
Тут всё просто.
Для приема платежей из РФ использую Cloud Payments (API).
Для приема международных использую Enot Pay (API).
Для отправки чеков (кто не знает, их по закону обязательно отправлять для каждого платежа) использую Cloud Kassir (от Cloud Payments, API).
Откуда приходят пользователи?
Для этого у меня есть наглядная картинка:
![Диаграмма пользователей по источникам привлечения Диаграмма пользователей по источникам привлечения](https://habrastorage.org/getpro/habr/upload_files/4bc/447/703/4bc4477036767b43ccd9fbc4f1518306.png)
В следующих статьях дам пояснение, как собирается эта статистика.
Архитектура и стек технологий
Чат для сайта, по факту, система из нескольких компонентов, которая включает:
Сайт и личный кабинет пользователя (с требованием к хорошему SEO)
Технологии: TypeScript, NextJS (серверный рендеринг), React, кластерный режим для NextJS, Bootstrap 4
Виджет для сайта (js скрипт, который устанавливают на сайты пользователей)
Технологии: TypeScript, PreactJS (весит ~3Kb, обычный React слишком жирный для виджета), SocketIOАдминка с аналитикой и менеджментом пользователей (исторически сложилось, что это отдельный фронт)
Технологии: TypeScript, React, Bootstrap 4Серверная часть с API и сокетами
Технологии: TypeScript, NodeJS + NestJS, SocketIO, PM2 (менеджмент процессов), Jest (unit тесты) + Supertest (E2E тесты)База данных
PostgreSQL 14Брокер сообщений и key-value хранилище:
RedisПрокси-сервер (чтобы собрать все компоненты системы выше в единое целое)
Nginx (классика)
Контейнеры
Docker + Docker Compose
Дополнительно:
Сервер
От FirstVDS (не реклама). Мощные и дешевые сервера.
Ubuntu 20.04 + XFCE (совсем неудобно делать запросы через консоль без UI, с PgAdmin удобнее, поэтому поставил графическую оболочку спустя полгода развития проекта).
В лимит вертикального масштабирования по производительности я упрусь нескоро. Скорее всего, ресурс памяти под БД исчерпается быстрее, чем пропускная способность канала или производительность сервера (лимит для текущего VDS - Xeon Gold 5115 x 128 CPU и RAM DDR4 512 Гб).
Для момента, когда я все-таки упрусь в лимит и будет нужно горизонтально масштабироваться, посматриваю на сервера (или даже выделенные места) от Selectel. Давно хотел у них что-нибудь запустить, но всё ничего не подворачивалось.
DDOS-защита
DDOS-Guard. Недорого, удобно. В дополнение к глобальной защите, есть “локальная” защита на уровне Nginx и на уровне API. Срабатывает чуть быстрее в некритичных случаях.
Чтобы никто не пытался забить память автоматическими сообщениями, картинками, XSS и т.д, внутри самого приложения тоже много разных защит. Почему-то желающие были, об этом расскажу в деталях позже.Каптча
Яндекс Каптча. Под мои задачи сейчас бесплатно, потом станет недорого.Резервные копии
Делаются несколько раз в день стандартными средствами от FirstVDS + pg_dump + zip.
Я провожу проверку восстановления проекта из резервной копии минимум раз в месяц. В случае какой-либо критичной проблемы проект пропадёт минимум на час, максимум на день (в случае, если нужно устранять уязвимость).
Администраторы делятся на две категории: те, кто еще не делает бекапы и те, кто уже делает.
(c) Народная мудрость
Любой сервер падает. Главное поднять его, пока никто не заметил.
(с) Народная мудрость
Причем тут БДСМ студия?
Еще один занимательный факт.
Когда я запустил первую версию виджета и дал рекламу через Яндекс.Директ, первым пользователем была БДСМ студия в Иркутске ?. Ради интереса нашел их сайт в базе - до сих пор пользуются. Вначале даже попросили сделать открытие виджета по JavaScript событию.
Топ-3 странных сайта составлю в следующей статье. Интересные были, БДСМ студия не самое нестандартное. Я давно отключил уведомления для каждого подключенного сайта, так что рейтинг будет только за первые несколько месяцев работы виджета.
Предыдущий опыт
До Telegram Feedback у меня были попытки запускать свои IT пет-проекты с намеком на платящих пользователей. Правда, проект безуспешные и я давно их закрыл.
Woodle Auto - CRM система и система онлайн записи для автосервисов. Разрабатывал года полтора (долго, так как времени свободного за рамками основной работы было не так много).
Вложил довольно много за этот период, а заработал… 1 450 рублей. Зато сколько опыта на тему исследования рынка, пользователей и маркетинга.
Woodle Search - разрабатывал полтора месяца. Вложил ~60 000 рублей, заработал ~5 000 рублей. Потом случилось 24 февраля, Google Maps ушли из РФ и на проект я забил. Да и откровенно не до него было тогда. Тогда-то мысли в кучу собрать, а не о пет-проектах думать.
Заключение
Это был очень краткий обзор того, что есть сейчас. Дальше расскажу, как появилась идея и как выглядела первая версия проекта.