← Back to list

Как мы вдвоём с другом строим классифайд в Сербии, вложили миллион динаров и до сих пор не…

Меня зовут Максим. Уже больше года мы с моим другом, бэкенд-разработчиком, в две пары рук пилим проект RSale, классифайд товаров и услуг…

Max Baranov · 2026-05-20 13:33 · 0 claps · 6.0 min read
#marketing #serbia #ai #claude-code #sveltekit
Open on Medium ↗
Wiki topics: LLM · Large Language Models AI · AI · General ECO · Economy · General MKT · Marketing · General 🌐 · Web Development 🔧 · Data Engineering

Как мы вдвоём с другом строим классифайд в Сербии, вложили миллион динаров и до сих пор не запустились (и почему это нормально)

Меня зовут Максим. Уже больше года мы с моим другом, бэкенд-разработчиком, в две пары рук пилим проект RSale, классифайд товаров и услуг для Сербии. Он на бэке, я на фронте и продуктовых решениях. Мы не подняли инвестиции, не наняли команду, не вышли в эфир с громким лендингом. Мы просто работаем, доводим до ума и пока не запустились публично, хотя сайт давно живой внутри.

К этому моменту в проект вложено около миллиона динаров личных денег. Сервера, домены, инструменты, AI-API, дизайн, юридические штуки, тестовые прогоны. И знаете что? Я ни о чём не жалею.

Расскажу почему.

Почему именно Сербия

Я люблю эту страну. Люблю её людей, их спокойствие, прямоту, чувство собственного достоинства. Люблю, как тут здороваются в булочной, как на рынке тебе насыпают сливы чуть больше, чем ты попросил, как сосед молча помогает занести коляску. Это страна, в которой ещё есть живая, тёплая, человеческая ткань. И мне хочется сделать для неё что-то полезное, а не очередную клонированную доску с китайскими свистелками.

Rsale.net задуман как классифайд, где сербу и приезжему одинаково удобно продать шкаф, найти мастера по плитке, забронировать стрижку или отдать велосипед в новые руки. Не “ещё одна страница с объявлениями”, а место, где доверие к продавцу видно глазами, а интерфейс не выглядит так, будто его делали в 2008 году.

Что у нас под капотом, по-честному

Эту часть я пишу для тех, кто шарит. Если вы потенциальный пользователь и вас интересует больше про продукт, можно сразу проматывать ниже. Но я хочу, чтобы было видно: мы строим не “сайтик”, а нормальный инженерный продукт.

Бэкенд написан на .NET 8, ASP.NET Core. Архитектура — модульный монолит из пятнадцати модулей: Catalog, Orders, Bookings, Chat, Favorites, Profiles, Identity, Search, Geo, Storage, Blog, Banners, Promotions, Notifications и большая админка, которая зависит от девяти из них. Это сознательный выбор. На нашем масштабе микросервисы это боль ради боли. Модульный монолит даёт чистые границы и быструю разработку без танцев с очередями и трассировкой между сервисами.

База — PostgreSQL 16 с PostGIS и pg_trgm. PostGIS нужен, чтобы искать объявления по радиусу от точки на карте. Хочешь найти диван в 3 километрах от своей квартиры в Новом Саде, мы умеем. Полнотекстовый поиск идёт через Meilisearch 1.12. Redis 7 держит SignalR backplane и онлайн-статусы. Аутентификация на IdentityServer4, отдельный сервис на своём порту, OIDC с PKCE, 15-минутный access токен, 7-дневный sliding refresh, всё по уму.

Реал-тайм чат между подающим объявление и интересующимся работает на SignalR с Redis backplane, отдельным JWT-токеном для соединения, счётчиками непрочитанных, отметкой “печатает”, доставкой через CASCADE. Это не “форма обратной связи”, это нормальный мессенджер внутри площадки.

Бронирование услуг (барбершопы, мастера, репетиторы) идёт через отдельный модуль Bookings со своим расписанием, недельными правилами и исключениями. Можно настроить, что мастер по вторникам работает с 10 до 15, а 14 мая он в отпуске. Слоты считаются на бэке, не на фронте, чтобы не было гонок.

Фронтенд на SvelteKit с серверным рендерингом. Это сделано осознанно ради SEO. Поисковая выдача — кровь классифайда в стране, где люди ищут “polovni telefoni Beograd” в гугле, а не открывают приложение. Если ты не в топе поиска по локальным запросам, тебя нет. Поэтому каждая страница объявления отдаётся уже отрендеренной, с правильными мета-тегами, og-image, structured data, локализованными URL.

Админка — отдельное SvelteKit-приложение, через гейтвей бьёт в /api/admin/*. Из админки модерируем отзывы, объявления, продавцов, баннеры, промоушены, ведём блог и центр переводов.

Как Claude Code тащит фронт

Скажу честно: фронт у меня едет не на голом героизме. Я активно работаю с Claude Code, и без него вдвоём такой объём мы бы не вытянули. Это не “AI пишет код за меня”, это инструмент, который реально меняет то, как я думаю и проектирую.

Что он реально делает в моём ежедневном потоке:

-Аудит контрактов фронта и бэка. У нас около 165 REST-эндпоинтов и SignalR. Каждый раз когда бэкенд-друг мержит изменения в main, Claude Code прогоняет фронт против актуальных контроллеров и говорит мне, где фронт зовёт несуществующий путь или передаёт не то поле. До этого мы ловили такие штуки по факту в проде моего dev-окружения, теперь видим до запуска.

  • Рефакторинг под новые бэкенд-модули. Когда друг выкатил новый модуль Bookings или Favorites, я не сидел и не переписывал руками двадцать компонентов. Claude Code прошёл по фронту, нашёл места, которые работали через старые костыли, и переписал их под честный REST-контракт. Я ревьюил, не печатал.

SSR-загрузчики и SEO-метаданные. SvelteKit +page.server.ts шаблоны для разных типов страниц (листинг, профиль продавца, категория, блог-статья) собраны однотипно, с правильным setHeaders, локализованными slug, og-image, structured data. Это рутина, на которую больно тратить часы вечером после работы.

i18n-плёнка на каждый компонент. У нас три языка и resolveI18n() поверх jsonb-полей. Claude Code прогоняет это по всем формам, инпутам, валидаторам, плейсхолдерам и не даёт мне забыть какую-то кнопку на сербской латинице.

Память между сессиями. Я держу в проекте структурированную память: карту бэка, список эндпоинтов, аудит контрактов, статусы тасок. Claude Code эту память читает каждый раз, не приходится по двадцать минут пересказывать “ну вот у нас .NET 8, модульный монолит, вот так устроено”. Это экономит мне несколько часов в неделю.

Скучные миграции UI. Перенести компоненты со старого stack на новый, выкинуть Drizzle-сидеры, прибраться после большого мержа в main — все это идёт через Claude Code с моим ревью.

В итоге я как соло-фронтендер по факту работаю в режиме “тимлид плюс автоматизация”. Я думаю про продукт, дизайн, SEO, UX. Рутина, бойлерплейт и аудит идут через инструмент. И качество фронта реально выше, чем если бы я в одиночку всё это печатал руками вечерами.

Если вы фронт-разработчик и ещё не пробовали Claude Code на полноценном проекте, попробуйте. Это совсем другой опыт, не “ChatGPT в браузере”.

Та самая мультиязычность, ради которой мы и не запускаемся

Сербия двуязычная сама по себе (кириллица и латиница), плюс к нам приезжают русские, англичане, китайцы. Если ты хочешь площадку, которая работает не только для местных, у тебя есть два пути: либо переводить вручную (это смерть на 10 тысячах объявлений), либо строить AI-пайплайн.

Я выбрал второй.

Прямо сейчас я тестирую AI-переводчики. Гоняю DeepSeek, пробую ChatGPT, сравниваю качество, скорость, цену за миллион токенов, поведение на сербской латинице и кириллице, на сленге, на названиях моделей телефонов. Перевод “iPhone 12 Pro Max в идеале, торг уместен, Београд центар” — это не просто текст, это смесь языков и реалий, и не каждая модель с этим справляется.

В бэке под это спроектирован отдельный модуль Translations с фоновым воркером на BackgroundService и очередью в Postgres через FOR UPDATE SKIP LOCKED. Админка не висит, когда ты запускаешь bulk-перевод сотни объявлений. Она кидает задачу в очередь и опрашивает прогресс. Все переводы хранятся в jsonb-полях *_i18n прямо на сущностях, фронт читает их через единый resolveI18n() на сервере. То есть SEO-страница на сербском, английском и русском это разные URL, разные мета, разный контент, но один и тот же объект в базе.

Из-за этого я и не запускаюсь. Я хочу, чтобы при старте у нас уже был лучший SEO и реально работающая мультиязычность на тысячах объявлений, а не “мы потом доделаем”. Один раз войти в гугл с кривыми переводами и битыми мета-тегами это значит на полгода застрять во второй десятке выдачи.

Что мы вложили и почему ещё не выгорели

Около миллиона динаров личных. Это не “мы привлекли раунд”, это деньги, которые могли бы пойти на что угодно другое. И ещё пара тысяч часов вечерами и выходными. Мы оба работаем, проект пилим в свободное время и в отпусках.

Можно было запуститься полгода назад. С половиной фичей, без нормальных переводов, с поиском, который не учитывает падежи сербского. Мы получили бы первых пользователей, кучу негатива и осадок “ну, ещё один такой же”.

Я выбрал другой путь. Я хочу, чтобы человек, который зашёл на RSale в первый раз, сказал “о, нормально сделано”. А не “очередная помойка”.

Это и есть, наверное, главное, что я понял за этот год: качество это не “идеализм”, это маркетинг. Особенно в Сербии, где люди передают друг другу хорошие места из рук в руки, и сарафанное радио сильнее любой рекламы в инстаграме.

Что будет на старте

  • Объявления товаров и услуг с гео-поиском по радиусу.

  • Реал-тайм чат между сторонами по конкретному объявлению.

  • Бронирование услуг по календарю.

  • Профили продавцов с рейтингами, отзывами, верификацией.

  • Промоушены и поднятие объявлений в выдаче.

  • Блог про жизнь, покупки, мастеров в Сербии.

  • Три языка с честными SEO-страницами под каждый.

  • Админка, которая позволяет нам реально модерировать, а не “ну как-нибудь”.

Что хочется сказать в конце

Сербия дала мне дом, людей вокруг, ритм жизни, который я люблю. RSale это мой способ сказать ей спасибо. Это не стартап ради экзита, это проект, который я хочу видеть живым и нужным через десять лет.

Мы с другом тащим это вдвоём. Без инвесторов, без хайпа, без громких постов в линкедине. Просто работаем, тестируем, переписываем, снова тестируем. И знаете, мне в кайф.

Хочу спросить вас, если вы дочитали до этого места: какую одну фичу вы бы добавили в сербский классифайд, чтобы он стал для вас местом, куда вы возвращаетесь? Что-то, чего вам не хватает в существующих площадках, какая-то мелочь или большая идея, всё равно. Напишите в комментариях, я читаю каждое сообщение, и многое реально попадает в бэклог.

Хвала вам на читању. Видимо се на rsale.net


메타데이터
post_id
2c3e1b87ca6b
slug
как-мы-вдвоём-с-другом-строим-классифайд-в-сербии-вложили-миллион-динаров-и-до-сих-пор-не-2c3e1b87ca6b
url
https://medium.com/@iammaximbaranov/%D0%BA%D0%B0%D0%BA-%D0%BC%D1%8B-%D0%B2%D0%B4%D0%B2%D0%BE%D1%91%D0%BC-%D1%81-%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%BC-%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BC-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B0%D0%B9%D0%B4-%D0%B2-%D1%81%D0%B5%D1%80%D0%B1%D0%B8%D0%B8-%D0%B2%D0%BB%D0%BE%D0%B6%D0%B8%D0%BB%D0%B8-%D0%BC%D0%B8%D0%BB%D0%BB%D0%B8%D0%BE%D0%BD-%D0%B4%D0%B8%D0%BD%D0%B0%D1%80%D0%BE%D0%B2-%D0%B8-%D0%B4%D0%BE-%D1%81%D0%B8%D1%85-%D0%BF%D0%BE%D1%80-%D0%BD%D0%B5-2c3e1b87ca6b
canonical_url
https://medium.com/@iammaximbaranov/%D0%BA%D0%B0%D0%BA-%D0%BC%D1%8B-%D0%B2%D0%B4%D0%B2%D0%BE%D1%91%D0%BC-%D1%81-%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%BC-%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BC-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B0%D0%B9%D0%B4-%D0%B2-%D1%81%D0%B5%D1%80%D0%B1%D0%B8%D0%B8-%D0%B2%D0%BB%D0%BE%D0%B6%D0%B8%D0%BB%D0%B8-%D0%BC%D0%B8%D0%BB%D0%BB%D0%B8%D0%BE%D0%BD-%D0%B4%D0%B8%D0%BD%D0%B0%D1%80%D0%BE%D0%B2-%D0%B8-%D0%B4%D0%BE-%D1%81%D0%B8%D1%85-%D0%BF%D0%BE%D1%80-%D0%BD%D0%B5-2c3e1b87ca6b
author_url
https://medium.com/@iammaximbaranov
status
ok
fetched_at
2026-07-26 02:44:51