Техническое задание: Система загрузки фотографий для профиля

Цель проекта

Разработать надежный и удобный модуль на PHP, позволяющий пользователям загружать фотографии в свой профиль и управлять ими, в том числе назначать главное изображение.

Основные функциональные требования

  • Создание интерфейса для загрузки изображений (форма с полем выбора файла).
  • Реализация серверной обработки загружаемых файлов на PHP.
  • Проверка файлов на:
    • Тип (разрешить только форматы JPEG, PNG, WebP).
    • Размер (ограничить максимальный вес файла).
    • Безопасность (базовая проверка на вредоносный код).
  • Автоматическое изменение размера и оптимизация загруженных изображений для создания превью.
  • Сохранение оригиналов и обработанных копий в заданную структуру каталогов на сервере.
  • Интеграция с базой данных для привязки фотографий к профилю пользователя.
  • Создание галереи загруженных пользователем фотографий в личном кабинете.
  • Функционал выбора одной из загруженных фотографий в качестве главной (аватарки/основной).
  • Визуальное выделение главной фотографии в интерфейсе.
  • Возможность удаления загруженных фотографий (кроме главной, если она не удаляется последней).

Требования к безопасности

  • Защита от прямого доступа к файлам в папке загрузок.
  • Генерация уникальных имен для загружаемых файлов во избежание коллизий и перезаписи.
  • Валидация всех входящих данных от пользователя.

Технический стек

  • Основной язык: PHP (чистый или в рамках указанного фреймворка, если применимо).
  • Допустимо использование библиотек для обработки изображений (например, GD или Imagick).
  • Front-end: HTML, CSS, JavaScript (для улучшения UX, например, предпросмотр перед загрузкой).

Ожидаемый результат

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

Разработка REST API для маркетплейса

Требуется опытный разработчик для создания серверной части REST API, аналогичной функционалу крупных маркетплейсов. Необходимы навыки эффективной работы с нейросетевыми технологиями. Основная задача - реализация модуля для загрузки и обработки данных.