Надёжный подход к любым техническим задачам

Михаил Анкудинов Magbusjap

Рейтинг: 243
Паспорт верифицирован
Всего отзывов: 7 0
Выполнил заданий: 8
  • Работ в портфолио: 11
  • Типовых услуг: 0
  • Работ на продажу: 0
  • Возраст: 34 года
  • Стаж работы: 6 лет
  • Зарегистрирован: 12.06.2013
  • Образование: Среднее профессиональное
  • Юридический статус:Самозанятый
  • Стоимость услуг (руб): 1 000 за час 70 000 за месяц
Был на сайте:

Медиабиблиотека на Filament

Используемые навыки:

Описание

Централизованная медиатека для управления всеми файлами сайта bozheslav.ru — изображениями, документами, превью портфолио. Интегрирована в админку Filament.

Решение

— Для foreign-key-like полей используются slug-строки, а не integer ID — избегает PostgreSQL ошибки bigint = character varying при джойнах
— Nginx location ^~ /portfolio/ с правильным try_files — решает классический конфликт статики и Laravel-роутов
Стек: PHP 8.3, Laravel 12, Filament 3, Filament Curator, Intervention Image (Imagick), Glide, PostgreSQL 16, Nginx.

Результат

— Загрузка изображений с автоматической оптимизацией через Intervention Image (Imagick driver)
— Копируемые URL через TextColumn->copyable() в Filament — клик на значок копирования, и URL в буфере (найденное решение, т.к. стандартный Action не работает для этой задачи)
— Захват метаданных через хук afterCreate(): размеры, тип, размер файла — в более ранних хуках файл ещё в tmp/ и данные недоступны
— Универсальная структура: одна медиатека на весь сайт (блог, портфолио, страницы) с возможностью фильтрации по использованию
— Glide integration для on-the-fly ресайза и кэширования версий изображений
— Защита от nginx-конфликтов: специально добавлен try_files в location-блок, чтобы статические пути не перехватывали динамические Glide-роуты (/curator/{path})

Презентация проекта

2026-04-22_20-23-53.png
2026-04-22_20-23-19.png

Оценили проект:

0