Технические статьи — архитектура C# .NET и интеграция ИИ

Архитектурные решения, разборы реализаций и честные истории о том, что пошло не так. Написано инженерами, которые сами создавали этот код.

Почему ревью кода, сгенерированного ИИ, часто дороже самостоятельного написания
Современный подход к разработке все больше сводится к тезису - код должен писать ИИ, а разработчик лишь направляет его в нужную сторону и проверяет результаты. А то, что отревьюить сгенерированный код так, чтобы ему довериться, часто дольше, чем написать его самостоятельно, старательно опускается.
Read →
Telegram Login Widget vs авторизация через Mini App в .NET — две схемы валидации, один JWT
Часть 13 цикла о разработке Telegram-таск-трекера в одиночку. Пользователи просили добавить веб-версию вне Telegram Mini App, но для этого нужно было реализовать отдельную авторизацию. Добавление Telegram Login Widget не потребовало больших доработок - виджет работает через тот же JWT, что и Mini App, а само приложение почти не зависит от Telegram после выполнения авторизации.
Read →
Объединение группы изображений в одну запись ботом в Telegram — обрабатываем медиагруппы и правки без использования таймеров
Часть 12 цикла о разработке Telegram-таск-трекера в одиночку. Telegram присылает альбом изображений отдельными сообщений, а правки — новыми апдейтами. Разбираем, как собрать медиагруппу в одну запись без привычного таймера-аккумулятора и как трактовать правку как обновление, а не дубль.
Read →
Сохраняем медиа из Telegram-бота — храним превью, стримим оригинал
Часть 11 цикла о разработке Telegram-таск-трекера в одиночку. Учим бота работать с фото и видео, разбираем решение с хранением файлов - маленькие превью в локальном хранилище и прямой стриминг больших файлов прямиком из Telegram, без буферизации в памяти.
Read →
Почему пользователи снова и снова выбирали «Сохраненные сообщения» в Telegram вместо нашего бота — и что мы изменили
Часть 10 цикла о разработке Telegram-таск-трекера в одиночку. Рассказываем о продуктовой ошибке — мы добавили в бота выбор эпика и статуса, но реальные пользователи продолжали использовать «Сохраненные сообщения» — и о том, как ее исправляли.
Read →
Когда не стоит делать внешний ключ nullable — моделирование пустого состояния отдельной строкой
Часть 9 цикла о разработке Telegram-таск-трекера в одиночку. Слой issue в веб-приложении и решение по проектированию БД в его центре — когда nullable внешний ключ это неверный выбор, а отдельная строка-«по умолчанию» лучше, на примере issue, эпиков и бэклога.
Read →
Аутентификация Telegram Mini App в .NET от и до — валидация initData, выпуск JWT и фронтенд на Nuxt
Часть 8 цикла о разработке Telegram-таск-трекера в одиночку. Полный флоу аутентификации Telegram Mini App в реальном приложении на .NET и Nuxt — валидация подписи initData на сервере через HMAC-SHA256, выпуск и использование JWT-bearer, чтение пользователя из HttpContext и почему важен CORS.
Read →
Деплой Nuxt Telegram Mini App. Настройка HTTPS на nginx с Let's Encrypt. Новый мини-апп через BotFather
Часть 7 цикла о разработке Telegram-таск-трекера в одиночку. Как задеплоить Nuxt Mini App в связке nginx + HTTPS + Let's Encrypt, настроить автопродление сертификатов через certbot, зарегистрировать mini app в BotFather и протестировать его локально через ngrok.
Read →
Деплой .NET-приложения и PostgreSQL на дешёвый VPS через Docker Compose
Часть 6 цикла о разработке Telegram-таск-трекера в одиночку. Деплой на дешевый VPS через Docker Compose — self-hosted PostgreSQL, настроенный под 1 ГБ RAM, GitHub CI-пайплайн, работающий на push в main и описание докерфайлов.
Read →
Чистая архитектура Telegram-бота на .NET — контроллеры вместо гигантского switch
Часть 5 цикла о разработке Telegram-таск-трекера в одиночку. Чистый Telegram-бот на .NET с контроллерами и middleware в стиле ASP.NET вместо гигантского switch, слоёная структура решения и связка EF Core и linq2db на одних моделях для запросов, с которыми EF Core справляется плохо.
Read →
Выбор стека пет-проекта для соло-разработки — .NET, PostgreSQL, Nuxt и почему мы предпочитаем скучные технологии
Часть 4 цикла о разработке Telegram-таск-трекера в одиночку. Причины выбора .NET 10, PostgreSQL 18, Nuxt 4 и Vue 3. Немного о переезде с MongoDB на Postgres в прошлом проекте, который научил нас отдавать предпочтение скучным стабильным технологиям.
Read →
От «Сохраненных сообщений» в Telegram к настоящему таск-трекеру — определяем путь пользователя
Часть 3 цикла о разработке Telegram-таск-трекера в одиночку. Почему «Сохраненные сообщения» неудобны для ведения дел, с какого минимального сценария начинались Laraue Boards и почему путь пользователя определяется до начала разработки.
Read →
Прототипируем интерфейс с ИИ до написания кода
Часть 2 цикла о разработке Telegram-таск-трекера в одиночку. Почему мы начинаем с интерфейса, как HTML-прототипы от ИИ заменили Figma и каким получился первый прототип Laraue Boards.
Read →
Jira-альтернатива в одиночку — зачем мы её делаем и ссылки на репозитории
Часть 1 цикла о разработке Telegram-таск-трекера в одиночку с ИИ. Какую проблему мы решаем, зачем нужен ещё один таск-трекер, на каких двух репозиториях построен цикл статей.
Read →
Как мы решаем, что разрабатывать — проверка продуктовой идеи на переполненном рынке
Проверка продуктовой идеи до написания кода — исследуем рынок, публичное тестирование идеи, оцениваем с помощью ИИ, реально ли конкурировать за нужные ключевые слова.
Read →
Как мы разрабатываем — инженерные принципы при работе над реальными продуктами
Инженерные принципы, по которым делаются проекты Laraue — начинаем с пути пользователя, не переусложняем раньше времени, делим логику на слои, изолируем сторонние интеграции, где ИИ помогает, а где не допускается до кодовой базы.
Read →