Кроссплатформенная разработка
NativePHP: создать невозможное и заработать $100 тыс. за первые три месяца
У нас есть большие идеи. Наша следующая цель — 500 тысяч долларов.
Саймон Хэмп создал то, о чем никто не думал — NativePHP, который позволяет разработчикам создавать десктопные и мобильные приложения на PHP.
Запустив мобильную версию три месяца назад, он уже заработал 100 тысяч долларов.
Саймон рассказывает, как ему это удалось.
Не делать «правильных» вещей
В конце 2022 года я добровольно уволился из стартапа — не моего — в который я вкладывал свои силы почти шесть лет. Так я перешел от разумной, регулярной зарплаты к отсутствию дохода и у меня оставались деньги всего на несколько месяцев жизни.
Поэтому я судорожно пытался найти клиентов для фриланса. У меня не было ни сбережений, ни постоянного дохода… Но вместо того, чтобы заниматься «правильными» вещами, я решил наконец попробовать идею, которую вынашивал годами.
Во время работы в стартапе я увидел в Twitter участника сообщества Laravel Марселя Посиота пост о создании портативных терминальных приложений с помощью Laravel — представьте, я могу написать PHP-приложение, которое я могу отправить кому-то другому, и без всяких настроек он может просто запустить его.
Я работаю с PHP уже очень давно — всю свою карьеру — и всегда хотел иметь возможность писать на нем распространяемые приложения.
В центре внимания
В 2023 году я собрал proof of concept, используя статически скомпилированную версию PHP и оболочку Tauri, и заставил ее запустить полноценный Laravel; не просто TUI, а полноценное веб-приложение.
Я написал об этом в Twitter. На тот момент у меня было, наверное, около 1000 подписчиков.
Каким-то образом Марсель заметил это и предложил сотрудничество.
NativePHP появился на свет пару месяцев спустя — это библиотека, которая позволяла любому человеку, владеющему Laravel и PHP, создавать десктопные приложения без необходимости изучать новые инструменты или языки. Марсель сменил тему своего выступления на Laracon US (крупнейшая конференция для разработчиков Laravel), анонсировав NativePHP миру из Нэшвилла, штат Теннесси, перед тысячей разработчиков Laravel. Осмелюсь сказать, что он стал центром внимания.
Но одним из самых первых и самых настойчивых вопросов сообщества был следующий: когда появится поддержка мобильных устройств?
Разжигая огонь
NativePHP действительно предназначался только для создания приложений для настольных компьютеров. И хотя мы мечтали о том, чтобы заставить его работать для мобильных устройств, мы никогда не верили, что это действительно возможно сделать или что он пройдет проверку в App Store от Apple, которая представляет собой нечто вроде черного ящика и может стать ограничителем.
Но в прошлом году, изучая различные POC для десктопной версии, я наткнулся на способ запуска веб-приложений PHP без веб-сервера — большинство разработчиков говорят, что для запуска PHP нужен веб-сервер, но это не совсем так.
Когда я разобрался с этим, я подумал: «Остальное легко». Я подался на несколько выступлений на различных конференциях под названием «Создание мобильных приложений с помощью PHP», а затем сел поудобнее. Я планировал использовать любое приглашение выступить как стимул для доработки проекта.
Шли месяцы. Я уже несколько раз подавал заявки на выступление на конференциях, но меня ни разу не принимали. Я решил, что эта идея слишком причудлива, чтобы увидеть свет. Но потом, в конце октября 2024 года, организатор Laracon EU связался со мной и сказал, что им понравился мой доклад и они хотят узнать, свободен ли я еще для выступления.
Конечно, я ответил «да», но это означало, что у меня было всего два месяца на доработку техники и написание доклада.
Так что я с головой ушел в работу. Каждый день я вставал в 6 утра, а в некоторые дни не ложился спать до 2 или 3 часов ночи. Я дорабатывал свой доклад, работал над клиентскими проектами, а также пытался разгадать самые важные части этой головоломки:
- Как заставить PHP работать на iOS?
- Как заставить PHP-код общаться с нативными функциями?
- Одобрит ли Apple приложение, созданное таким образом?
Короче говоря, в феврале я запустил NativePHP для мобильных устройств. За последние 3 месяца он заработал более 100 тысяч долларов.
Слава компиляции
NativePHP for Mobile опирается на множество технологий, но на высоком уровне это:
- C — это то, на чем построен PHP. Чтобы PHP мог работать с нативными функциями, мы создали кастомные расширения на C, которые могут напрямую вызывать нативные функции Swift и Java. Затем PHP-код вызывает нативную функцию напрямую.
- Хотя мы сделали так, что разработчикам PHP не нужно думать о Swift или Kotlin/Java для создания своих приложений, нам все равно приходится писать связующий код и создавать функциональность на стороне приложения на этих языках.
- Там также есть PHP-код, который мы используем, чтобы обернуть все и сделать его знакомым. На самом деле, NativePHP for Mobile поставляется в виде Composer-пакета, который устанавливается в приложение Laravel. Так что в инструментарии разработчика Laravel он чувствует себя как дома.
Когда-нибудь мы будем поддерживать и другие PHP-фреймворки, но сейчас мы сосредоточены на Laravel, поскольку это самый популярный фреймворк для веб-приложений на планете.
Многослойные технологии создают множество проблем, но самая большая из них — компиляция PHP. Он отличается для обеих платформ, iOS и Android, и требует нескольких раундов компиляции. Компиляция программного обеспечения часто занимает много минут, а когда вы пытаетесь делать такие странные новые вещи, как эта, вы в конечном итоге компилируете проект снова и снова, запуская сборки сотни, а то и тысячи раз.
Это отнимает много времени и часто разочаровывает. Но когда все наконец компилируется и работает, это просто великолепно.
Лицензии «делаем много, выпускаем одно»
NativePHP for Mobile зарабатывает на продаже лицензий. В настоящее время это единственный источник дохода.
Лицензия предоставляет покупателям доступ к пакету, который они могут установить через Composer, и дает им право создавать столько приложений, сколько они захотят. Но в зависимости от уровня лицензии, которую они приобретают, им может быть разрешено распространять только одно приложение.
Я называю это лицензией «делаем много, выпускаем одно». Вы можете купить 10 лицензий со скидкой или приобрести максимальную лицензию и получить неограниченное количество лицензий.
Мы также предлагаем лицензии со значительной скидкой во время так называемой программы раннего доступа (EAP). Мы не хотели использовать «альфа-версию» или даже «бета-версию» программного обеспечения — то, что мы создали, уже готово, стабильно и работает: вы можете выпускать приложения с ним уже сегодня, и люди уже делают это! Но мы знаем, что оно не на 100% завершено.
Честно говоря, возможно, проект никогда и не будет завершен, но для тех, кто хочет получить доступ к нему раньше, цены сильно снижены. Обычные цены вступят в силу 1 июня.
Я начал взимать плату еще до того, как все было готово. Я пытался использовать оплату как способ определить восприятие ценности другими людьми. Это эксперимент. Если люди платят, значит, они ценят это.
Пока что этот эксперимент был очень успешным. Мы узнали, что сотни разработчиков и команд готовы платить за подобный инструмент.
Но мы не знаем, сколько они готовы заплатить. Поэтому мы должны продолжать экспериментировать. Но мы также знаем, что делать это нужно осторожно. Меняя цены каждые 5 минут, мы не приобретем друзей.
На данный момент мы зарабатываем около 50 тысяч долларов в месяц.
Создание условий для роста
NativePHP существовал уже почти два года, когда я начал публично рассказывать о своей работе над мобильной частью.
Хотя NativePHP for Desktop (как он теперь называется) ни в коем случае нельзя назвать большим, у него появилось сообщество, преданная группа участников, а также общая осведомленность в сообществе и устойчивый интерес. В течение некоторого времени я вел аккаунты в социальных сетях под именем проекта, наращивая аудиторию. Дискорд недавно перевалил за тысячу подписчиков.
Так что я смог использовать многое из этого.
Я также начал составлять список рассылки, собирая адреса электронной почты через сайт.
Я запустил проект в Twitter еще до того, как он был готов, объявив о своем раннем доступе для тех, кто спонсировал его через GitHub. Это заинтересовало нескольких человек. В основном, люди, которые заплатили за доступ к этому, были теми, кто уже умолял нас поддержать мобильную версию.
Все это было преддверием к моему выступлению на конференции.
Анонс на конференции
Я люблю хорошие технические доклады на конференциях, а также рассказы о софт-скилах, но ничто не сравнится с отличной демонстрацией продукта и потрясающим анонсом. Моим главным открытием в этот день стало то, что Apple одобрила мое первое приложение для iPhone, которое, таким образом, стало первым, созданным на Laravel и PHP.
Приложение, которое я выпустил, довольно простое, и, честно говоря, в нем есть несколько ошибок. Я бы хотел найти время, чтобы пересмотреть его. Может быть, когда-нибудь. Тем не менее, оно выполнило свою задачу, утвердив NativePHP for Mobile как жизнеспособный способ создания и распространения мобильных приложений, на который я могу с полным основанием указывать как на окончательный пример.
И в моем докладе мне было очень важно продемонстрировать написание реального кода и компиляцию приложения в режиме реального времени. Это заняло на несколько минут больше времени, чем я предполагал, но оно того стоило. Многие люди говорили мне после выступления, что не могут поверить, что я пошел на live-coding и компиляцию на сцене во время своего первого выступления. Очень рискованно, но оно того стоило!
Деньги для разработчиков
Еще одна вещь, которую я хотел сделать, — это вернуть деньги сообществу. Оказывается, сообщества разработчиков любят, когда им подкидывают деньги! Кто бы мог подумать, что покупка еды и напитков на митапах с разработчиками, которые являются вашей целевой аудиторией, может быть таким невероятным преимуществом? Очевидно, что организаторам это нравится, но это определенно так же выливается в продажи.
Это дало нам возможность хотя бы на несколько минут пообщаться с такими группами — часто через Zoom, но иногда и лично. Я думаю, что это придает более человеческое измерение тому, что мы здесь делаем, и помогает сообществу общаться с нами. Мне это нравится, и я хочу продолжать в том же духе.
Мы не брали на себя никаких твердых обязательств относительно того, сколько мы потратим на это. Все произошло очень органично, но мы уже потратили почти 10% нашего валового дохода на то, чтобы разными способами помогать обществу. Отдача от этого в значительной степени не поддается оценке, но меня это не волнует. Пока мы можем продолжать это делать, мы будем это делать.
Это включает в себя оплату мест в известных подкастах сообщества и спонсирование различных проектов с открытым исходным кодом и контрибьюторов, инструментов, которые использует наша целевая аудитория.
Одним из особенно хороших каналов для нас стал Laravel News, который ведет давний член сообщества Эрик Барнс.
Борьба с конкурентами
У нас есть жесткая «конкуренция» в виде полностью бесплатных библиотек с открытым исходным кодом, таких как React Native и Flutter. Конечно, их спонсируют крупные, известные корпорации с большими командами гораздо более опытных инженеров и еще большими бюджетами.
Я так говорю «конкуренты», потому что на самом деле они вовсе не конкуренты. Во-первых, мы любим все эти альтернативные технологии и призываем всех изучать их и пробовать. Как и у всех инструментов, у них есть свои хорошие и не очень хорошие стороны.
Но, во-вторых, ни один из них не обслуживает сообщество PHP напрямую. Таким образом, у нас остается небольшой пробел, который мы можем заполнить. Мы занимаем уникальную позицию единственного продукта на действительно огромном рынке. Представьте себе, что практически в одночасье каждый PHP-разработчик может создавать мобильные приложения, добавляя этот новый набор навыков практически без усилий с его стороны.
Там, где другие поставщики пишут инструмент, который требует, чтобы все приходили к ним, мы строим мост от одного набора навыков к другому, не заставляя всех этих людей изучать совершенно новый язык, цепочку инструментов или экосистему.
Но все равно трудно видеть людей, которые открыто говорят: «Зачем мне платить за это, если я могу использовать x бесплатно?».
Мы должны ориентироваться на это, потому что, если это оставить без внимания, это может оставить довольно негативное отношение к продукту. Когда другие люди видят подобные сообщения, просто висящие без внимания, это может создать впечатление, что нам все равно или мы не знаем, как реагировать на такие сообщения.
Когда я отвечаю на такие комментарии, я стараюсь быть объективным и безэмоциональным. Некоторые из них, безусловно, задевают меня за живое. Но если мне удастся сдержать свой ответ, я, возможно, завоюю клиента. В худшем случае я могу заставить кого-то задуматься.
Основные выводы
Многие из этих советов взяты из других мест, но я не могу вспомнить все ссылки. Кроме того, я буду ужасно неправильно цитировать людей, так что заранее прошу прощения!
- Делайте то, что не масштабируется. Вам не нужны идеальные процессы для каждой мелочи. Сейчас я вручную обрабатываю рефанды и апгрейды. Когда понадобится, мы перейдем на что-то более автоматизированное.
- Выпускайте раньше. Вам просто нужно что-то выпустить. Не стоит сидеть над созданием продукта месяцами, прежде чем показать его людям. Он не должен быть законченным или идеальным, он просто должен решить некоторые проблемы, которые помогут другим людям сэкономить время, деньги или и то, и другое.
- Итерируйте.
- Не бойтесь брать деньги. Не усложняйте. Создайте что-то, что позволит вам принимать платежи, и делайте это скорее раньше, чем позже. Даже если это полностью ручная работа, например, выставление счетов и получение переводов на банковский счет компании, дайте людям возможность заплатить.
- Не мучайтесь над ценой. Попытайтесь поставить себя на место вашего целевого клиента и определите реалистичную цену, которую вы готовы заплатить. Помните, что цена влияет на всех по-разному. Некоторые люди будут недовольны, какой бы ни была цена. Те, кто поддерживает вас, скорее всего, будут поощрять вас устанавливать более высокую цену. Вероятно, вам следует остановиться на более высокой цене.
- Используйте искусственный интеллект. Двигайтесь быстрее. Оставайтесь гибкими дольше. Но не забывайте о всех практиках «здорового образа жизни» в программном обеспечении — понимайте, что вы развертываете, тестируйте, вычитывайте.
- Проверяйте, прежде чем создавать. Поделитесь этим со своей аудиторией. Не с бабушкой, не с соседом… если только они не являются вашими целевыми клиентами. Если у вас нет людей, с которыми вы можете поделиться этим в первую очередь, остановитесь. Найдите этих людей, прежде чем двигаться дальше.
- Не отказывайтесь от основной работы! Постоянный доход стоит работы по ночам. Я не говорю, что мы должны праздновать это — было бы лучше, если бы экономика системы позволяла нам всем заниматься интересными проектами, — но иногда нужно просто тратить время на достижение своих целей.
- Не создавайте все подряд и не изобретайте колесо заново. Сосредоточьтесь на ваших инновациях. Используйте существующие инструменты, чтобы направить свою энергию на создание особенного и уникального предложения, которое вы должны создать. Почти все остальное — это отвлечение и промедление.
- Не втягивайтесь в социальные сети. Это поглотитель времени, который может убить вашу продуктивность и психическое благополучие. Поделитесь информацией и переходите дальше. Не поддавайтесь желанию заходить и обновлять ленту каждые 5 секунд. Ожидание очередных лайков, фоловеров, шарингов или ответов, которые не приходят, разрушают ваш моральный дух. Однако извлеките из этого урок. Если вовлеченность не наступает, это может означать, что что-то не так. Не тратьте время на то, чтобы запрягать мертвую лошадь.
- Не платите за то, что вам не нужно. Можете ли вы обойтись без Slack? Действительно ли вам сейчас нужны Linear и Zendesk?
- Не мешкайте. Примите решение, выполните его и продолжайте двигаться вперед. Если вам трудно принять решение, поговорите с кем-нибудь. Получите совет. Спросите у ChatGPT!
- Партнерьтесь. Шейн, мой соучредитель, невероятный. Он полон позитивной энергии и мудрости. Мы отлично уравновешиваем друг друга. Он очень целеустремленный человек и обладает очень активным подходом. Без его участия проект буквально не случился бы.
Что дальше?
У нас есть большие идеи. Наша следующая цель — 500 тысяч долларов. Я думаю, что сейчас путь к ней лежит через реализацию некоторых ключевых функций продукта, таких как In-App Purchases и обновления приложений по воздуху (OTA).
Некоторые из целей потребуют дополнительных инструментов, которые мы планируем предлагать по подписке. Это увеличит доход от лицензий, а также поможет нам перейти от ежегодного «возможно повторяющегося» дохода к более традиционному для SaaS MRR-доходу.
Лично для меня следующим важным этапом является переход на полную ставку на NativePHP. Я нахожусь в нескольких неделях от этого. Тогда мы действительно сможем начать двигаться и делать все то, что хотят от нас люди.
Самое большое неизвестное для нас сейчас — это то, как изменение цены в конце нашего EAP повлияет на доход. На данный момент кажется, что все может пойти в любую сторону.
Вы можете следить за развитием событий на NativePHP.com/mobile и на нашем сайте X. А вот мой X и X Шейна.
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.22
-
Новости2 недели назад
Видео и подкасты о мобильной разработке 2025.24
-
Вовлечение пользователей4 недели назад
Небольшое изменение в интерфейсе Duolingo, которое меняет все
-
Маркетинг и монетизация4 недели назад
Институциональные покупки: понимание и обнаружение