Это не туториал и не «10 советов как стать 10x‑разработчиком». Это честный рассказ о том, каково в одиночку тянуть проект, который начинался как «сделаю себе небольшой сайтик про кино», а в какой‑то момент превратился в полноценную соцсеть с лентой, профилями, рейтингами, совместным просмотром и фоновыми задачами. Без команды, без инвестора, без тимлида, который скажет «так делать не надо». Только ты, IDE и продакшен, который почему‑то падает в два часа ночи. Делюсь стеком, организацией и граблями — без прикрас.
Как я докатился до жизни такой
Начиналось всё невинно. Хотелось места, где можно вести список фильмов, ставить оценки и видеть мнения живых людей, а не накрученные цифры. Прикинул — да тут на пару выходных работы. Знакомое чувство, да?
Через некоторое время «пара выходных» превратилась в каталог на десятки тысяч карточек, ленту активности, систему друзей, рейтинги, рецензии, подбор по вкусам, совместный просмотр и кучу фоновых процессов, которые что‑то парсят, что‑то генерируют и что‑то рассылают. И всё это — на одном человеке. Я сам себе фронтендер, бэкендер, девопс, дизайнер, тестировщик, контент‑менеджер и служба поддержки в одном лице. Спойлер: это одновременно и кайф, и боль.
Стек: почему именно так
Когда ты один, выбор стека — это не про «что хайповее», а про «на чём я доеду до результата и не утону в обслуживании». Мой набор:
Бэкенд — FastAPI. Python я знаю, FastAPI быстрый в разработке, асинхронный, с автодокументацией из коробки. Для соло это важно: меньше бойлерплейта — больше успеваешь.
Фронтенд — Next.js (App Router) на React. SSR из коробки (критично для SEO, об этом ниже), нормальная маршрутизация, и я могу не держать в голове отдельный фронт и отдельный бэк как два разных мира.
База — PostgreSQL. Поначалу был соблазн остаться на SQLite (быстро, без сервера), но как только появляются конкурентные записи и сложные запросы — упираешься в стену. Перешёл на PostgreSQL и ни разу не пожалел: JSONB, нормальные индексы, надёжность.
Redis — для кэша, рейт‑лимитов и временных штук, которым не место в основной базе.
Плюс по мелочи: Nginx как реверс‑прокси, systemd для сервисов, всё на обычном VPS. Никакого Kubernetes — для одного человека это способ потратить жизнь на обслуживание инфраструктуры вместо разработки.
Главный навык соло‑разработчика — это не код
Звучит странно, но самое сложное в одиночной разработке — не написать фичу, а не утонуть в них. Когда ты один, у тебя бесконечный бэклог и ноль людей, чтобы его разгрести. Поэтому выживание — это дисциплина, а не скорость печати.
Что реально помогло мне не сойти с ума:
Один патч за раз. Звучит банально, но это спасение. Не «перепишу пол‑проекта за вечер», а одно изменение — протестировал — убедился, что работает — поехали дальше. Когда некому делать code review, твой единственный страховочный трос — маленькие проверяемые шаги. Большой смелый рефакторинг в одиночку почти всегда заканчивается продакшеном, который не поднимается, и тобой в три ночи с глазами по пять рублей.
Тестировать там, где живёт прод. Локально «у меня всё работает» — самая дорогая фраза в соло‑разработке. Другое число воркеров, другой Redis, другой Nginx — и фича, идеальная на ноутбуке, разваливается в бою. Я приучил себя проверять критичное прямо на боевом окружении (аккуратно, на тестовых данных), а не верить локалхосту на слово.
Беспощадная приоритизация. У меня список идей длиннее, чем доживу. Поэтому вопрос не «крутая ли фича», а «оно вообще кому‑то нужно прямо сейчас или это я просто хочу поиграться с технологией». Половина «гениальных» идей отлёживается в бэклоге и тихо там же и умирает — и это нормально.
Грабли, которые стоили мне нервов (и сна)
А теперь то, ради чего вы, возможно, и открыли статью. Грабли, на которых я честно посидел — и которые ждут любого, кто в одиночку тащит подобное.
Фоновое состояние в памяти и несколько воркеров. Завёл фичу, которая хранит состояние прямо в памяти процесса. Удобно, быстро. Запустил сервер в несколько воркеров для производительности — и фича развалилась: пользователи попадают в разные процессы, состояние не шарится, всё рассинхронено. Урок: либо состояние в общем хранилище (Redis/БД), либо такие фичи держим в одном воркере. Я выбрал второе и зафиксировал это железно, чтобы случайно не «оптимизировать» обратно.
Права на файлы после сборки. Классика: собрал фронт под одним пользователем, сервис запускается под другим — и привет, EACCES, белый экран, паника. Теперь после каждой сборки явно выставляю владельца на артефакты. Записал в чек‑лист деплоя, потому что забывается ровно тогда, когда некогда.
node_modules не переезжает между ОС. Разрабатываешь на Windows, прод на Linux — нативные зависимости со скомпилированными бинарниками просто не заведутся, если тащить папку как есть. Только чистая установка на целевой системе. Очевидно? Да. Наступал? Тоже да.
Кэш сборки трогать нельзя. Один раз «почистил на всякий случай» кэш сборщика на проде — и сломал инкрементальную регенерацию страниц на сутки. Теперь правило: не уверен — не трогай, особенно то, что само себя обслуживает.
dev и prod базы — это разные миры. Держать конфиг так, чтобы случайно не сходить локальным кодом в боевую базу (или наоборот) — отдельная дисциплина. Один невнимательный запуск скрипта «не туда» — и ты долго думаешь, почему данные не меняются (а они меняются, просто в SQLite‑файле, который никому не нужен).
Не запускай два тяжёлых процесса разом. Сервер не резиновый. Запустил тяжёлую фоновую генерацию — и параллельно пересборку фронта «чтобы не ждать». Память кончилась, OOM‑killer пришёл и молча прибил процесс без всякого трейсбэка. Полчаса гадал, что случилось. Теперь тяжёлое — по очереди.
Миграции без тяжёлой артиллерии. Полноценные миграции через Alembic — это правильно, но в соло на ранней стадии я пошёл по пути «добавляем недостающие колонки на лету при старте». Спорное решение, и я понимаю риски — но для одного человека на этапе бурного роста схемы это сэкономило кучу времени. Главное — осознавать, что это технический долг, а не «так и надо».
SEO, про который все забывают, пока не поздно
Отдельная боль одиночки — про SEO часто вспоминают в последнюю очередь, а это для контентного проекта половина смысла. SPA без серверного рендера поисковики индексируют плохо, и можно полгода писать контент в пустоту. Пришлось разбираться: серверный рендер метаданных, карта сайта на десятки тысяч URL, корректный robots, борьба с «мягкими 404», когда фреймворк отдаёт «не найдено» с кодом 200 и портит индексацию. Скучно, неблагодарно, но без этого контентный сайт невидим.
Самое тяжёлое — вообще не техническое
Если честно, код — это самая лёгкая часть. Тяжелее всего психология.
Некому передать. Заболел, выгорел, пропала мотивация на неделю — проект просто стоит. Нет коллеги, который подхватит.
Некому сказать «ты молодец» или «ты идиот». Нет ревью, нет обратной связи. Ты варишься в собственных решениях, и легко месяцами катиться не туда, потому что некому ткнуть носом.
Туннель из фич. Когда видишь весь проект целиком только в своей голове, легко закопаться в бесконечное «ещё чуть‑чуть допилю» и забыть, что продукт уже должен жить и приносить пользу, а не вечно полироваться.
Качели мотивации. Сегодня ты горы свернёшь, завтра смотришь на свой же код и думаешь «зачем я вообще это начал». Это нормально. Я научился просто переживать спады, не принимая в них стратегических решений вроде «всё снести и переписать».
Что я понял за это время
Маленькие шаги побеждают героизм. Десять спокойных коммитов лучше одного бессонного подвига.
Скучные вещи (бэкапы, мониторинг, чек‑листы деплоя) важнее красивых. Именно они спасают, когда всё горит.
Готовое и работающее лучше идеального и ненаписанного. Пользователю плевать на чистоту твоей архитектуры, ему нужно, чтобы кнопка нажималась.
Один человек реально может тащить удивительно много — если не воюет сам с собой за идеальность.
Если интересно посмотреть, что из всего этого выросло — проект живой и доступен: кино‑сервис vibemuvik.ru. Не зову регистрироваться и ничего не продаю — просто, если вам по ходу статьи стало любопытно, на чём всё это крутится в бою, можно зайти и потыкать. Там и лента, и рейтинги от живых людей, и совместный просмотр — то самое, что один человек собрал по вечерам.
А теперь к вам, потому что обратной связи в соло мне как раз и не хватает: кто ещё тащит большой проект в одиночку? На каком стеке, как боретесь с выгоранием и бесконечным бэклогом, где проводите черту между «допилить» и «уже пора показывать людям»? И главный вопрос — где, по‑вашему, та грань, после которой соло‑проект пора превращать в команду (и стоит ли вообще)? Делитесь, очень интересно собрать опыт таких же одиночек в комментариях.
Комментарии (36)

titulusdesiderio
20.05.2026 23:47Поддерживаю вопрос другого комментатора. В чем ценность продукта?
Сейчас это просто вайбкод в качестве интерфейса и невычитанный нейрослоп в качестве контента. Я потратил пол часа на сайте и так и не смог придумать зачем он может быть нужен пользователю. (У слову я ца - много лет пользуюсь КП и оцениваю каждый просмотренный фильм + веду список отложенных к просмотру)
А за реальные грабли с прода - респект. Плюсанул

vibemuvik Автор
20.05.2026 23:47ценность продукта в том что на просторах рунета нет нормального поиска любимых фильмов или давно забытых и в моем проекте Соц сеть кино создание своей библиотеки кино весь смысле не могу описать но стараюсь показать на сайте,вы сказали о КП мое мнение стал просто онлайн кинотеатром и выжиманием денег когда его купил яндекс.

titulusdesiderio
20.05.2026 23:47весь смысле не могу описать
Обязательно нужно сначала для себя понять. И потом, зная ответ на вопрос "в чём ценность" уже идти в маркетинг. даже в такой условно "бесплатный" как самостоятельная публикация статей

vibemuvik Автор
20.05.2026 23:47ну может в чем то вы правы .ну я может напишу статью в чем ценность проекта смысл его ,но пока работы над проектом много еще .Совершенству нет придела и так же,то му чему я вместе с проектом учусь ,это тоже своеобразная ценность опыт.

titulusdesiderio
20.05.2026 23:47Вы меня не поняли. не нужно писать статью об этом. нужно сначала вам ответить на этот вопрос. И уже с этим знанием строить функционал, маркетинг и т.п.
Сейчас вы лепите фичи как-попало. Так аудиторию не удержать. Нужно осознать потребность аудитории, причины по которым она могла бы уйти из КП к вам. И под эти потребности и причины выбирать функционал. Возможно, когда вы это осознаете - бОльшую часть придётся выкинуть или переписать.

vibemuvik Автор
20.05.2026 23:47я понял все но стараюсь быть корректным ,я хочу писать пишу и буду это делать. я написал статью без смысла и просто и в комментариях мне много помогли советом ,показали мои ошибки ,поэтому для меня это важно так как я один делаю и без опыта, а тут люди с опытом показали на мои ошибки ,и некоторые даже для себя что то взяли, и конечно то что вы мне дали советы я благодарен и что то из ваших советов подчеркнул для себя. Ну а писать статьи буду потому как это тоже для меня своеобразный урок по закреплению материала который прошел я на своем сайте.

vkomp
20.05.2026 23:47Тоже такое делаю. Уже несколько лет ;) Мне больше не хватало системного аналитика, который бы сразу сказал "как правильно" и еще убедил бы в этом - переделывал много раз. И еще буду переделывать - уверен.
У меня PWA/SPA на реакте. Управляю состоянием компонентов на useSWR. И куча контекстов. И три уровня токенов авторизации ;) И go на сервере. В go я хожу отдыхать... ;) Про состояния сервера в принципе давно узнал, потому делаю сразу stateless и две базы - master для записи и реплики. И ci освоил - рекомендую, недельку-другую поматериться, а потом хорошо.
Тема - CivilTech: объединение жильцов и собов в целях управления общим имуществом (но можно всех объединять - спортсообщества, профсоюзы и школьные комитеты). Сейчас освоил push'и, чтобы было похоже на телеграм, но в базе древовидные форумы для хранения документов. Описание: https://pro.deloset.ru - тут немножно стрёмно описано - щас чаты допилю, и стану маркетологом.

sWitched0ff
20.05.2026 23:47Тут неправильное имя или всё остальное? https://vibemuvik.ru/person/1074


titulusdesiderio
20.05.2026 23:47На сайте нет никакой модерации. Контент на 100% состоит из нейроналлюцинаций.

reyist
20.05.2026 23:47На главной я сразу прон нашел с жанром "драма, мелодрама". Еще и стоп кадр с трейлера соответствующий ;)
Функция подборки фильмов мягко говоря странная, так еще есть опция добавить знак своего зодиака.А, ну и куча эмодзи и встроенный промт для описания фильма в самом описании фильма.

vibemuvik Автор
20.05.2026 23:47нет я видел .это тоже есть и на TMDB стоп кадер согласен .спасибо убрал настрою модерацию жоще .и есть банеры +18 предупреждающие сами понимаете контента много и фильмов такой тематики на популярных даже на КП .не говорю о популярных соц сетях где сидят дети .Моя ошибка Извиняюсь займусь этим вопросом строже сделаю фильтрацию фильмов

vibemuvik Автор
20.05.2026 23:47да модерация автоматическая и только настраивается. Но есть и ручная уже готова.но я один работаю.это исправил было таких 135 с неправильными фото .у меня есть хорошая автоматизация которая полностью ищет исправляет если я нахожу одену ошибку. Спасибо Большое

askurashev
20.05.2026 23:47Расскажите, как реализовали push уведомления и каким сервисом пользуетесь для email уведомлений.

vkomp
20.05.2026 23:47Я у себя такое выше написал - вопрос ко мне? Щас по-свежему распишу.
Push - это про service worker. Нахлобучка между сайтом и браузером мимо обычной бизнес-логики. SW подписывается на определенный endpoint на ресурсе конкретного браузера. В логике сайта нужно поднять разрешение/подписку, и отправить на сервер. Сервер запоминает подписку. И по нужде пишет зашифрованное сообщение на тот самый endpoint, который слушается клиентом.
Важно, SW работает даже если сайт закрыт. И на этом устроено PWA. И обновляет, и поднимает push'и в системном трее. В dev-режиме нужно настраивать vite, чтобы sw правильно поднимал.
Еще у меня есть SSE - server side events. Это для открытого чата. Тут клиент подписывается на stream-канал, который держится открытым, восстанавливается если упадет. И сервер просто отправляет сообщения в открытый канал. Важно, что http/2 это не умеет (в go так). Нужно снижать версию http-соединения. И подстраивать канал под flush сообщений. То есть отличается от обычного http-запроса. И nginx перед сервером может требовать хитрой настройки.
Email у меня свой. Нативный Postfix на VDS и доменном имени. Тут сложности больше в "белой почте" ака трех защитах - даже у профессионалов приходят письма с ошибками.
Сервер просто отсылает письма на свой smtp-сервер через стандартную библиотеку.

vibemuvik Автор
20.05.2026 23:47Push-уведомления. Сделал на нативном Web Push (VAPID), без FCM/Firebase и без сторонних сервисов — мне не хотелось вендор-лока ради пет-проекта.
На фронте (Next.js) регистрирую service worker (
/sw.js), через него подписываюсь:reg.pushManager.subscribe({ applicationServerKey: VAPID_PUBLIC }), и шлю подписку на бэк.Подписку (
endpoint+ ключиp256dh/auth+ user-agent) храню в PostgreSQL, по одной на устройство — у юзера их может быть несколько.На бэке (FastAPI) рассылаю через
pywebpushс VAPID-ключами: шлю на все устройства пользователя, payload — JSON{title, body, url, icon, tag},ttl=3600. Просроченные подписки (ответ404/410) автоматически удаляю из базы, чтобы не копился мусор.Из нюансов: в Chrome/Firefox/Edge/Android работает из коробки, а на iOS пуши прилетают только если сайт установлен как PWA (Safari 16.4+) — это ограничение самого Apple, не реализации.
Итого — полностью своё, бесплатно, без внешних зависимостей.
Email. Тут максимально скучно и надёжно: никакого SendGrid/Mailgun/SES — просто SMTP моего хостинга (Timeweb) через стандартный питоновский
smtplib(MIME, html+text-версии письма).Конфиг SMTP (host/port/user/pass) лежит в БД (в настройках сайта), чтобы менять без передеплоя.
Письма транзакционные: сброс пароля, welcome, уведомления о новых рецензиях, алерты админу.
Для соло-объёмов почтового ящика хостинга хватает с запасом. Если когда-нибудь упрусь в лимиты или доставляемость — вынесу на Postmark/SES, но пока это было бы преждевременным усложнением.
Логика та же, что и со стеком в статье: беру самое простое, что работает и что я могу обслуживать один.

krol_krol
20.05.2026 23:47А никого не смутил в заглавной карточке поста первый фильм? :DDDD

webhamster
20.05.2026 23:47Я тяну свой сайт https://webhamster.ru с 2010 года. Он был написан на PHP + Codeigniter-1.7, потом переехал на 2.x, и так до сих пор и остается. В качестве БД используется SQLite3, пришлось писать самодельный драйвер для него, ибо на момент разработки он существовал только для SQLite2.
По-началу это все работало на конфигурации:
- CPU 160 MHz
- RAM 64 Mb
- HDD 2 GbДля админ-панели был написан самодельный интерфейс, который конфигурируется одними только XML-файлами. Имеются XML-описания, которые полностью описывают все элементы структуры:
- Меню
- Таблицы
- Экранные формы
- Перечисления
- Цепочки взаимосвязейЧтобы все это работало, был написан движок, который называется Винтерпроцессор (Виртуальный Интернет Процессор). От состоит из элементов:
- Персистентные контроллеры
- Стек-машина
- Одноразовые данные (регистры)
- Ассемблер
- Исполнительное устройствоЭта инфраструктура нормально пережила на минимальных мощностях и Хабра-эффект, и ЛОР-эффект:
* Хабраэффект: не так страшен чёрт, как его малюют
* Лор-эффект: полёт нормальныйПотом сайт стал развиваться, на нем появились форум и гостевая с самодельным антиспамом, а затем появились сайд-проекты типа MyTetra Share.
Ядро сайта так и не изменилось, но многие вещи были дописаны. Сейчас, спустя 15 лет, сайт крутится на оборудовании:
- CPU 1GHz
- RAM 1 Gb
- HDD 20 GbНа сайте проиндексировано около 15000 страниц. В лучшие годы на сайт заходило до 6 тысяч человек ежедневно. Сейчас иногда бывают всплески по 1000 человек в день, но это редкость. С появлением нейросетей посещаемость сайта сильно упала, да и я редко им занимаюсь, две-три новости в год - хорошо если будут написаны. Зато на сайте постоянно появляются мои статьи и статьи моих пользователей из MyTetra - то есть, к примеру, записи, которые я постоянно делаю, когда разбираюсь в каком-либо вопросе, а нейросети тупят и несут ахинею. Их можно увидеть в мониторинге статистики MytetraShare.
Кроме меня никто этот проект тянуть не сможет, поэтому выбора по-сути не остается, его надо просто продолжать делать, хотя бы по остаточному принципу. Вот и вся мотивация. Раньше на рекламе проект приносил около 1500 руб в мес. За год накапливалась небольшая сумма 15-20 тыс. руб, которую можно было на что-то потратить. Теперь проект еле-еле балансирует на уровне самоокупаемости: оплатил хостинг и домен, и хорошо если пара тысяч в год останется на пирожное.
Вот примерно так.

vibemuvik Автор
20.05.2026 23:47это очень интересно. минималка оборудование.но вы же еще занимаетесь сайтом?

PatakinVVV
20.05.2026 23:4715 лет на одном стеке это достойно уважения! Зато код работает предсказуемо и не требует переписывания каждые полгода из-за мажорного апдейта фреймворка)

PechoraDev
20.05.2026 23:47Зашел заценить. В самом верху, в левом верхнем углу - легендарный фильм Невесты и ш***и от компании Private. Очень интересный фильм, спасибо, теперь я знаю что буду смотреть на выходные =)
Ну а по сабжу - отличный проект, правда дизайн от нейросетки, но это не столь страшно ) Получилось очень даже ничего
vibemuvik Автор
20.05.2026 23:47рад что вам понравилось .но уже удалил буду стараться ,фильтровать такой контент.хотя в популярных плошадках таких старых фильмов много .и просто тут он попал вленту иза автоматизации в ленте и выбор контента.Спасибо что оценили сайт даже так приятно.

vibemuvik Автор
20.05.2026 23:47таких много .сейчас всего много .но вы же не знаете что подкапотном этого сайта .нутак судить по обложке не совсем коректно.

vibemuvik Автор
20.05.2026 23:47Хочу выразить благодарность всем кто оценил и написал приятное и слова поддержки .Спасибо всем дай бог вам здоровья и вашим семьям. Я буду продолжать стараться работать над проектом и учится делать лучше.

PatakinVVV
20.05.2026 23:47Синдром проекта на пару выходных сгубил больше хороших инженеров, чем любой легаси код
Писать пет-проект ради фана это одно, но пытаться в соло вытянуть соцсеть без бюджета на маркетинг - путь вникуда

vibemuvik Автор
20.05.2026 23:47Первая часть — чистая правда, спорить не буду: «синдром пары выходных» выкосил многих. Но, кажется, он убивает не тех, кто долго пилит, а тех, кто привязал самооценку к дате релиза и к чужому определению успеха. Если проект для тебя ещё и способ прокачаться, не закиснуть и сделать давно задуманное — то «не выстрелил как стартап» и «провал» перестают быть синонимами.
А вот «соцсеть без бюджета на маркетинг = путь вникуда» — здесь поспорю. Бюджет на маркетинг сам по себе ещё ни один продукт не спас и не убил. Убивает другое: ноль пользователей, ноль обратной связи и выгорание автора. А лечится это каналами, которым деньги не нужны, — SEO, сообщества, контент. Вот эта самая статья — мой «маркетинг» за 0 рублей, и комментарии вроде твоего мне ценнее закупки трафика. Тот же Letterboxd — кино-соцсеть, которая годами росла на комьюнити и сарафане без рекламных бюджетов, прежде чем стала тем, чем стала. Деньги приходят потом, а не наоборот.
И да — я не строю «следующий гугл» и не жду экзита. Это некоммерческий проект, который я делаю один по вечерам. Поэтому метрика успеха у меня не «обогнать Кинопоиск», а «работает + есть живые люди, которым это реально нужно». По ней он уже не «вникуда». А вот настоящий «путь вникуда» — это, по-моему, как раз не начать, потому что заранее посчитал, что без бюджета не взлетит.
vital_pavlenko
У меня несколько вопросов. Зачем ты делаешь этот продукт? И как будешь монетизировать?
Ну и плюс, я смотрю ты только начал, там буквально 0 пользователей. А если ценность в комментариях, то хотя бы несколько комментов к фильму появятся с миллионом пользователей.
И какая мотивация будет оставлять комментарии?
Я без негатива если что, ты молодец, я даже плюсанул статью
vibemuvik Автор
я хочу помочь маме у нее рак 4 стадия ,мне пришлось бросить работу и ухаживать. Может что то получится заработать .да и для меня немного отвлекает от той реальности в которой сейчас живу ,вот 2 причины почему начал делать как это монетизировать пока не знаю нет опыта.
anaxita
Если есть время на такой проект, может на позицию мидла устроиться и вайбкодить было бы чуть более профитно? Или пробовал и не получилось совмещать?
vibemuvik Автор
у меня нет такого опыта. а без опыта некуда не берут. А время ну много ,ну оно тоже зависит от Самочувствия Мамы ,я еще и в деревне живу огород,дел хватает .и над сайтом много работаю ночами и днем .а в основном все упирается что я самоучка и без опыта.спасибо за вопрос.