{"id":22189255,"url":"https://github.com/exi66/startup-it-test","last_synced_at":"2026-05-07T11:35:05.676Z","repository":{"id":41348651,"uuid":"509206623","full_name":"exi66/startup-it-test","owner":"exi66","description":"Тестовое задание Startup-it","archived":false,"fork":false,"pushed_at":"2022-08-29T02:18:10.000Z","size":805,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T20:19:36.742Z","etag":null,"topics":["docker-compose","laravel","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exi66.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-30T19:22:02.000Z","updated_at":"2022-09-05T08:40:33.000Z","dependencies_parsed_at":"2023-01-17T01:45:57.213Z","dependency_job_id":null,"html_url":"https://github.com/exi66/startup-it-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/exi66/startup-it-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exi66%2Fstartup-it-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exi66%2Fstartup-it-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exi66%2Fstartup-it-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exi66%2Fstartup-it-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exi66","download_url":"https://codeload.github.com/exi66/startup-it-test/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exi66%2Fstartup-it-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32735320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","laravel","php"],"created_at":"2024-12-02T11:17:07.378Z","updated_at":"2026-05-07T11:35:05.659Z","avatar_url":"https://github.com/exi66.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Задание\nТестовое задание PHP разработчика\nВёрстка: https://disk.yandex.ru/d/qtI4_81_j6x5Ow \n1.  Функциональные требования\n   1. Меню\nДолжно содержать следующие элементы:\n      1. Материалы - при клике должна открываться страница списка материалов;\n      2. Теги - при клике должна открываться страница списка тегов;\n      3. Категории - при клике должна открываться страница списка категорий;\n   2. Страница списка материалов\nНа данной странице должны располагаться:\n      4. кнопка “Добавить” - при клике должна открываться страница создания и редактирования материала;\n      5. блок поиска:\n         1. поисковая строка;\n         2. кнопка “Искать”:\n            1. при клике должен происходить поиск по материалам;\n            2. если поисковая строка не пустая, то должны искаться вхождения поисковой строки в название материала, авторах, тегах и категориях;\n      6. таблица результатов поиска, со столбцами:\n         1. Название - название материала в виде ссылки на просмотр материала;\n         2. Авторы - авторы материала;\n         3. Тип - тип материала;\n         4. Категория - категория материала;\n         5. Действия:\n            1. Редактирование - при клике должна открываться страница создания и редактирования материала;\n            2. Удаление - при клике должно запрашиваться подтверждение удаления, при одобрении должно происходить удаление материала;\n   3. Страница создания и редактирования материала\nНа данной странице должны располагаться:\n      7. Тип - обязательное, возможен выбор одного значения из перечисления: Типы материала (см. пункт 3 ТЗ);\n      8. Категория - обязательное, выпадающий список категорий;\n      9. Название - строка, обязательное;\n      10. Авторы - необязательное, текстовое;\n      11. Описание - необязательное, многострочное;\n      12. кнопка “Добавить” - при клике должна происходить валидация формы и если нет ошибок то материал должен сохраниться;\n   4. Страница просмотра материала\nНа данной странице должны располагаться:\n      13. Заголовок по шаблону: %название% \n      14. Автор;\n      15. Тип;\n      16. Категория;\n      17. описание;\n      18. блок “Теги”:\n         1. панель добавления тега, состоит из:\n            1. поле “название тега” - обязательное, выпадающий список из тегов;\n            2. кнопка “добавить” - при клике должна происходить валидация, если успешно до должен добавиться тег к материалу;\n         2. список добавленных тегов, где каждый элемент состоит из:\n            1. название в виде ссылки - при клике должна открываться страница просмотра материалов с поиском по выбранному тегу;\n            2. кнопка удаления тега - при клике должно запрашиваться подтверждение удаления, в случае подтверждения тег должен удалиться;\n      19. блок Ссылки:\n         1. кнопка “Добавить” - при клике должен появиться диалог добавления ссылки;\n         2. диалог добавления и редактирования ссылки, состоит из:\n            1. Подпись ссылки - не обязательное;\n            2. Ссылка  - обязательное, в формате url;\n            3. кнопка “Добавить” - при клике должна происходить валидация данных и в случае успеха должна добавится ссылка к материалу;\n            4. кнопка “Закрыть” - при клике должно закрываться диалоговое окно;\n         3. список ссылок, где каждый элемент состоит из:\n            1. подпись в виде ссылки (если подпись не задана, то должна выводиться ссылка);\n            2. кнопка редактирования - при клике должен открываться диалог добавления и редактирования ссылки;\n            3. кнопка удаления ссылки - при клике должно запрашиваться подтверждение удаления, в случае подтверждения ссылка должна удаляться;\n   5. Страница списка тегов\nНа данной странице должны располагаться:\n      20. кнопка “Добавить” - при клике должна открываться страница создания и редактирования тега;\n      21. список тегов, где каждый элемент состоит из:\n         1. название - название тега;\n         2. кнопка “Редактировать” - при клике должна открываться страница создания и редактирования тега;\n         3. кнопка “Удалить” - при клике должно запрашиваться подтверждение удаления, в случае подтверждения тег должен удалиться;\n   6. Страница создания и редактирования тега\nНа данной странице должны располагаться:\n      22. поле “Название” - обязательное;\n      23. кнопка “Добавить” - при клике должна происходить валидация данных, если успешна, то тег должен сохраниться и открыться страница списка тегов;\n   7. Страница списка категорий\nНа данной странице должны располагаться:\n      24. кнопка “Добавить” - при клике должна открываться страница создания и редактирования категории;\n      25. список категорий, где каждый элемент состоит из:\n         1. название - название категории;\n         2. кнопка “Редактировать” - при клике должна открываться страница создания и редактирования категории;\n         3. кнопка “Удалить” - при клике должно запрашиваться подтверждение удаления, в случае подтверждения категория должна удалиться;\n   8. Страница создания и редактирования категория\nНа данной странице должны располагаться:\n      26. поле “Название” - обязательное;\n      27. кнопка “Добавить” - при клике должна происходить валидация данных, если успешна, то категория должна сохраниться и открыться страница списка категорий;\n2. Не функциональные требования\n   1. выполнять задание можно на Yii2, Laravel или чистом PHP;\n   2. версию PHP использовать не менее версии 7.4;\n   3. в качестве базы данных можно использовать MySql или PostgreSql;\n   4. в работе нужно использоваться систему версионирования кода Git (gitlab.com ,github.com, bitbucket.org);\n   5. Приветствуется наличие развернутой версии на хостинге и/или описание по развертыванию проекта.\n      1. Так же приветствуется заполнение проекта тестовыми данными для демонстрации отображения;\n3. Перечисления\n   1. Типы материала\n      1. Книга\n      2. Статья\n      3. Видео\n      4. Сайт/Блог\n      5. Подборка\n      6. Ключевые идеи книги\n\n## Запустить\nПоменять в `docker-compose.yml` пароль и название базы данных по усмотрению;  \nСкопировать `.env-example` в `.env`, заменить `DB_HOST` на название сервиса базы данных в `docker-compose.yml`, по умолчанию `db`, заменить `DB_PASSWORD` на пароль базы данных в `docker-compose.yml`, если поменяли имя базы на прошлом шаге замените и здесь;   \nСмонтировать composer в репозиторий `docker run --rm -v $(pwd):/app composer install`;  \nСменить владельца репозитория на `www-data` - `sudo chown -R www-data:root ~/laravel-app`;  \nЗапустить `docker-compose up -d`;\nСгенерировать ключ `docker-compose exec app php artisan key:generate \u0026\u0026 docker-compose exec app php artisan config:cache`;  \nЗапустить миграцию `docker-compose exec app php artisan migrate`;  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexi66%2Fstartup-it-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexi66%2Fstartup-it-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexi66%2Fstartup-it-test/lists"}