<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Проекты &#8212; Николай Павельев</title>
	<atom:link href="https://pavelev.app/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>https://pavelev.app</link>
	<description>Предприниматель в AI &#124; Программист 20 лет</description>
	<lastBuildDate>Sat, 16 Nov 2024 22:02:25 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://pavelev.app/wp-content/uploads/2024/10/photo_2023-06-30_02-36-48-150x150.jpg</url>
	<title>Проекты &#8212; Николай Павельев</title>
	<link>https://pavelev.app</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Джарвис &#8212; мощный ИИ для программиста</title>
		<link>https://pavelev.app/%d0%b4%d0%b6%d0%b0%d1%80%d0%b2%d0%b8%d1%81-%d0%bc%d0%be%d1%89%d0%bd%d1%8b%d0%b9-%d0%b8%d0%b8-%d0%b4%d0%bb%d1%8f-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0-81/</link>
					<comments>https://pavelev.app/%d0%b4%d0%b6%d0%b0%d1%80%d0%b2%d0%b8%d1%81-%d0%bc%d0%be%d1%89%d0%bd%d1%8b%d0%b9-%d0%b8%d0%b8-%d0%b4%d0%bb%d1%8f-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0-81/#respond</comments>
		
		<dc:creator><![CDATA[Николай Павельев]]></dc:creator>
		<pubDate>Sat, 16 Nov 2024 21:13:49 +0000</pubDate>
				<category><![CDATA[Проекты]]></category>
		<guid isPermaLink="false">https://pavelev.app/?p=81</guid>

					<description><![CDATA[Посмотрев Железного человека, у меня с детства были мечты сделать ИИ-помощника: через Voice Commander я настроил голосовое управление Windows 98 чтобы он двигал мышкой и запускал программы, но это выглядело скорее эффектно, нежели эффективно. Ведь даже распознавание голоса в те времена было грандиозной задачей, а умение поговорить ожидалось не ранее чем через 100 лет. Наступил [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Посмотрев Железного человека, у меня с детства были мечты сделать ИИ-помощника: через Voice Commander я настроил голосовое управление Windows 98 чтобы он двигал мышкой и запускал программы, но это выглядело скорее эффектно, нежели эффективно. Ведь даже распознавание голоса в те времена было грандиозной задачей, а умение поговорить ожидалось не ранее чем через 100 лет.</p>



<p>Наступил 2024.<br>Я созревал как программист, выучился стекам, фреймворкам и создал свои шаблоны для быстрого поднятия любых проектов. Так я медленно шёл к стартапам, выполняя обычную работу под заказ.</p>



<p>Я написал тонну кода на ChatGPT и понял, что он способен писать на моих шаблонах, надо только дать информации как всё устроено.</p>



<p>Он способен работать с моей базой, надо только умело просить, и дать ему доступы.</p>



<p>Много рутины бывает и GPT выглядел как идеальным способом её наконец разрешить.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Первая версия. Это ядро приложения, которое принимает текстовый ввод, анализирует задачу, запрашивает в гпт что надо дополнить и пишет это. Фактически это Copilot, который сейчас добавляется во многие IDE.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="610" height="182" src="https://pavelev.app/wp-content/uploads/2024/11/Screenshot_6.png" alt="" class="wp-image-82" srcset="https://pavelev.app/wp-content/uploads/2024/11/Screenshot_6.png 610w, https://pavelev.app/wp-content/uploads/2024/11/Screenshot_6-300x90.png 300w" sizes="(max-width: 610px) 100vw, 610px" /></figure>



<p>Накодив первые результаты, стало ясно: у меня есть не файлы с кодом, а проекты. Я сделал поддержку проектов.</p>



<p>Проект не состоит из одной папки, я сделал сканер папок и детектор какой тип находится в этой папке. На этом этапе Джарвис обрёл собственную базу проектов. Для неизвестных папок он запрашивал что за проект и чем он занимается. И подставлял это в предпромт, если надо что-то закодить, зная о проекте больше.</p>



<p>Управление БД. Мне давно хотелось сделать чтобы он сам управлялся базой по моему запросу, и я это сделал, добавив верификацию корректности кода. Он способен сам создать не одно поле, а все таблицы с нуля и заполнить их, если надо.</p>



<p>Вместе с этим я научил его задавать мне вопросы и чувствовать себя за компом как у себя дома &#8212; он знает о запущенных процессах, окнах, файлах и всё чем я сейчас занимаюсь, чтобы мне не приходилось объяснять ему где и что сделать.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Чтобы кодить было удобнее, я попросил Джарвиса написать мне плагин для VSCode, который тонко бы получал инфу и отдавал её себе же для анализа. И вот так, ничего не зная о написании плагинов, я сделал его.</p>



<p>Джарвис сам для себя это сделал.</p>



<p>И теперь к интерфейсу ввода, у меня появилась тесная интеграция с IDE.</p>



<p>Он извлекал из VSCode файлы и сам определял запущенный проект, извлекал структуры таблиц, и делал локальный деплой.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="557" src="https://pavelev.app/wp-content/uploads/2024/11/image-1024x557.png" alt="" class="wp-image-83" srcset="https://pavelev.app/wp-content/uploads/2024/11/image-1024x557.png 1024w, https://pavelev.app/wp-content/uploads/2024/11/image-300x163.png 300w, https://pavelev.app/wp-content/uploads/2024/11/image-768x418.png 768w, https://pavelev.app/wp-content/uploads/2024/11/image.png 1204w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>НО. Бывает неясно что конкретно он переписал. Я добавил ему поддержку Git, чтобы видеть новое, и иметь быстрый откат. Теперь Джарвис создавал для себя отдельную ветку с изменением и сам коммитил успешные.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p>Настало время стать ближе к моим шаблонам и создавать то что нужно за секунды.</p>



<p>Во-первых установка новых проектов &#8212; перенёс все свои скрипты установки, переписав их с помощью Джарвиса на C#.</p>



<p>Я добавил поддержку Vue 3 + TypeScipt, Yii2, Bash итд, но главное &#8212; моего автоматического регенератора моделей из таблиц.</p>



<p>Теперь Джарвис может не то создать базу, но сам настраивает модели. Огромная рутина была сброшена с моих плеч. Стоит добавить, чтобы он миграции подбивал.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Работа</h2>



<p>Джарвис уже побывал в нескольких моих проектах, и всё меньше остаётся мест, к чему он не притронулся и не оставил свою git-ветку, т.к. слишком это уж удобно.</p>



<p>Что будет дальше? </p>



<p>Посмотрим.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://pavelev.app/%d0%b4%d0%b6%d0%b0%d1%80%d0%b2%d0%b8%d1%81-%d0%bc%d0%be%d1%89%d0%bd%d1%8b%d0%b9-%d0%b8%d0%b8-%d0%b4%d0%bb%d1%8f-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d0%b0-81/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fesik.app &#8212; Медитации от психолога</title>
		<link>https://pavelev.app/%d0%bc%d0%b5%d0%b4%d0%b8%d1%82%d0%b0%d1%86%d0%b8%d0%b8-28/</link>
					<comments>https://pavelev.app/%d0%bc%d0%b5%d0%b4%d0%b8%d1%82%d0%b0%d1%86%d0%b8%d0%b8-28/#respond</comments>
		
		<dc:creator><![CDATA[Николай Павельев]]></dc:creator>
		<pubDate>Sat, 26 Oct 2024 14:30:40 +0000</pubDate>
				<category><![CDATA[Проекты]]></category>
		<guid isPermaLink="false">https://pavelev.app/?p=28</guid>

					<description><![CDATA[Наша клиентка является психологом и выбрала хороший формат решения психологических проблем &#8212; медитации. Раньше она просто продавала mp3-файлы, но многие просто забывали их включать и их нельзя было оформить как подписку &#8212; файлы выдавались навсегда. Она обратилась к нам. Мы предложили сделать мобильное приложение, в котором люди могли бы с удобством медитации слушать, им бы [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Наша клиентка является психологом и выбрала хороший формат решения психологических проблем &#8212; <em>медитации</em>. Раньше она просто продавала mp3-файлы, но многие просто забывали их включать и их нельзя было оформить как подписку &#8212; файлы выдавались навсегда.</p>



<p>Она обратилась к нам. Мы предложили сделать мобильное приложение, в котором люди могли бы с удобством медитации слушать, им бы прилетал пуш, чтобы отложить все дела и привести мысли в порядок. Опция месячной подписки на приложение поможет перейти от одноразовых покупок к удержанию клиентов.</p>



<p><em>От 26.10.2024:</em> <br><strong>Приложению уже больше года</strong>, наш клиент заработал на медитациях, и мы продолжаем его развивать: дневники, пожелания, оффлайн-прослушка, пакеты, новые категории, виды оплат, DRM для защиты mp3 &#8212; сделали очень много новых, полезных и интересных активностей!</p>



<p><em><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-contrast-2-color">Платформы: </mark></em>iOS, Android, Сайт: мобильный и для ПК, Telegram mini-app</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="244" height="525" data-id="31" src="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_2.png" alt="" class="wp-image-31" srcset="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_2.png 244w, https://pavelev.app/wp-content/uploads/2024/10/Screenshot_2-139x300.png 139w" sizes="(max-width: 244px) 100vw, 244px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="240" height="522" data-id="29" src="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_1.png" alt="" class="wp-image-29" srcset="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_1.png 240w, https://pavelev.app/wp-content/uploads/2024/10/Screenshot_1-138x300.png 138w" sizes="auto, (max-width: 240px) 100vw, 240px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="241" height="527" data-id="32" src="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_4.png" alt="" class="wp-image-32" srcset="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_4.png 241w, https://pavelev.app/wp-content/uploads/2024/10/Screenshot_4-137x300.png 137w" sizes="auto, (max-width: 241px) 100vw, 241px" /></figure>
</figure>
</div>
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Как мы это делали</strong></h2>



<p><strong>Вызовы, на которые нам надо было ответить:</strong></p>



<ol class="wp-block-list">
<li>Санкции, у нашей клиентки паспорт РФ:
<ul class="wp-block-list">
<li>Apple Developer отключила для российских аккаунтов оплаты</li>



<li>Google Play Market не создаёт россиянам аккаунты</li>
</ul>
</li>



<li>4 разных платформы: 
<ul class="wp-block-list">
<li>iOS, Android, Сайт (мобильный и PC) и Telegram web app &#8212; у каждой свои тонкости</li>



<li>Разработка не должна стать дорогой и занять вечность</li>
</ul>
</li>



<li>Надо разместить много доп. материалов под каждую медитацию и не перегрузить окно прослушивания</li>



<li>Приложение должно успокаивать и ненавязчиво напоминать о себе по всем каналам: пуши в телефоне, и сообщения в телеграм-боте веб-аппа</li>
</ol>



<h3 class="wp-block-heading">Стек</h3>



<p>Под все 4 платформы мы выбрали единый стек: </p>



<ul class="wp-block-list">
<li>Vue 3 + Vite + Capacitor для фронтенда &#8212; позволит держать 4 платформы одновременно, не переписывая код, сильно ускорит и удешевит поддержку. Использовали наш личный шаблон для экстремально быстрой разработки.</li>



<li>Yii2 REST + nginx для бекенда. Они держат отличную производительность и приложение будет отзываться быстро.</li>



<li>Для быстроты вёрстки использовали Tailwind, SCSS и Pug.</li>
</ul>



<h3 class="wp-block-heading">Бренд</h3>



<p>При брендировании мы учитывали преимущественно женскую аудиторию и первый драфт дизайна был в позитивных тонах светлой японской комнаты:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="576" height="1024" data-id="42" src="https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-2-576x1024.png" alt="" class="wp-image-42" srcset="https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-2-576x1024.png 576w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-2-169x300.png 169w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-2-768x1365.png 768w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-2-864x1536.png 864w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-2.png 1080w" sizes="auto, (max-width: 576px) 100vw, 576px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="576" height="1024" data-id="43" src="https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-3-576x1024.png" alt="" class="wp-image-43" srcset="https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-3-576x1024.png 576w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-3-169x300.png 169w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-3-768x1365.png 768w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-3-864x1536.png 864w, https://pavelev.app/wp-content/uploads/2024/10/Artboard-Copy-3.png 1080w" sizes="auto, (max-width: 576px) 100vw, 576px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="276" height="597" data-id="41" src="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_3-2.png" alt="" class="wp-image-41" srcset="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_3-2.png 276w, https://pavelev.app/wp-content/uploads/2024/10/Screenshot_3-2-139x300.png 139w" sizes="auto, (max-width: 276px) 100vw, 276px" /></figure>
</figure>



<p>Нам сказали, что слишком светло и хотят золотисто-тёмный бренд, по типу лендинга, который у них уже был. Поэтому мы передали его в нынешнюю версию, забрав с лендинга основные элементы и придумав концепцию приглушённой комнаты, который в итоге отлично приняли</p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="243" height="453" src="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_3-3.png" alt="" class="wp-image-45" srcset="https://pavelev.app/wp-content/uploads/2024/10/Screenshot_3-3.png 243w, https://pavelev.app/wp-content/uploads/2024/10/Screenshot_3-3-161x300.png 161w" sizes="auto, (max-width: 243px) 100vw, 243px" /></figure>
</div>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Обход санкций Apple и Google Developer Program для РФ</h2>



<p>Итак, самое простое &#8212; это зарегистрировать компанию вне РФ, но бизнес ведётся в РФ и этого делать не захотели.</p>



<p><strong>Андроид</strong></p>



<p>Для Google Play Market, который вообще не принимает авторов приложений россиян даже на входе, мы придумали создать аккаунт на Rustore, т.к. большая часть аудитории находится в РФ, и его обязывают устанавливать на ввозимые андроид-смартфоны, так что он будет у всех. Это было самым простым решением. </p>



<p>На 10.2024 в нём можно свободно делать продажи, комиссий не вводили, одобрение в модерации за полчаса.</p>



<p><strong>Apple</strong></p>



<p>Apple нормально зарегистрировал аккаунт разработчика нашей клиентки, но для российских аккаунтов закрыто соглашение о монетизации: вы не можете никаким образом продавать внутри него, и даже перенаправлять людей на другие площадки и впринципе упоминать о платном контенте.</p>



<p>После тщательного изучения документации, часов общения с модерацией, мы нашли единственно верный вариант:</p>



<p><code><a href="https://developer.apple.com/support/reader-apps/">Reader application</a></code> &#8212; это приложение, подобное нетфликсу, которое может показывать уже купленные во вне цифровые товары (например играть медитации), но покупать внутри приложения нельзя. Нельзя упоминать об оплатах, а так же отдельный запрет на регистрацию.</p>



<p>Именно так мы и поступили: убрали регистрацию и оплаты, а воронку привлечения пользователей начинали с Сайта, на котором они регистрировались &#8212; и позже Телеграм Веб-аппа.</p>



<p><strong>Телеграм Web App (Mini app)</strong></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://pavelev.app/%d0%bc%d0%b5%d0%b4%d0%b8%d1%82%d0%b0%d1%86%d0%b8%d0%b8-28/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SkyPoster &#8212; ИИ статьи на WordPress</title>
		<link>https://pavelev.app/skyposter-%d0%b8%d0%b8-%d1%81%d1%82%d0%b0%d1%82%d1%8c%d0%b8-%d0%bd%d0%b0-wordpress-21/</link>
					<comments>https://pavelev.app/skyposter-%d0%b8%d0%b8-%d1%81%d1%82%d0%b0%d1%82%d1%8c%d0%b8-%d0%bd%d0%b0-wordpress-21/#respond</comments>
		
		<dc:creator><![CDATA[Николай Павельев]]></dc:creator>
		<pubDate>Tue, 08 Oct 2024 13:50:47 +0000</pubDate>
				<category><![CDATA[Проекты]]></category>
		<guid isPermaLink="false">https://pavelev.app/?p=21</guid>

					<description><![CDATA[Это мой стартап, с которого я решил начать что-то делать SkyPoster &#8212; это ИИ-блогер для сайтов на WordPress, который пишет вам полезные, красивые и SEO-оптимизированные под поисковики статьи, и словно ваш личный копирайтер &#8212; размещает их на сайте самостоятельно и ежедневно, аккуратно встраиваясь в ваш движок и помогая вашим плагинам улучшать SEO. По сравнению с [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Это мой стартап, с которого я решил начать что-то делать</p>



<p><strong><a href="https://skyposter.pro/">SkyPoster</a></strong> &#8212; это ИИ-блогер для сайтов на <em>WordPress</em>, который пишет вам полезные, красивые и SEO-оптимизированные под поисковики статьи, и словно ваш личный копирайтер &#8212; размещает их на сайте самостоятельно и ежедневно, аккуратно встраиваясь в ваш движок и помогая вашим плагинам улучшать SEO. По сравнению с биржей цена статей дешевле в 20 раз.</p>



<figure class="wp-block-video"><video height="720" style="aspect-ratio: 1280 / 720;" width="1280" controls src="https://pavelev.app/wp-content/uploads/2024/10/skyposter.mp4"></video></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://pavelev.app/skyposter-%d0%b8%d0%b8-%d1%81%d1%82%d0%b0%d1%82%d1%8c%d0%b8-%d0%bd%d0%b0-wordpress-21/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="https://pavelev.app/wp-content/uploads/2024/10/skyposter.mp4" length="40015962" type="video/mp4" />

			</item>
	</channel>
</rss>
