Содержание
О чем пойдет речь?
Кто я?
Что за проект?
Текущие финансовые показатели
Системы платежей и чеки
Откуда приходят пользователи?
Архитектура и стек технологий
Причем тут БДСМ студия?
Предыдущий опыт
Заключение
О чем пойдет речь?
(статья архивная с марта в этого года, переопубликовываю на здесь)
Примерно 11 месяцев назад я начал разрабатывать пет-проект — чат для сайта с поддержкой Telegram КликЧат. С тех пор и до сегодняшнего дня занимаюсь его разработкой и продвижением самостоятельно. Правда занимаюсь им в свободное от основной работы время, которого мало.
Недавно проект перешагнул за 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 канал (смотря куда удобнее). Владелец сайта отвечает в самом Telegram, ответ возвращается пользователю в чат на сайте.
Картинка с сайта
Собственно, чат похож на Jivo-чат (тот чат, который всё время выпрыгивает справа внизу экрана, вы его точно видели, хе-хе) . Но немного иначе. Jivo умеет группировать сообщения и с сайта, и из WhatsApp, и из Telegram, и из других каналов связи. У меня же просто чат. Специально не усложняю, а решаю только одну задачу для пользователя.
P. S. Я стараюсь яростно агитировать пользователей не включать “выпрыгивание чата”. Всегда раздражало, поэтому по умолчанию у моего чата это выключено.
Текущие финансовые показатели
На момент написания статьи у меня 105 платящих пользователей (81 ежемесячная подписка, остальные оплачивают помесячно вручную) . Количество пользователей с тестовым периодом составляет ~20% относительно платящих пользователей.
Статистика в панели администратора
Итого, выручка:
(290 рублей — 5% (комиссия платежной системы) — 6% (налог ИП)) 105 (клиентов) = 258 105 = 27 090 будет в следующем месяце.
Платежи появились только в сентябре. До этого виджет был бесплатный, так как стояла задача понять, какой именно продукт будет удобен пользователям, а не начать зарабатывать.
…хотя платежи добавил, а зарабатывать не начал…
Пользователи бесплатно пользовались, я платно их изучал и дорабатывал продукт. Платно, потому что пользователи находились через рекламу, а реклама не бесплатная.
Вот показатели платежей через CloudPayments с сентября:
Занимательный факт № 1: на момент подключения оплаты в сентябре у меня было ~100 активных пользователей. После появления оплаты осталось 30 пользователей.
Вывод №1: активные пользователи и активные платящие пользователи — это две разные группы пользователей с разными конверсиями (что логично).
Занимательный факт №2: пока что вся выручка уходит обратно в проект на покупку рекламы и на развитие SEO. Ни копейки в карман я не положил, а наоборот, на каждую копейку выручки я докладывал не одну из своего кармана в течение года.
Вывод №2: прежде, чем проект станет выгодным или хотя бы не будет требовать активных вложений, должно пройти немало времени. И пока продукт станет удобным, и пока база клиентов накопится. Это и близко не один год. Не рассчитывайте на быстрый доход при создании пет-проекта, ставьте перед собой другие цели.
Системы платежей и чеки
Тут всё просто.
Для приема платежей из РФ использую Cloud Payments (API) .
Для приема международных использую Enot Pay (API) .
Для отправки чеков (кто не знает, их по закону обязательно отправлять для каждого платежа) использую Cloud Kassir (от Cloud Payments, API) .
Откуда приходят пользователи?
Для этого у меня есть наглядная картинка:
Диаграмма пользователей по источникам привлечения
В следующих статьях дам пояснение, как собирается эта статистика.
Архитектура и стек технологий
Чат для сайта, по факту, система из нескольких компонентов, которая включает:
Сайт и личный кабинет пользователя (с требованием к хорошему 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.
Я провожу проверку восстановления проекта из резервной копии минимум раз в месяц. В случае какой-либо критичной проблемы проект пропадёт минимум на час, максимум на день (в случае, если нужно устранять уязвимость).
Администраторы делятся на две категории: те, кто еще не делает бекапы и те, кто уже делает.© Народная мудрость
Любой сервер падает. Главное поднять его, пока никто не заметил.(с) Народная мудрость
Причем тут БДСМ студия?
Еще один занимательный факт.Когда я запустил первую версию виджета и дал рекламу через Яндекс.Директ, первым пользователем была БДСМ студия в Иркутске 🙂. Ради интереса нашел их сайт в базе — до сих пор пользуются. Вначале даже попросили сделать открытие виджета по JavaScript событию.
Топ-3 странных сайта составлю в следующей статье. Интересные были, БДСМ студия не самое нестандартное. Я давно отключил уведомления для каждого подключенного сайта, так что рейтинг будет только за первые несколько месяцев работы виджета.
Предыдущий опыт
До КликЧат'a у меня были попытки запускать свои пет-IT проекты с намеком на платящих пользователей. Правда, проект безуспешные и я давно их закрыл.
Woodle Auto — CRM система и система онлайн записи для автосервисов. Разрабатывал года полтора (долго, так как времени свободного за рамками основной работы было не так много).Вложил довольно много за этот период, а заработал… 1 450 рублей. Зато сколько опыта на тему исследования рынка, пользователей и маркетинга.
Woodle Search — разрабатывал полтора месяца. Вложил ~60 000 рублей, заработал ~5 000 рублей. Потом случилось 24 февраля, Google Maps ушли из РФ и на проект я забил. Да и откровенно не до него было тогда. Тогда-то мысли в кучу собрать, а не о пет-проектах думать.
Заключение
Это был очень краткий обзор того, что есть сейчас. Дальше расскажу, как появилась идея и как выглядела первая версия проекта.
Начать дискуссию