Обновить
8K+

Laravel *

Бесплатный веб-фреймворк с открытым кодом

2,8
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Два изображения, очередь и proxy: как мы подключили OpenAI Image Edits к российскому production-серверу

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели9.4K

Для крупной федеральной компании из телеком-сектора наша команда разработала закрытую семейную платформу для сотрудников и их детей. Один родительский аккаунт объединяет несколько детских профилей, а внутри находятся тематические районы, викторины, мини-игры, творческие задания, личный прогресс, баллы и общий рейтинг.

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

Одной из творческих активностей стала «виртуальная роспись» городского здания. Пользователь выбирал фотографию фасада, загружал собственный рисунок, а система превращала его в изображение на стенах. Здание должно было остаться узнаваемым, а рисунок - стать частью реальной архитектуры, а не потеряться в новой генерации.

На уровне интерфейса всё выглядит просто: выбрать основу, загрузить рисунок, дождаться результата. На уровне production-системы задача быстро перестаёт быть «вызовом AI API». Прямого доступа к OpenAI API с российского сервера нет. Сама операция длительная, работает с приватными файлами и может завершиться сетевой ошибкой, ограничением провайдера или отказом модерации.

Ниже - технический разбор этого конкретного потока: от React и очереди Laravel до небольшого собственного proxy-сервиса, встроенного в архитектуру основной платформы.

Читать далее

Новости

Продакшн на Laravel руками ИИ‑агента: честный отчёт о том, что работает, а что чуть не уронило прод

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели6.7K

Я аналитик, а не разработчик. Весь код для созданной нами платформы написал Claude Opus через Claude Code. Рассказываю без хайпа: как выглядит реальный workflow, где нейросеть незаменима, где она бесполезна, и какая инженерная дисциплина обязательна, чтобы это не превратилось в тыкву на боевом.

Сразу обозначу рамку, чтобы снять половину вопросов из комментариев.

Я не умею писать продакшн‑код. Я аналитик: читаю код, рассуждаю о системах, проектирую поведение — но профессионально не кодю. Тем не менее у нас в проде работает нетривиальное веб‑приложение, и каждую строчку кода написала нейросеть (Claude Opus, агент Claude Code). Моя роль — архитектор, продакт и QA. Второй ключевой специалист по разработке — дизайнер вебинтерфейсов, также освоивший Claude.

Это не пост «ИИ сам всё сделал, программисты не нужны». Скорее наоборот: я хочу показать, что инженерия никуда не делась — просто из неё вынули операцию «набирать код руками». Всё остальное (проектирование, компромиссы, ловля прод‑онли багов, дисциплина релизов) осталось на человеке. И вот об этом «остальном» — интереснее всего.

Читать далее

Thrun: как я устал от Horizon и написал свой многопоточный воркер с корутинами

Время на прочтение8 мин
Охват и читатели9.1K

Сотни тысяч I/O-задач, десятки воркеров и гигабайты памяти на обработку очередей. В какой-то момент мне стало интересно, можно ли решить эту задачу иначе. Так появился Thrun —runtime worker на потоках и сопрограммах. В статье разбираю архитектуру и результаты сравнений с Horizon.

Читать далее

Как мы разработали систему резервирования товаров в интернет-магазине для контроля остатков по складам

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.4K

Интернет-магазины, работающие одновременно через собственный сайт, маркетплейсы и несколько складов, часто сталкиваются с проблемой синхронизации данных между разными системами. Особенно это заметно, когда учет ведется в 1С, а товары продаются сразу через несколько каналов. В таких условиях ошибки в резервировании и обновлении остатков могут приводить к пересорту, отменам заказов и дополнительным затратам на обработку.

С подобной задачей столкнулся интернет-магазин Kamatyres. Компания продает шины и диски через собственный сайт, активно работает с маркетплейсами и использует несколько складов, а учет заказов и остатков ведется в 1С.

Читать далее

Проблемы поддержания анонимности платформы в 2026

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.5K

MyPrepod — крупнейший портал отзывов о преподавателях российских ВУЗов. Он стал таким не только за счет того, что даже на момент MVP 2017 года он был UX‑удобнее для студентов, чем СтудИзба или professorrating, но и за счет полной анонимности.

Переписали анонимный портал отзывов на преподавателей с PHP 5.4 на современный стек. Сайт грузился 15 секунд, рекламодатели не шли, хостинги блокировали без предупреждения в 2 ночи. Разбираем, как выстроить инфраструктуру, которая переезжает на новый сервер за одну команду и выживает, когда всё вокруг пытается тебя снести.

Чуть подробнее

Как выкатывать ecommerce в Битрикс по частям и не останавливать продажи (7 часть)

Время на прочтение13 мин
Охват и читатели6.9K

Финальная часть серии — про самое нервное в любом ecommerce-проекте: как включать новую архитектуру по частям, не устраивать «большой релиз» и не останавливать продажи. 

К этому моменту у нас уже есть SSO, события, наблюдаемость, быстрый каталог, корзина, цены, checkout, интеграции, Gateway и SDK. Теперь начинается самая чувствительная часть — включать все это в продакшен без большого релиза или остановки продаж.

Сложность — в процессе. Один модуль уже готов, второй еще нет, часть трафика ходит по старому пути, часть — по новому… Поэтому я сделала практическую схему постепенного включения: фича-флаги, канареечный трафик, двойное чтение, shadow-режим и критерии готовности.

Читать далее

AI для PHP-разработчиков. Часть 7: Экосистема AI-агентов в PHP – от простых вызовов OpenAI до мультиагентных платформ

Время на прочтение8 мин
Охват и читатели12K

За последние два года в экосистеме PHP вокруг AI-разработки сформировалась целая индустрия. Если раньше интеграция LLM выглядела как несколько строк кода с вызовом OpenAI API, то сегодня разработчики строят полноценные агентные системы: с памятью, инструментами, workflow, наблюдаемостью (observability) и даже командами специализированных агентов.

Обычно, когда говорят об AI-разработке, в первую очередь говорят о Python. Тут полно интересных вещей, таких как: LangChain, LangGraph, CrewAI, AutoGen – весь основной шум долгое время происходил именно там.

Но параллельно интересная история развивается и в PHP. И меня это, безусловно, очень радует.

Причем если еще пару лет назад PHP-разработчику приходилось буквально собирать все вручную поверх SDK провайдеров, то сегодня уже существует полноценная экосистема инструментов разного уровня абстракции – от клиентов для работы с моделями до платформ управления многоагентными системами.

Давайте посмотрим, как выглядит этот рынок сейчас.

Читать далее

Copilot написал трекер привычек на Laravel, а я выложил код на Github

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.3K

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

Последние полгода я активно применяю LLM в своей работе. Автокомплитом от Github Copilot я пользуюсь с момента начала бесплатного бета-тестирования, а с выходом Opus 4.5 стало возможно отдавать железяке на реализацию целые блоки логики. Нужно только организовать виртуальную клетку, внутри которой он будет вынужден писать работающий код.

Что за клетка?

Ecommerce на Laravel, или как мы собрали headless-слой для фронтов (6 часть)

Время на прочтение18 мин
Охват и читатели8.3K

В этой части собираем headless-слой для фронтов: Gateway, композицию API, SDK, ETag, SSR, идемпотентность и единые правила работы с запросами. 

Привет, хабровчане. Это снова Алиса, снова Laravel, Bitrix и попытка не превратить фронтенд в распределенный монолит. К этому моменту у нас уже есть быстрые доменные сервисы: каталог, корзина, цены, заказы, интеграции. Но фронту от этого не сильно легче. Ему все еще приходится ходить в десяток ручек, собирать ответы, следить за авторизацией и одинаково обрабатывать ошибки.

Поэтому поверх доменных сервисов появляется Headless API Gateway — тонкий слой, который работает как BFF для фронтов.

Он берет на себя JWT-cookie, CORS, rate-limit, кэширование, единый формат ошибок и композицию сценариев вроде листинга, карточки товара или чекаута. При этом Gateway не дублирует бизнес-логику. Его задача — валидировать входящие запросы, сходить в нужные сервисы, собрать ответ и вернуть фронту компактный JSON с ETag и нормальными HTTP-заголовками.

Дальше собираем это на Laravel: CORS, middleware для JWT-cookie, rate-limit, единый формат ошибок, композиционные ручки для фронтов, кэш-заголовки и роутинг через Nginx.

Читать далее

Bitrix и Laravel: веб-хуки, ERP и все-все-все (часть 5)

Время на прочтение20 мин
Охват и читатели9.2K

Привет, Хабр! Это снова Алиса из KISLOROD. В прошлых частях мы вынесли из Битрикса каталог, корзину, цены и чекаут. Но в любом ecommerce-проекте есть еще одна зона турбулентности — интеграции.

Платежки, ERP, CRM, доставки, SMS, веб-хуки — все это любит тормозить, дублировать запросы и внезапно падать в самый неподходящий момент. Если держать такие вызовы внутри чекаута или админки, проект быстро начинает жить по SLA внешних сервисов.

В этой части разбираем Integration Hub: очереди, веб-хуки, DLQ, идемпотентность и отдельный контур для интеграций, который не блокирует пользователей и не тянет за собой весь чекаут.

Читать далее

Властелин корзин: две вкладки и один Redis (часть 4)

Время на прочтение34 мин
Охват и читатели10K

Привет, Хабр! Это снова Алиса из сериала про Laravel рядом с Битриксом.  В первой части мы аккуратно подселили Laravel к Битриксу. Во второй — растащили события, авторизацию и тяжелую логику по нормальным сервисам, а в третьей — перестали мучить каталог SQL-запросами и отдали поиск OpenSearch.

Теперь добрались до места, где любой e-commerce начинает показывать характер: корзина и расчет заказа. Это каталог может тормозить незаметно. А вот если корзина начинает чудить — это уже чувствует бюджет.

Читать далее

Альтернативы Centrifugo для Laravel: Reverb, Pusher, Ably, Socket.IO, SSE и polling

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели5.6K

Заключительная часть серии статей про Laravel + Centrifugo и как его готовить.

Сравниваем альтернативы Centrifugo для Laravel: Reverb, Pusher, Ably, Socket.IO, SSE и polling. Разбираем плюсы, минусы и сценарии выбора real-time решения.

Читать далее

Centrifugo JS client в Laravel: frontend и production

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели8.1K

Разбираем frontend и эксплуатацию real-time системы на Laravel и Centrifugo: JS client, reconnect, token refresh, HTTP recovery, Nginx, логи и мониторинг.

Читать далее

Ближайшие события

Публикация событий из Laravel в Centrifugo: Events, listeners, queue jobs и безопасный real-time payload

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели6.9K

В этой статье разберём, как правильно организовать публикацию real-time событий в Laravel: почему не стоит отправлять сообщения напрямую из контроллеров, как использовать Laravel Events и listeners, зачем нужны queue jobs, почему afterCommit() критичен для корректности данных и каким должен быть безопасный payload без полной Eloquent-модели.

Читать далее

Почему social-продукты умирают пустыми

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.2K

Когда я начинал делать Gooly, мне казалось, что главная проблема — отсутствие нормального инструмента для организации мероприятий.

Но спустя месяцы разработки и общения с пользователями я понял гораздо более неприятную вещь: большинство social-продуктов умирают не из-за плохого кода, а из-за пустоты внутри системы.

В этой статье — про cold start, хаос чатов, выгорание организаторов, network effects и то, почему живой Telegram часто побеждает «идеальный» новый сервис.

Читать далее

Каналы и авторизация в Centrifugo: как безопасно подключить real-time в Laravel

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели6.4K

Real-time без авторизации опасен. Если пользователь может подписаться на чужой канал, он может получать чужие уведомления, статусы заказов, сообщения, события админки или финансовые обновления. В обычном HTTP API такая ошибка выглядела бы как доступ к чужому endpoint. В WebSocket-архитектуре ошибка такая же, просто выглядит менее очевидно.

Разбираем в Centrifugo: публичные и приватные подписки, connection token, subscription token, права доступа и безопасное подключение

Читать далее

После нескольких статей на Хабре я открыл регистрацию в Gooly. И начал по-другому смотреть на саму проблему

Время на прочтение3 мин
Охват и читатели6.9K

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

Кто-то организовывал футбольные сборы. Кто-то - походы. Кто-то - локальные сообщества. Были люди из event-сферы, туризма и даже те, кто несколько лет назад уже пытался запускать похожие проекты.

И почти у всех повторялась одна и та же мысль:
Да, мы тоже живём в хаосе чатов.

Сначала мне казалось, что проблема довольно узкая. Есть организатор, есть люди, которых нужно собрать на футбол, волейбол или другую активность. Но чем больше я читал комментарии и общался с людьми, тем сильнее понимал: проблема гораздо глубже, чем просто «сбор людей».

На самом деле офлайн-активности до сих пор во многом держатся на ручной координации:

Читать далее

Архитектура Laravel + Centrifugo: кто за что отвечает в real-time системе

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.5K

В первой части мы разобрались, что Real-time на Laravel-сайте нужен там, где интерфейс должен получать изменения без перезагрузки страницы: новые уведомления, смену статуса заказа, сообщения в чате, обновления виджетов, события в административной панели. Для таких задач классическая модель HTTP-запроса уже недостаточна, а polling создаёт лишнюю нагрузку на backend. Один из практичных вариантов решения — использовать Centrifugo как отдельный WebSocket-сервер рядом с Laravel-приложением.

В этой статье разберём архитектуру Laravel + Centrifugo: за что отвечает Laravel, какую роль выполняет Centrifugo, как frontend подключается к real-time каналу и как выглядит типовой сценарий публикации события, например при изменении статуса заказа.

Читать далее

Real-time на сайте с Laravel и Centrifugo: зачем нужен WebSocket

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.8K

Разбираем, зачем нужен real-time на сайте, почему polling создаёт лишнюю нагрузку и как Centrifugo помогает добавить WebSocket в Laravel-приложение без разрушения backend-архитектуры.

Читать далее

Большинство людей не хотят организовывать мероприятия. И это нормально

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.6K

После публикации первых статей про Gooly мне написало довольно много людей.

Кто-то рассказывал, как годами собирает футбол через чаты. Кто-то показывал свои таблицы учёта. Кто-то даже писал собственные приложения для организации игр.

Но больше всего меня зацепило одно очень простое сообщение.

Читать далее
1
23 ...