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

Цель проекта

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

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

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

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

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

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

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

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

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

Разработка веб-интерфейса мониторинга бортовой системы электропитания

Требуется создать веб-страницу для визуализации состояния устройств в системе электропитания морского судна. Интерфейс должен отображать статусы всех компонентов системы в реальном времени на основе предоставленной технической документации.

Разработка блога с платной подпиской и монетизацией

Требуется создать платформу для блога с системой платной подписки, аналогичной популярным сервисам. Необходима автоматизация оплаты и разделение контента на открытый и эксклюзивный. В будущем планируется масштабирование для нескольких авторов.