#«Сокращатель ссылок» ##Задача Кандидату предлагается создать простейший сервис, который позволяет преобразовывать длинные адреса в более короткие и удобные. Известные аналоги: bitly.com, goo.gl, tiny.cc и др.
Требования к серверной части:
- Система должна корректно работать с PHP 7.2+, MySQL 5.7+.
- Допускается и приветствуется использование фреймворков (в особенности Laravel, Symfony), библиотек, компонентов.
Требования к клиентской части:
- Система должна корректно отображаться во всех популярных современных браузерах. Допускается и приветствуется использование фреймворков, JS-библиотек.
Функциональные требования:
-
Создание короткой ссылки. На главной странице пользователь видит поле для ввода URL и ряд настроек. По нажатию кнопки “Уменьшить” пользователю предоставляются:
- короткая ссылка с текущим доменом сайта вида http://superjob.test/RaNd0m57r1n9;
- уникальная ссылка для просмотра статистики переходов этой ссылки.
Возможные настройки для ссылки:
- Пользовательский текст: у пользователя должна быть возможность выбрать свой текст для короткой ссылки, например, http://superjob.test/mytext;
- Срок жизни ссылки: время, после истечения которого переход по ссылке будет невозможен;
- Коммерческая ссылка: чекбокс/радио.
-
Переход по короткой ссылке.
- При переходе по уменьшенной ссылке пользователь получает редирект на целевую страницу. Переход фиксируется.
- Для коммерческих ссылок перед перенаправлением в течение 5 секунд пользователю показывается случайная картинка из определенной директории. Показ картинки и переход фиксируются.
-
Просмотр статистики одной ссылки.
- По ссылке, полученной при создании, пользователь может посмотреть историю всех посещений одной, конкретной ссылки.
- В случае коммерческой ссылки необходимо отобразить, какая картинка в какой переход была показана.
-
Просмотр статистики всех ссылок.
- По определенной ссылке (например, /stat) можно посмотреть общую статистику всех переходов по всем ссылкам. Для этого на основе истории переходов нужно посчитать общее количество уникальных посетителей для каждой ссылки в базе данных за последние 14 дней.
В сервисе не должно быть формы аутентификации, хранить пользователей нигде не нужно. Вопросы безопасности и конфиденциальности пользовательских данных так же остаются за рамками данного задания.