#nextjs — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #nextjs, aggregated by home.social.
-
Архитектура безопасности во frontend-приложениях: Server Actions и защита данных в эпоху Next.js
Мир frontend-разработки за последние несколько лет изменился коренным образом. Если еще пять лет назад стандартом де-факто были одностраничные приложения (SPA), где вся логика выполнялась в браузере, а сервер был просто REST API, то сегодня мы наблюдаем массовый переход к гибридным архитектурам. Next.js с его Server Components и Server Actions стал не просто популярным фреймворком, а промышленным стандартом для enterprise-приложений. Этот переход принес с собой множество преимуществ: улучшенную производительность, лучший SEO, упрощенную разработку. Однако он же изменил и модель угроз, с которыми сталкиваются разработчики. Привычные методы защиты, основанные на JWT в заголовках и CORS-политиках, больше не обеспечивают полную безопасность. Серверная логика теперь исполняется в непосредственной близости от клиента, а граница между фронтендом и бэкендом стала размытой (для некоторых сценариев). По данным исследований Snyk и других security-вендоров, 39% облачных средств содержали уязвимые версии React и Next.js в 2024-2025 годах. Это не просто статистика. Это реальные приложения, обрабатывающие данные пользователей, платежную информацию и конфиденциальные бизнес-данные. Уязвимость CVE-2025-55182, получившая максимальный рейтинг CVSS 10.0, показала, насколько критичными могут быть последствия недостаточного внимания к безопасности в современных frontend-приложениях. React Server Components (RSC) стали новым стандартом, но вместе с ними пришли новые векторы атак. Server Actions, предоставляющие удобный способ вызова серверной логики прямо из компонентов, фактически являются публичными HTTP-эндпоинтами. При неправильной конфигурации они могут стать лазейкой для злоумышленников. Традиционный подход security through obscurity здесь не работает: скрытие эндпоинтов не защитит от целенаправленного перебора.
https://habr.com/ru/companies/simbirsoft/articles/1039136/
#безопасность #архитектура #nextjs #react #react_server_components #server_actions #security #security_through_obscurity
-
Архитектура безопасности во frontend-приложениях: Server Actions и защита данных в эпоху Next.js
Мир frontend-разработки за последние несколько лет изменился коренным образом. Если еще пять лет назад стандартом де-факто были одностраничные приложения (SPA), где вся логика выполнялась в браузере, а сервер был просто REST API, то сегодня мы наблюдаем массовый переход к гибридным архитектурам. Next.js с его Server Components и Server Actions стал не просто популярным фреймворком, а промышленным стандартом для enterprise-приложений. Этот переход принес с собой множество преимуществ: улучшенную производительность, лучший SEO, упрощенную разработку. Однако он же изменил и модель угроз, с которыми сталкиваются разработчики. Привычные методы защиты, основанные на JWT в заголовках и CORS-политиках, больше не обеспечивают полную безопасность. Серверная логика теперь исполняется в непосредственной близости от клиента, а граница между фронтендом и бэкендом стала размытой (для некоторых сценариев). По данным исследований Snyk и других security-вендоров, 39% облачных средств содержали уязвимые версии React и Next.js в 2024-2025 годах. Это не просто статистика. Это реальные приложения, обрабатывающие данные пользователей, платежную информацию и конфиденциальные бизнес-данные. Уязвимость CVE-2025-55182, получившая максимальный рейтинг CVSS 10.0, показала, насколько критичными могут быть последствия недостаточного внимания к безопасности в современных frontend-приложениях. React Server Components (RSC) стали новым стандартом, но вместе с ними пришли новые векторы атак. Server Actions, предоставляющие удобный способ вызова серверной логики прямо из компонентов, фактически являются публичными HTTP-эндпоинтами. При неправильной конфигурации они могут стать лазейкой для злоумышленников. Традиционный подход security through obscurity здесь не работает: скрытие эндпоинтов не защитит от целенаправленного перебора.
https://habr.com/ru/companies/simbirsoft/articles/1039136/
#безопасность #архитектура #nextjs #react #react_server_components #server_actions #security #security_through_obscurity
-
Архитектура безопасности во frontend-приложениях: Server Actions и защита данных в эпоху Next.js
Мир frontend-разработки за последние несколько лет изменился коренным образом. Если еще пять лет назад стандартом де-факто были одностраничные приложения (SPA), где вся логика выполнялась в браузере, а сервер был просто REST API, то сегодня мы наблюдаем массовый переход к гибридным архитектурам. Next.js с его Server Components и Server Actions стал не просто популярным фреймворком, а промышленным стандартом для enterprise-приложений. Этот переход принес с собой множество преимуществ: улучшенную производительность, лучший SEO, упрощенную разработку. Однако он же изменил и модель угроз, с которыми сталкиваются разработчики. Привычные методы защиты, основанные на JWT в заголовках и CORS-политиках, больше не обеспечивают полную безопасность. Серверная логика теперь исполняется в непосредственной близости от клиента, а граница между фронтендом и бэкендом стала размытой (для некоторых сценариев). По данным исследований Snyk и других security-вендоров, 39% облачных средств содержали уязвимые версии React и Next.js в 2024-2025 годах. Это не просто статистика. Это реальные приложения, обрабатывающие данные пользователей, платежную информацию и конфиденциальные бизнес-данные. Уязвимость CVE-2025-55182, получившая максимальный рейтинг CVSS 10.0, показала, насколько критичными могут быть последствия недостаточного внимания к безопасности в современных frontend-приложениях. React Server Components (RSC) стали новым стандартом, но вместе с ними пришли новые векторы атак. Server Actions, предоставляющие удобный способ вызова серверной логики прямо из компонентов, фактически являются публичными HTTP-эндпоинтами. При неправильной конфигурации они могут стать лазейкой для злоумышленников. Традиционный подход security through obscurity здесь не работает: скрытие эндпоинтов не защитит от целенаправленного перебора.
https://habr.com/ru/companies/simbirsoft/articles/1039136/
#безопасность #архитектура #nextjs #react #react_server_components #server_actions #security #security_through_obscurity
-
Архитектура безопасности во frontend-приложениях: Server Actions и защита данных в эпоху Next.js
Мир frontend-разработки за последние несколько лет изменился коренным образом. Если еще пять лет назад стандартом де-факто были одностраничные приложения (SPA), где вся логика выполнялась в браузере, а сервер был просто REST API, то сегодня мы наблюдаем массовый переход к гибридным архитектурам. Next.js с его Server Components и Server Actions стал не просто популярным фреймворком, а промышленным стандартом для enterprise-приложений. Этот переход принес с собой множество преимуществ: улучшенную производительность, лучший SEO, упрощенную разработку. Однако он же изменил и модель угроз, с которыми сталкиваются разработчики. Привычные методы защиты, основанные на JWT в заголовках и CORS-политиках, больше не обеспечивают полную безопасность. Серверная логика теперь исполняется в непосредственной близости от клиента, а граница между фронтендом и бэкендом стала размытой (для некоторых сценариев). По данным исследований Snyk и других security-вендоров, 39% облачных средств содержали уязвимые версии React и Next.js в 2024-2025 годах. Это не просто статистика. Это реальные приложения, обрабатывающие данные пользователей, платежную информацию и конфиденциальные бизнес-данные. Уязвимость CVE-2025-55182, получившая максимальный рейтинг CVSS 10.0, показала, насколько критичными могут быть последствия недостаточного внимания к безопасности в современных frontend-приложениях. React Server Components (RSC) стали новым стандартом, но вместе с ними пришли новые векторы атак. Server Actions, предоставляющие удобный способ вызова серверной логики прямо из компонентов, фактически являются публичными HTTP-эндпоинтами. При неправильной конфигурации они могут стать лазейкой для злоумышленников. Традиционный подход security through obscurity здесь не работает: скрытие эндпоинтов не защитит от целенаправленного перебора.
https://habr.com/ru/companies/simbirsoft/articles/1039136/
#безопасность #архитектура #nextjs #react #react_server_components #server_actions #security #security_through_obscurity
-
CVE, Shell и побег из контейнера: испытываем возможности PT Cloud Application Firewall
Привет, Хабр! Меня зовут Иван Чеботарев, инженер направления защиты приложений в К2 Кибербезопасность . В статье рассмотрю, как PT Cloud Application Firewall (ucWAF) реагирует на побег из контейнера после RCE с использованием новой CVE-2025-55182 . Это уязвимость в Next.js, открывающая Remote Code Execution через механизм Server Actions. Я собрал тестовый стенд с уязвимым Next.js-и проверил: классический веб-шелл, Reverse Shell и побег из контейнера. Next.js — один из самых популярных фреймворков для фронтенда, а Server Actions включены по умолчанию начиная с 14-й версии. Если вы деплоите Next.js в контейнерах, эта статья покажет, как выглядит полная цепочка от RCE до выхода на хост, и на каком этапе WAF может ее остановить.
https://habr.com/ru/companies/k2tech/articles/1038048/
#cve202555182 #nextjs #server_actions #waf #pt_cloud_application_firewall #rce #reverse_shell #побег_из_контейнера #docker
-
CVE, Shell и побег из контейнера: испытываем возможности PT Cloud Application Firewall
Привет, Хабр! Меня зовут Иван Чеботарев, инженер направления защиты приложений в К2 Кибербезопасность . В статье рассмотрю, как PT Cloud Application Firewall (ucWAF) реагирует на побег из контейнера после RCE с использованием новой CVE-2025-55182 . Это уязвимость в Next.js, открывающая Remote Code Execution через механизм Server Actions. Я собрал тестовый стенд с уязвимым Next.js-и проверил: классический веб-шелл, Reverse Shell и побег из контейнера. Next.js — один из самых популярных фреймворков для фронтенда, а Server Actions включены по умолчанию начиная с 14-й версии. Если вы деплоите Next.js в контейнерах, эта статья покажет, как выглядит полная цепочка от RCE до выхода на хост, и на каком этапе WAF может ее остановить.
https://habr.com/ru/companies/k2tech/articles/1038048/
#cve202555182 #nextjs #server_actions #waf #pt_cloud_application_firewall #rce #reverse_shell #побег_из_контейнера #docker
-
CVE, Shell и побег из контейнера: испытываем возможности PT Cloud Application Firewall
Привет, Хабр! Меня зовут Иван Чеботарев, инженер направления защиты приложений в К2 Кибербезопасность . В статье рассмотрю, как PT Cloud Application Firewall (ucWAF) реагирует на побег из контейнера после RCE с использованием новой CVE-2025-55182 . Это уязвимость в Next.js, открывающая Remote Code Execution через механизм Server Actions. Я собрал тестовый стенд с уязвимым Next.js-и проверил: классический веб-шелл, Reverse Shell и побег из контейнера. Next.js — один из самых популярных фреймворков для фронтенда, а Server Actions включены по умолчанию начиная с 14-й версии. Если вы деплоите Next.js в контейнерах, эта статья покажет, как выглядит полная цепочка от RCE до выхода на хост, и на каком этапе WAF может ее остановить.
https://habr.com/ru/companies/k2tech/articles/1038048/
#cve202555182 #nextjs #server_actions #waf #pt_cloud_application_firewall #rce #reverse_shell #побег_из_контейнера #docker
-
CVE, Shell и побег из контейнера: испытываем возможности PT Cloud Application Firewall
Привет, Хабр! Меня зовут Иван Чеботарев, инженер направления защиты приложений в К2 Кибербезопасность . В статье рассмотрю, как PT Cloud Application Firewall (ucWAF) реагирует на побег из контейнера после RCE с использованием новой CVE-2025-55182 . Это уязвимость в Next.js, открывающая Remote Code Execution через механизм Server Actions. Я собрал тестовый стенд с уязвимым Next.js-и проверил: классический веб-шелл, Reverse Shell и побег из контейнера. Next.js — один из самых популярных фреймворков для фронтенда, а Server Actions включены по умолчанию начиная с 14-й версии. Если вы деплоите Next.js в контейнерах, эта статья покажет, как выглядит полная цепочка от RCE до выхода на хост, и на каком этапе WAF может ее остановить.
https://habr.com/ru/companies/k2tech/articles/1038048/
#cve202555182 #nextjs #server_actions #waf #pt_cloud_application_firewall #rce #reverse_shell #побег_из_контейнера #docker
-
Иду в топ ниши строительных калькуляторов. Три месяца спустя
Когда я начинал этот pet-проект, у меня в голове была одна цель: за полтора-два года вытеснить ноунейм-сайты из верхушки выдачи Яндекса и Google по запросам типа «калькулятор бетона», «расчёт утеплителя», «сколько нужно плитки на ванную». Не зайти пятым на странице, не получить какой-то «нормальный трафик», а конкретно занять первое место в нише. Сайт — getmasterok.ru , ему около трёх месяцев. Но какой же я был легкомысленный и как я сильно ошибался. Амбиция выглядит наивно, и я отдаю себе в этом отчёт. Ниша строительных калькуляторов забита под потолок: десятки доменов, заточенных под партнёрки крупного DIY-ретейла, ещё столько же пустых SEO-шаблонов с одним и тем же текстом, прогнанным через рерайт. Туда не идут крупные команды, потому что выручка с лида в этой нише небольшая. Туда идут одиночки, маркетологи на фрилансе и редкие подрядчики, которым заказали сайт условно за несколько тысяч под ключ. Качество предложения в среднем на уровне 2010 года. Это и есть причина, по которой я туда полез. Когда вся ниша держится на технически неряшливых продуктах, у одиночки с инженерным фоном есть окно. Я не питаю иллюзий, что «возьму качеством и всё». Я понимаю, что Google маринует новые домены, что Яндекс хочет видеть поведенческие, что SEO без бюджета — это игра вдолгую. Но проверить гипотезу, реально ли в этой нише отбить лидерство одним инженерным качеством расчётов и нормальным UX, мне интересно. Если не получится за два года, я хотя бы пойму, чего не хватает помимо качества продукта.
https://habr.com/ru/articles/1037806/
#nextjs #строительство #строительный_калькулятор #deepseek_v4_pro #хостинг #хостинг_сайтов #nodejs #nodejs_фреймворки #gemini #ИИПрораб
-
Иду в топ ниши строительных калькуляторов. Три месяца спустя
Когда я начинал этот pet-проект, у меня в голове была одна цель: за полтора-два года вытеснить ноунейм-сайты из верхушки выдачи Яндекса и Google по запросам типа «калькулятор бетона», «расчёт утеплителя», «сколько нужно плитки на ванную». Не зайти пятым на странице, не получить какой-то «нормальный трафик», а конкретно занять первое место в нише. Сайт — getmasterok.ru , ему около трёх месяцев. Но какой же я был легкомысленный и как я сильно ошибался. Амбиция выглядит наивно, и я отдаю себе в этом отчёт. Ниша строительных калькуляторов забита под потолок: десятки доменов, заточенных под партнёрки крупного DIY-ретейла, ещё столько же пустых SEO-шаблонов с одним и тем же текстом, прогнанным через рерайт. Туда не идут крупные команды, потому что выручка с лида в этой нише небольшая. Туда идут одиночки, маркетологи на фрилансе и редкие подрядчики, которым заказали сайт условно за несколько тысяч под ключ. Качество предложения в среднем на уровне 2010 года. Это и есть причина, по которой я туда полез. Когда вся ниша держится на технически неряшливых продуктах, у одиночки с инженерным фоном есть окно. Я не питаю иллюзий, что «возьму качеством и всё». Я понимаю, что Google маринует новые домены, что Яндекс хочет видеть поведенческие, что SEO без бюджета — это игра вдолгую. Но проверить гипотезу, реально ли в этой нише отбить лидерство одним инженерным качеством расчётов и нормальным UX, мне интересно. Если не получится за два года, я хотя бы пойму, чего не хватает помимо качества продукта.
https://habr.com/ru/articles/1037806/
#nextjs #строительство #строительный_калькулятор #deepseek_v4_pro #хостинг #хостинг_сайтов #nodejs #nodejs_фреймворки #gemini #ИИПрораб
-
Иду в топ ниши строительных калькуляторов. Три месяца спустя
Когда я начинал этот pet-проект, у меня в голове была одна цель: за полтора-два года вытеснить ноунейм-сайты из верхушки выдачи Яндекса и Google по запросам типа «калькулятор бетона», «расчёт утеплителя», «сколько нужно плитки на ванную». Не зайти пятым на странице, не получить какой-то «нормальный трафик», а конкретно занять первое место в нише. Сайт — getmasterok.ru , ему около трёх месяцев. Но какой же я был легкомысленный и как я сильно ошибался. Амбиция выглядит наивно, и я отдаю себе в этом отчёт. Ниша строительных калькуляторов забита под потолок: десятки доменов, заточенных под партнёрки крупного DIY-ретейла, ещё столько же пустых SEO-шаблонов с одним и тем же текстом, прогнанным через рерайт. Туда не идут крупные команды, потому что выручка с лида в этой нише небольшая. Туда идут одиночки, маркетологи на фрилансе и редкие подрядчики, которым заказали сайт условно за несколько тысяч под ключ. Качество предложения в среднем на уровне 2010 года. Это и есть причина, по которой я туда полез. Когда вся ниша держится на технически неряшливых продуктах, у одиночки с инженерным фоном есть окно. Я не питаю иллюзий, что «возьму качеством и всё». Я понимаю, что Google маринует новые домены, что Яндекс хочет видеть поведенческие, что SEO без бюджета — это игра вдолгую. Но проверить гипотезу, реально ли в этой нише отбить лидерство одним инженерным качеством расчётов и нормальным UX, мне интересно. Если не получится за два года, я хотя бы пойму, чего не хватает помимо качества продукта.
https://habr.com/ru/articles/1037806/
#nextjs #строительство #строительный_калькулятор #deepseek_v4_pro #хостинг #хостинг_сайтов #nodejs #nodejs_фреймворки #gemini #ИИПрораб
-
Иду в топ ниши строительных калькуляторов. Три месяца спустя
Когда я начинал этот pet-проект, у меня в голове была одна цель: за полтора-два года вытеснить ноунейм-сайты из верхушки выдачи Яндекса и Google по запросам типа «калькулятор бетона», «расчёт утеплителя», «сколько нужно плитки на ванную». Не зайти пятым на странице, не получить какой-то «нормальный трафик», а конкретно занять первое место в нише. Сайт — getmasterok.ru , ему около трёх месяцев. Но какой же я был легкомысленный и как я сильно ошибался. Амбиция выглядит наивно, и я отдаю себе в этом отчёт. Ниша строительных калькуляторов забита под потолок: десятки доменов, заточенных под партнёрки крупного DIY-ретейла, ещё столько же пустых SEO-шаблонов с одним и тем же текстом, прогнанным через рерайт. Туда не идут крупные команды, потому что выручка с лида в этой нише небольшая. Туда идут одиночки, маркетологи на фрилансе и редкие подрядчики, которым заказали сайт условно за несколько тысяч под ключ. Качество предложения в среднем на уровне 2010 года. Это и есть причина, по которой я туда полез. Когда вся ниша держится на технически неряшливых продуктах, у одиночки с инженерным фоном есть окно. Я не питаю иллюзий, что «возьму качеством и всё». Я понимаю, что Google маринует новые домены, что Яндекс хочет видеть поведенческие, что SEO без бюджета — это игра вдолгую. Но проверить гипотезу, реально ли в этой нише отбить лидерство одним инженерным качеством расчётов и нормальным UX, мне интересно. Если не получится за два года, я хотя бы пойму, чего не хватает помимо качества продукта.
https://habr.com/ru/articles/1037806/
#nextjs #строительство #строительный_калькулятор #deepseek_v4_pro #хостинг #хостинг_сайтов #nodejs #nodejs_фреймворки #gemini #ИИПрораб
-
Иду в топ ниши строительных калькуляторов. Три месяца спустя Когда я начинал этот pet-проект, у меня в голове ...
#next.js #строительство #строительный #калькулятор #deepseek #v4 #pro #хостинг #хостинг #сайтов #node.js
Origin | Interest | Match -
Чтобы не выглядело как пет-проект»: как я в одиночку сделал премиальный интерфейс кино-сервиса (с кодом)
В прошлой статье я рассказывал, каково в одиночку тащить фуллстек-проект, который разросся до кино-соцсети. В комментариях несколько раз спросили про конкретику — «покажи код», «как сделал, что не выглядит как очередной пет-проект». Логично: дизайн — это то, по чему встречают. Поэтому держите вторую часть, уже техническую и с кодом. Без маркетинга, только решения, которые реально сделали интерфейс «дорогим», и пара бэкенд-хитростей в довесок. Сразу дисклеймер: я не дизайнер. Всё нажито методом «смотрю на референсы (Letterboxd, Mubi, KinoPoisk HD) и пытаюсь повторить ощущение». Оказалось, премиальность — это не про дорогие шрифты, а про несколько повторяющихся приёмов. Разберём пять. 1. Акцентный цвет из постера фильма — фича, которая дороже всего «продаёт» Самое заметное решение. Раньше у меня на всех страницах был один статичный фиолетовый акцент — и это выглядело дёшево и одинаково. Идея: пусть каждая страница фильма подсвечивается доминантным цветом его постера. Заходишь на мрачный нуар — интерфейс уходит в холодный синий, открываешь комедию — тёплый янтарь. Страница будто «сделана под этот фильм». Делается без всяких ML, прямо в браузере через canvas: рисуем постер в крошечный буфер 32×48, усредняем цвета (выкидывая чёрные рамки и серость), переводим в HSL и принудительно «насыщаем», потому что постеры часто тусклые. Результат кладём в CSS-переменную — и весь интерфейс подхватывает её.
https://habr.com/ru/articles/1037818/
#Nextjs #React #CSS #glassmorphism #canvas #Web_Push #VAPID #FastAPI #петпроект #vibemuvik
-
Чтобы не выглядело как пет-проект»: как я в одиночку сделал премиальный интерфейс кино-сервиса (с кодом)
В прошлой статье я рассказывал, каково в одиночку тащить фуллстек-проект, который разросся до кино-соцсети. В комментариях несколько раз спросили про конкретику — «покажи код», «как сделал, что не выглядит как очередной пет-проект». Логично: дизайн — это то, по чему встречают. Поэтому держите вторую часть, уже техническую и с кодом. Без маркетинга, только решения, которые реально сделали интерфейс «дорогим», и пара бэкенд-хитростей в довесок. Сразу дисклеймер: я не дизайнер. Всё нажито методом «смотрю на референсы (Letterboxd, Mubi, KinoPoisk HD) и пытаюсь повторить ощущение». Оказалось, премиальность — это не про дорогие шрифты, а про несколько повторяющихся приёмов. Разберём пять. 1. Акцентный цвет из постера фильма — фича, которая дороже всего «продаёт» Самое заметное решение. Раньше у меня на всех страницах был один статичный фиолетовый акцент — и это выглядело дёшево и одинаково. Идея: пусть каждая страница фильма подсвечивается доминантным цветом его постера. Заходишь на мрачный нуар — интерфейс уходит в холодный синий, открываешь комедию — тёплый янтарь. Страница будто «сделана под этот фильм». Делается без всяких ML, прямо в браузере через canvas: рисуем постер в крошечный буфер 32×48, усредняем цвета (выкидывая чёрные рамки и серость), переводим в HSL и принудительно «насыщаем», потому что постеры часто тусклые. Результат кладём в CSS-переменную — и весь интерфейс подхватывает её.
https://habr.com/ru/articles/1037818/
#Nextjs #React #CSS #glassmorphism #canvas #Web_Push #VAPID #FastAPI #петпроект #vibemuvik
-
Чтобы не выглядело как пет-проект»: как я в одиночку сделал премиальный интерфейс кино-сервиса (с кодом)
В прошлой статье я рассказывал, каково в одиночку тащить фуллстек-проект, который разросся до кино-соцсети. В комментариях несколько раз спросили про конкретику — «покажи код», «как сделал, что не выглядит как очередной пет-проект». Логично: дизайн — это то, по чему встречают. Поэтому держите вторую часть, уже техническую и с кодом. Без маркетинга, только решения, которые реально сделали интерфейс «дорогим», и пара бэкенд-хитростей в довесок. Сразу дисклеймер: я не дизайнер. Всё нажито методом «смотрю на референсы (Letterboxd, Mubi, KinoPoisk HD) и пытаюсь повторить ощущение». Оказалось, премиальность — это не про дорогие шрифты, а про несколько повторяющихся приёмов. Разберём пять. 1. Акцентный цвет из постера фильма — фича, которая дороже всего «продаёт» Самое заметное решение. Раньше у меня на всех страницах был один статичный фиолетовый акцент — и это выглядело дёшево и одинаково. Идея: пусть каждая страница фильма подсвечивается доминантным цветом его постера. Заходишь на мрачный нуар — интерфейс уходит в холодный синий, открываешь комедию — тёплый янтарь. Страница будто «сделана под этот фильм». Делается без всяких ML, прямо в браузере через canvas: рисуем постер в крошечный буфер 32×48, усредняем цвета (выкидывая чёрные рамки и серость), переводим в HSL и принудительно «насыщаем», потому что постеры часто тусклые. Результат кладём в CSS-переменную — и весь интерфейс подхватывает её.
https://habr.com/ru/articles/1037818/
#Nextjs #React #CSS #glassmorphism #canvas #Web_Push #VAPID #FastAPI #петпроект #vibemuvik
-
Чтобы не выглядело как пет-проект»: как я в одиночку сделал премиальный интерфейс кино-сервиса (с кодом)
В прошлой статье я рассказывал, каково в одиночку тащить фуллстек-проект, который разросся до кино-соцсети. В комментариях несколько раз спросили про конкретику — «покажи код», «как сделал, что не выглядит как очередной пет-проект». Логично: дизайн — это то, по чему встречают. Поэтому держите вторую часть, уже техническую и с кодом. Без маркетинга, только решения, которые реально сделали интерфейс «дорогим», и пара бэкенд-хитростей в довесок. Сразу дисклеймер: я не дизайнер. Всё нажито методом «смотрю на референсы (Letterboxd, Mubi, KinoPoisk HD) и пытаюсь повторить ощущение». Оказалось, премиальность — это не про дорогие шрифты, а про несколько повторяющихся приёмов. Разберём пять. 1. Акцентный цвет из постера фильма — фича, которая дороже всего «продаёт» Самое заметное решение. Раньше у меня на всех страницах был один статичный фиолетовый акцент — и это выглядело дёшево и одинаково. Идея: пусть каждая страница фильма подсвечивается доминантным цветом его постера. Заходишь на мрачный нуар — интерфейс уходит в холодный синий, открываешь комедию — тёплый янтарь. Страница будто «сделана под этот фильм». Делается без всяких ML, прямо в браузере через canvas: рисуем постер в крошечный буфер 32×48, усредняем цвета (выкидывая чёрные рамки и серость), переводим в HSL и принудительно «насыщаем», потому что постеры часто тусклые. Результат кладём в CSS-переменную — и весь интерфейс подхватывает её.
https://habr.com/ru/articles/1037818/
#Nextjs #React #CSS #glassmorphism #canvas #Web_Push #VAPID #FastAPI #петпроект #vibemuvik
-
Один за всех: как я в одиночку тащу фуллстек-проект, который незаметно разросся до соцсети
Начиналось как «сделаю себе сайтик про кино на пару выходных». Закончилось каталогом на десятки тысяч карточек, лентой, профилями, рейтингами, совместным просмотром и кучей фоновых задач. И всё это тащит один человек — я сам себе фронт, бэк, девопс, дизайнер и поддержка. Делюсь сжато: стек и грабли, без воды. Стек выбирал не по хайпу, а по принципу «доеду и не утону в обслуживании»: FastAPI (быстро, асинхронно, автодоки), Next.js на React (SSR из коробки — критично для SEO), PostgreSQL (SQLite кончился на первых же конкурентных записях), Redis для кэша и рейт-лимитов. Nginx + systemd на обычном VPS. Никакого Kubernetes — для одного это способ обслуживать инфраструктуру вместо разработки. Грабли, на которых посидел: • Фоновое состояние в памяти + несколько воркеров = рассинхрон. Пользователи попадают в разные процессы, состояние не шарится. Лечение: либо общее хранилище, либо такие фичи в один воркер. • Права на файлы после сборки. Собрал под одним пользователем, сервис под другим — EACCES и белый экран. Теперь chown в чек-листе деплоя. • node_modules не переезжает Windows → Linux. Только чистая установка на целевой ОС. • dev и prod базы — разные миры. Один запуск скрипта «не туда» — и долго гадаешь, почему данные не меняются (а они меняются, в локальном SQLite, который никому не нужен). • Не запускай два тяжёлых процесса разом. Фоновая генерация + пересборка фронта = OOM-killer молча прибил процесс. Полчаса искал причину. • Кэш сборки трогать нельзя — «почистил на всякий» и сломал инкрементальную регенерацию страниц на сутки. Но самое тяжёлое — не код. Некому передать, если выгорел. Некому сделать ревью и сказать «ты идиот». Легко месяцами катиться не туда. Качели мотивации: сегодня горы свернёшь, завтра «зачем я это начал». Научился просто переживать спады и не принимать в них решений вроде «всё переписать». Что понял за это время: маленькие шаги бьют героизм; скучные бэкапы и чек-листы важнее красивой архитектуры; готовое и работающее лучше идеального ненаписанного. Один человек реально тащит удивительно много — если не воюет сам с собой за идеальность. Не ради пиара, а как живой пруф того, о чём пишу: всё описанное работает прямо сейчас — vibemuvik.ru Можно зайти и потыкать вживую. А вы тащите что-то в одиночку? На каком стеке, как боретесь с выгоранием и бесконечным бэклогом?
https://habr.com/ru/articles/1037554/
#петпроект #фуллстек #солоразработка #FastAPI #Nextjs #PostgreSQL #выгорание
-
Один за всех: как я в одиночку тащу фуллстек-проект, который незаметно разросся до соцсети
Начиналось как «сделаю себе сайтик про кино на пару выходных». Закончилось каталогом на десятки тысяч карточек, лентой, профилями, рейтингами, совместным просмотром и кучей фоновых задач. И всё это тащит один человек — я сам себе фронт, бэк, девопс, дизайнер и поддержка. Делюсь сжато: стек и грабли, без воды. Стек выбирал не по хайпу, а по принципу «доеду и не утону в обслуживании»: FastAPI (быстро, асинхронно, автодоки), Next.js на React (SSR из коробки — критично для SEO), PostgreSQL (SQLite кончился на первых же конкурентных записях), Redis для кэша и рейт-лимитов. Nginx + systemd на обычном VPS. Никакого Kubernetes — для одного это способ обслуживать инфраструктуру вместо разработки. Грабли, на которых посидел: • Фоновое состояние в памяти + несколько воркеров = рассинхрон. Пользователи попадают в разные процессы, состояние не шарится. Лечение: либо общее хранилище, либо такие фичи в один воркер. • Права на файлы после сборки. Собрал под одним пользователем, сервис под другим — EACCES и белый экран. Теперь chown в чек-листе деплоя. • node_modules не переезжает Windows → Linux. Только чистая установка на целевой ОС. • dev и prod базы — разные миры. Один запуск скрипта «не туда» — и долго гадаешь, почему данные не меняются (а они меняются, в локальном SQLite, который никому не нужен). • Не запускай два тяжёлых процесса разом. Фоновая генерация + пересборка фронта = OOM-killer молча прибил процесс. Полчаса искал причину. • Кэш сборки трогать нельзя — «почистил на всякий» и сломал инкрементальную регенерацию страниц на сутки. Но самое тяжёлое — не код. Некому передать, если выгорел. Некому сделать ревью и сказать «ты идиот». Легко месяцами катиться не туда. Качели мотивации: сегодня горы свернёшь, завтра «зачем я это начал». Научился просто переживать спады и не принимать в них решений вроде «всё переписать». Что понял за это время: маленькие шаги бьют героизм; скучные бэкапы и чек-листы важнее красивой архитектуры; готовое и работающее лучше идеального ненаписанного. Один человек реально тащит удивительно много — если не воюет сам с собой за идеальность. Не ради пиара, а как живой пруф того, о чём пишу: всё описанное работает прямо сейчас — vibemuvik.ru Можно зайти и потыкать вживую. А вы тащите что-то в одиночку? На каком стеке, как боретесь с выгоранием и бесконечным бэклогом?
https://habr.com/ru/articles/1037554/
#петпроект #фуллстек #солоразработка #FastAPI #Nextjs #PostgreSQL #выгорание
-
Один за всех: как я в одиночку тащу фуллстек-проект, который незаметно разросся до соцсети
Начиналось как «сделаю себе сайтик про кино на пару выходных». Закончилось каталогом на десятки тысяч карточек, лентой, профилями, рейтингами, совместным просмотром и кучей фоновых задач. И всё это тащит один человек — я сам себе фронт, бэк, девопс, дизайнер и поддержка. Делюсь сжато: стек и грабли, без воды. Стек выбирал не по хайпу, а по принципу «доеду и не утону в обслуживании»: FastAPI (быстро, асинхронно, автодоки), Next.js на React (SSR из коробки — критично для SEO), PostgreSQL (SQLite кончился на первых же конкурентных записях), Redis для кэша и рейт-лимитов. Nginx + systemd на обычном VPS. Никакого Kubernetes — для одного это способ обслуживать инфраструктуру вместо разработки. Грабли, на которых посидел: • Фоновое состояние в памяти + несколько воркеров = рассинхрон. Пользователи попадают в разные процессы, состояние не шарится. Лечение: либо общее хранилище, либо такие фичи в один воркер. • Права на файлы после сборки. Собрал под одним пользователем, сервис под другим — EACCES и белый экран. Теперь chown в чек-листе деплоя. • node_modules не переезжает Windows → Linux. Только чистая установка на целевой ОС. • dev и prod базы — разные миры. Один запуск скрипта «не туда» — и долго гадаешь, почему данные не меняются (а они меняются, в локальном SQLite, который никому не нужен). • Не запускай два тяжёлых процесса разом. Фоновая генерация + пересборка фронта = OOM-killer молча прибил процесс. Полчаса искал причину. • Кэш сборки трогать нельзя — «почистил на всякий» и сломал инкрементальную регенерацию страниц на сутки. Но самое тяжёлое — не код. Некому передать, если выгорел. Некому сделать ревью и сказать «ты идиот». Легко месяцами катиться не туда. Качели мотивации: сегодня горы свернёшь, завтра «зачем я это начал». Научился просто переживать спады и не принимать в них решений вроде «всё переписать». Что понял за это время: маленькие шаги бьют героизм; скучные бэкапы и чек-листы важнее красивой архитектуры; готовое и работающее лучше идеального ненаписанного. Один человек реально тащит удивительно много — если не воюет сам с собой за идеальность. Не ради пиара, а как живой пруф того, о чём пишу: всё описанное работает прямо сейчас — vibemuvik.ru Можно зайти и потыкать вживую. А вы тащите что-то в одиночку? На каком стеке, как боретесь с выгоранием и бесконечным бэклогом?
https://habr.com/ru/articles/1037554/
#петпроект #фуллстек #солоразработка #FastAPI #Nextjs #PostgreSQL #выгорание
-
Один за всех: как я в одиночку тащу фуллстек-проект, который незаметно разросся до соцсети
Начиналось как «сделаю себе сайтик про кино на пару выходных». Закончилось каталогом на десятки тысяч карточек, лентой, профилями, рейтингами, совместным просмотром и кучей фоновых задач. И всё это тащит один человек — я сам себе фронт, бэк, девопс, дизайнер и поддержка. Делюсь сжато: стек и грабли, без воды. Стек выбирал не по хайпу, а по принципу «доеду и не утону в обслуживании»: FastAPI (быстро, асинхронно, автодоки), Next.js на React (SSR из коробки — критично для SEO), PostgreSQL (SQLite кончился на первых же конкурентных записях), Redis для кэша и рейт-лимитов. Nginx + systemd на обычном VPS. Никакого Kubernetes — для одного это способ обслуживать инфраструктуру вместо разработки. Грабли, на которых посидел: • Фоновое состояние в памяти + несколько воркеров = рассинхрон. Пользователи попадают в разные процессы, состояние не шарится. Лечение: либо общее хранилище, либо такие фичи в один воркер. • Права на файлы после сборки. Собрал под одним пользователем, сервис под другим — EACCES и белый экран. Теперь chown в чек-листе деплоя. • node_modules не переезжает Windows → Linux. Только чистая установка на целевой ОС. • dev и prod базы — разные миры. Один запуск скрипта «не туда» — и долго гадаешь, почему данные не меняются (а они меняются, в локальном SQLite, который никому не нужен). • Не запускай два тяжёлых процесса разом. Фоновая генерация + пересборка фронта = OOM-killer молча прибил процесс. Полчаса искал причину. • Кэш сборки трогать нельзя — «почистил на всякий» и сломал инкрементальную регенерацию страниц на сутки. Но самое тяжёлое — не код. Некому передать, если выгорел. Некому сделать ревью и сказать «ты идиот». Легко месяцами катиться не туда. Качели мотивации: сегодня горы свернёшь, завтра «зачем я это начал». Научился просто переживать спады и не принимать в них решений вроде «всё переписать». Что понял за это время: маленькие шаги бьют героизм; скучные бэкапы и чек-листы важнее красивой архитектуры; готовое и работающее лучше идеального ненаписанного. Один человек реально тащит удивительно много — если не воюет сам с собой за идеальность. Не ради пиара, а как живой пруф того, о чём пишу: всё описанное работает прямо сейчас — vibemuvik.ru Можно зайти и потыкать вживую. А вы тащите что-то в одиночку? На каком стеке, как боретесь с выгоранием и бесконечным бэклогом?
https://habr.com/ru/articles/1037554/
#петпроект #фуллстек #солоразработка #FastAPI #Nextjs #PostgreSQL #выгорание
-
Upgrade immediately.
#NextJs: 15.5.18, 16.2.6
#React: 19.0.6, 19.1.7, 19.2.6 for the react-server-dom-parcel, react-server-dom-webpack and react-server-dom-turbopack packages
https://vercel.com/changelog/next-js-may-2026-security-release
Vulnerability:
- Middleware and proxy bypass
- Denial of service
- Server-side request forgery
- Cache poisoning
- Cross-site scripting#Vercel #CVE #RCE #JS #NPM #AI #Security #Vulnerability #AISlop
-
Upgrade immediately.
#NextJs: 15.5.18, 16.2.6
#React: 19.0.6, 19.1.7, 19.2.6 for the react-server-dom-parcel, react-server-dom-webpack and react-server-dom-turbopack packages
https://vercel.com/changelog/next-js-may-2026-security-release
Vulnerability:
- Middleware and proxy bypass
- Denial of service
- Server-side request forgery
- Cache poisoning
- Cross-site scripting#Vercel #CVE #RCE #JS #NPM #AI #Security #Vulnerability #AISlop
-
Upgrade immediately.
#NextJs: 15.5.18, 16.2.6
#React: 19.0.6, 19.1.7, 19.2.6 for the react-server-dom-parcel, react-server-dom-webpack and react-server-dom-turbopack packages
https://vercel.com/changelog/next-js-may-2026-security-release
Vulnerability:
- Middleware and proxy bypass
- Denial of service
- Server-side request forgery
- Cache poisoning
- Cross-site scripting#Vercel #CVE #RCE #JS #NPM #AI #Security #Vulnerability #AISlop
-
Upgrade immediately.
#NextJs: 15.5.18, 16.2.6
#React: 19.0.6, 19.1.7, 19.2.6 for the react-server-dom-parcel, react-server-dom-webpack and react-server-dom-turbopack packages
https://vercel.com/changelog/next-js-may-2026-security-release
Vulnerability:
- Middleware and proxy bypass
- Denial of service
- Server-side request forgery
- Cache poisoning
- Cross-site scripting#Vercel #CVE #RCE #JS #NPM #AI #Security #Vulnerability #AISlop
-
Upgrade immediately.
#NextJs: 15.5.18, 16.2.6
#React: 19.0.6, 19.1.7, 19.2.6 for the react-server-dom-parcel, react-server-dom-webpack and react-server-dom-turbopack packages
https://vercel.com/changelog/next-js-may-2026-security-release
Vulnerability:
- Middleware and proxy bypass
- Denial of service
- Server-side request forgery
- Cache poisoning
- Cross-site scripting#Vercel #CVE #RCE #JS #NPM #AI #Security #Vulnerability #AISlop
-
I accidentally built an LLM orchestration system in the browser. No backend. No queues. Just React + GPT. It worked. It was also flawed. That is what makes it interesting. Full breakdown: https://www.antonmb.com/en/blog/how-i-accidentally-built-an-llm-orchestration-system-in-the-browser #LLM #AI #SoftwareEngineering #Architecture #NextJS #DotNet -
I accidentally built an LLM orchestration system in the browser. No backend. No queues. Just React + GPT. It worked. It was also flawed. That is what makes it interesting. Full breakdown: https://www.antonmb.com/en/blog/how-i-accidentally-built-an-llm-orchestration-system-in-the-browser #LLM #AI #SoftwareEngineering #Architecture #NextJS #DotNet -
I accidentally built an LLM orchestration system in the browser. No backend. No queues. Just React + GPT. It worked. It was also flawed. That is what makes it interesting. Full breakdown: https://www.antonmb.com/en/blog/how-i-accidentally-built-an-llm-orchestration-system-in-the-browser #LLM #AI #SoftwareEngineering #Architecture #NextJS #DotNet -
I accidentally built an LLM orchestration system in the browser. No backend. No queues. Just React + GPT. It worked. It was also flawed. That is what makes it interesting. Full breakdown: https://www.antonmb.com/en/blog/how-i-accidentally-built-an-llm-orchestration-system-in-the-browser #LLM #AI #SoftwareEngineering #Architecture #NextJS #DotNet -
I accidentally built an LLM orchestration system in the browser. No backend. No queues. Just React + GPT. It worked. It was also flawed. That is what makes it interesting. Full breakdown: https://www.antonmb.com/en/blog/how-i-accidentally-built-an-llm-orchestration-system-in-the-browser #LLM #AI #SoftwareEngineering #Architecture #NextJS #DotNet -
Learn why JavaScript timers drift in background tabs and how Web Audio scheduling can make browser alarms fire on time. https://hackernoon.com/the-hidden-bug-breaking-most-javascript-timers #nextjs
-
Learn why JavaScript timers drift in background tabs and how Web Audio scheduling can make browser alarms fire on time. https://hackernoon.com/the-hidden-bug-breaking-most-javascript-timers #nextjs
-
Next.js CVSS 8.6. Summary by Prasenjit:
- affects versions 13.4.13+, 14.x, 15.x, and 16.0.0–16.2.4
- attackers can access your internal services, cloud credentials, API keys, and admin panels
- no authentication needed
- one crafted request is all it takes
- roughly 79,000 instances are exploitable right now
- vercel-hosted apps are safe, self-hosted are not
Fix: upgrade to 15.5.16 or 16.2.5 immediately.
-
A SaaS landing built around the Command Palette as a conversion surface — not decoration.
CMDK wired to live state, streaming AI responses, R3F dashboard backdrop running off the main thread. Lighthouse 96 mobile · LCP 1.6s · CLS 0.03.
Stack: Next.js 15 App Router · Tailwind v4 @Theme · Framer Motion 12 · Vercel AI SDK. Performance budget enforced in CI. Built by GrowthSite Lab.
-
Webflow is hiring Senior Staff Engineer, Developer Productivity
🔧 #javascript #python #typescript #nextjs #react #remix #node #graphql #cicd #docker #kubernetes #tailwind #seniorengineer
🌎 Remote; British Columbia, Canada; Ontario, Canada; United States
⏰ Full-time
🏢 WebflowJob details https://jobsfordevelopers.com/jobs/senior-staff-engineer-developer-productivity-at-webflow-com-mar-19-2026-988380?utm_source=mastodon.world&utm_medium=social&utm_campaign=posting
#jobalert #jobsearch #hiring -
Webflow is hiring Senior Staff Engineer, Developer Productivity
🔧 #javascript #python #typescript #nextjs #react #remix #node #graphql #cicd #docker #kubernetes #tailwind #seniorengineer
🌎 Remote; British Columbia, Canada; Ontario, Canada; United States
⏰ Full-time
🏢 WebflowJob details https://jobsfordevelopers.com/jobs/senior-staff-engineer-developer-productivity-at-webflow-com-mar-19-2026-988380?utm_source=mastodon.world&utm_medium=social&utm_campaign=posting
#jobalert #jobsearch #hiring -
Webflow is hiring Senior Staff Engineer, Developer Productivity
🔧 #javascript #python #typescript #nextjs #react #remix #node #graphql #cicd #docker #kubernetes #tailwind #seniorengineer
🌎 Remote; British Columbia, Canada; Ontario, Canada; United States
⏰ Full-time
🏢 WebflowJob details https://jobsfordevelopers.com/jobs/senior-staff-engineer-developer-productivity-at-webflow-com-mar-19-2026-988380?utm_source=mastodon.world&utm_medium=social&utm_campaign=posting
#jobalert #jobsearch #hiring -
Webflow is hiring Senior Staff Engineer, Developer Productivity
🔧 #javascript #python #typescript #nextjs #react #remix #node #graphql #cicd #docker #kubernetes #tailwind #seniorengineer
🌎 Remote; British Columbia, Canada; Ontario, Canada; United States
⏰ Full-time
🏢 WebflowJob details https://jobsfordevelopers.com/jobs/senior-staff-engineer-developer-productivity-at-webflow-com-mar-19-2026-988380?utm_source=mastodon.world&utm_medium=social&utm_campaign=posting
#jobalert #jobsearch #hiring -
Webflow is hiring Senior Staff Engineer, Developer Productivity
🔧 #javascript #python #typescript #nextjs #react #remix #node #graphql #cicd #docker #kubernetes #tailwind #seniorengineer
🌎 Remote; British Columbia, Canada; Ontario, Canada; United States
⏰ Full-time
🏢 WebflowJob details https://jobsfordevelopers.com/jobs/senior-staff-engineer-developer-productivity-at-webflow-com-mar-19-2026-988380?utm_source=mastodon.world&utm_medium=social&utm_campaign=posting
#jobalert #jobsearch #hiring -
Агрегатор LLM, как выбирать живые free-модели и переживать сбои провайдера
Если в проекте появляется выбор LLM, почти сразу возникает соблазн сделать это как можно проще. Взять один большой список моделей, показать его в интерфейсе, выбрать первую free-модель по умолчанию и считать задачу закрытой. На короткой дистанции это выглядит рабочим вариантом. На длинной начинает ломаться сразу в нескольких местах. Часть моделей числится бесплатными, но отвечает нестабильно. Часть внезапно исчезает из выдачи провайдера. Часть формально жива, но по качеству ответа годится только для демо. Иногда пользователь выбрал одну модель, а провайдер вернул ошибку. Иногда ответ пришел, но уже от другой модели. Иногда список моделей на фронте устарел, а backend уже живет в другой реальности. То есть проблема тут не в том, как красиво показать список LLM. Проблема в том, как построить агрегатор, который умеет выбирать живые free-модели, переживать сбои провайдера и не врать интерфейсу о том, какая модель реально ответила. В одном из своих проектов эта задача решалась не через бесконечный каталог моделей, а через более жесткий инженерный контур. Backend получает сырой список моделей от провайдера, очищает его, отбирает только подходящие free-варианты, оставляет по одной модели на бренд, отдает этот набор на фронт, а во время реального запроса умеет сделать fallback на модель другого бренда. При этом в ответе возвращается не только текст, но и actual_model , чтобы интерфейс знал, кто реально сгенерировал результат.
https://habr.com/ru/articles/1033790/
#LLM #OpenRouter #Django #Python #Nextjs #TypeScript #RTK_Query #AI #API #Fullstack
-
Агрегатор LLM, как выбирать живые free-модели и переживать сбои провайдера
Если в проекте появляется выбор LLM, почти сразу возникает соблазн сделать это как можно проще. Взять один большой список моделей, показать его в интерфейсе, выбрать первую free-модель по умолчанию и считать задачу закрытой. На короткой дистанции это выглядит рабочим вариантом. На длинной начинает ломаться сразу в нескольких местах. Часть моделей числится бесплатными, но отвечает нестабильно. Часть внезапно исчезает из выдачи провайдера. Часть формально жива, но по качеству ответа годится только для демо. Иногда пользователь выбрал одну модель, а провайдер вернул ошибку. Иногда ответ пришел, но уже от другой модели. Иногда список моделей на фронте устарел, а backend уже живет в другой реальности. То есть проблема тут не в том, как красиво показать список LLM. Проблема в том, как построить агрегатор, который умеет выбирать живые free-модели, переживать сбои провайдера и не врать интерфейсу о том, какая модель реально ответила. В одном из своих проектов эта задача решалась не через бесконечный каталог моделей, а через более жесткий инженерный контур. Backend получает сырой список моделей от провайдера, очищает его, отбирает только подходящие free-варианты, оставляет по одной модели на бренд, отдает этот набор на фронт, а во время реального запроса умеет сделать fallback на модель другого бренда. При этом в ответе возвращается не только текст, но и actual_model , чтобы интерфейс знал, кто реально сгенерировал результат.
https://habr.com/ru/articles/1033790/
#LLM #OpenRouter #Django #Python #Nextjs #TypeScript #RTK_Query #AI #API #Fullstack
-
Агрегатор LLM, как выбирать живые free-модели и переживать сбои провайдера
Если в проекте появляется выбор LLM, почти сразу возникает соблазн сделать это как можно проще. Взять один большой список моделей, показать его в интерфейсе, выбрать первую free-модель по умолчанию и считать задачу закрытой. На короткой дистанции это выглядит рабочим вариантом. На длинной начинает ломаться сразу в нескольких местах. Часть моделей числится бесплатными, но отвечает нестабильно. Часть внезапно исчезает из выдачи провайдера. Часть формально жива, но по качеству ответа годится только для демо. Иногда пользователь выбрал одну модель, а провайдер вернул ошибку. Иногда ответ пришел, но уже от другой модели. Иногда список моделей на фронте устарел, а backend уже живет в другой реальности. То есть проблема тут не в том, как красиво показать список LLM. Проблема в том, как построить агрегатор, который умеет выбирать живые free-модели, переживать сбои провайдера и не врать интерфейсу о том, какая модель реально ответила. В одном из своих проектов эта задача решалась не через бесконечный каталог моделей, а через более жесткий инженерный контур. Backend получает сырой список моделей от провайдера, очищает его, отбирает только подходящие free-варианты, оставляет по одной модели на бренд, отдает этот набор на фронт, а во время реального запроса умеет сделать fallback на модель другого бренда. При этом в ответе возвращается не только текст, но и actual_model , чтобы интерфейс знал, кто реально сгенерировал результат.
https://habr.com/ru/articles/1033790/
#LLM #OpenRouter #Django #Python #Nextjs #TypeScript #RTK_Query #AI #API #Fullstack
-
Агрегатор LLM, как выбирать живые free-модели и переживать сбои провайдера
Если в проекте появляется выбор LLM, почти сразу возникает соблазн сделать это как можно проще. Взять один большой список моделей, показать его в интерфейсе, выбрать первую free-модель по умолчанию и считать задачу закрытой. На короткой дистанции это выглядит рабочим вариантом. На длинной начинает ломаться сразу в нескольких местах. Часть моделей числится бесплатными, но отвечает нестабильно. Часть внезапно исчезает из выдачи провайдера. Часть формально жива, но по качеству ответа годится только для демо. Иногда пользователь выбрал одну модель, а провайдер вернул ошибку. Иногда ответ пришел, но уже от другой модели. Иногда список моделей на фронте устарел, а backend уже живет в другой реальности. То есть проблема тут не в том, как красиво показать список LLM. Проблема в том, как построить агрегатор, который умеет выбирать живые free-модели, переживать сбои провайдера и не врать интерфейсу о том, какая модель реально ответила. В одном из своих проектов эта задача решалась не через бесконечный каталог моделей, а через более жесткий инженерный контур. Backend получает сырой список моделей от провайдера, очищает его, отбирает только подходящие free-варианты, оставляет по одной модели на бренд, отдает этот набор на фронт, а во время реального запроса умеет сделать fallback на модель другого бренда. При этом в ответе возвращается не только текст, но и actual_model , чтобы интерфейс знал, кто реально сгенерировал результат.
https://habr.com/ru/articles/1033790/
#LLM #OpenRouter #Django #Python #Nextjs #TypeScript #RTK_Query #AI #API #Fullstack
-
Маркетинговый сайт без дизайнера: 5 практик с Open Design и Claude Code
Я попробовал собрать маркетинговый сайт через Claude Design - и быстро упёрся в лимиты токенов и непрозрачность облачного тула. Перешёл на Open Design - open-source альтернативу, которая цепляет твой Claude Code, держит дизайн-систему как DESIGN.md в репозитории и работает локально. Под катом - четыре практики, которые сработали на сайте конференции: design-as-code в git, симлинк дизайнера в код сайта, два markdown-файла под бренд и дизайн токены, и как мы учили автономных агентов делать сайт с помощью нашей дизайн системы
https://habr.com/ru/articles/1032924/
#claude_code #claude #anthropic #open_design #aiагенты #дизайнсистема #designascode #nextjs #tailwind_css #маркетинговый_сайт
-
#NextJS and #React Server Components hit with 12 vulnerabilities with 3 high-severity vulns (CVE-2026-44574, CVE-2026-44578, CVE-2026-44581) requiring the most urgent attention and impacting virtually every production NextJS deployment - patch now!
https://www.cyberkendra.com/2026/05/react-and-nextjs-hit-with-12-security.html
-
Как я собрал интерактивную карту 13 000 исторических событий и научил её определять архетип любого города
HistoryPrint берёт любой город и говорит, какая часть человеческой истории случилась в его радиусе. ~13 000 событий за 5 000 лет, 12 категорий (войны, революции, пандемии, открытия), скоринг по экспоненциальному убыванию расстояния, и в финале — один из 20 архетипов: «Born in Fire», «Plague Walker», «Heir of Enlightenment». Почитать дальше
https://habr.com/ru/articles/1032542/
#nextjs #mapbox #petпроекты #интерактивная_карта #история #tailwind #vercel
-
Как я собрал интерактивную карту 13 000 исторических событий и научил её определять архетип любого города
HistoryPrint берёт любой город и говорит, какая часть человеческой истории случилась в его радиусе. ~13 000 событий за 5 000 лет, 12 категорий (войны, революции, пандемии, открытия), скоринг по экспоненциальному убыванию расстояния, и в финале — один из 20 архетипов: «Born in Fire», «Plague Walker», «Heir of Enlightenment». Почитать дальше
https://habr.com/ru/articles/1032542/
#nextjs #mapbox #petпроекты #интерактивная_карта #история #tailwind #vercel
-
Как я собрал интерактивную карту 13 000 исторических событий и научил её определять архетип любого города
HistoryPrint берёт любой город и говорит, какая часть человеческой истории случилась в его радиусе. ~13 000 событий за 5 000 лет, 12 категорий (войны, революции, пандемии, открытия), скоринг по экспоненциальному убыванию расстояния, и в финале — один из 20 архетипов: «Born in Fire», «Plague Walker», «Heir of Enlightenment». Почитать дальше
https://habr.com/ru/articles/1032542/
#nextjs #mapbox #petпроекты #интерактивная_карта #история #tailwind #vercel
-
Как я собрал интерактивную карту 13 000 исторических событий и научил её определять архетип любого города
HistoryPrint берёт любой город и говорит, какая часть человеческой истории случилась в его радиусе. ~13 000 событий за 5 000 лет, 12 категорий (войны, революции, пандемии, открытия), скоринг по экспоненциальному убыванию расстояния, и в финале — один из 20 архетипов: «Born in Fire», «Plague Walker», «Heir of Enlightenment». Почитать дальше
https://habr.com/ru/articles/1032542/
#nextjs #mapbox #petпроекты #интерактивная_карта #история #tailwind #vercel