Code Monkey home page Code Monkey logo

startup-it-test's Introduction

Задание

Тестовое задание PHP разработчика Вёрстка: https://disk.yandex.ru/d/qtI4_81_j6x5Ow

  1. Функциональные требования
  2. Меню Должно содержать следующие элементы:
    1. Материалы - при клике должна открываться страница списка материалов;
    2. Теги - при клике должна открываться страница списка тегов;
    3. Категории - при клике должна открываться страница списка категорий;
  3. Страница списка материалов На данной странице должны располагаться: 4. кнопка “Добавить” - при клике должна открываться страница создания и редактирования материала; 5. блок поиска:
    1. поисковая строка;
    2. кнопка “Искать”:
      1. при клике должен происходить поиск по материалам;
      2. если поисковая строка не пустая, то должны искаться вхождения поисковой строки в название материала, авторах, тегах и категориях;
    3. таблица результатов поиска, со столбцами:
      1. Название - название материала в виде ссылки на просмотр материала;
      2. Авторы - авторы материала;
      3. Тип - тип материала;
      4. Категория - категория материала;
      5. Действия:
        1. Редактирование - при клике должна открываться страница создания и редактирования материала;
        2. Удаление - при клике должно запрашиваться подтверждение удаления, при одобрении должно происходить удаление материала;
  4. Страница создания и редактирования материала На данной странице должны располагаться: 7. Тип - обязательное, возможен выбор одного значения из перечисления: Типы материала (см. пункт 3 ТЗ); 8. Категория - обязательное, выпадающий список категорий; 9. Название - строка, обязательное; 10. Авторы - необязательное, текстовое; 11. Описание - необязательное, многострочное; 12. кнопка “Добавить” - при клике должна происходить валидация формы и если нет ошибок то материал должен сохраниться;
  5. Страница просмотра материала На данной странице должны располагаться: 13. Заголовок по шаблону: %название% 14. Автор; 15. Тип; 16. Категория; 17. описание; 18. блок “Теги”:
    1. панель добавления тега, состоит из:
      1. поле “название тега” - обязательное, выпадающий список из тегов;
      2. кнопка “добавить” - при клике должна происходить валидация, если успешно до должен добавиться тег к материалу;
    2. список добавленных тегов, где каждый элемент состоит из:
      1. название в виде ссылки - при клике должна открываться страница просмотра материалов с поиском по выбранному тегу;
      2. кнопка удаления тега - при клике должно запрашиваться подтверждение удаления, в случае подтверждения тег должен удалиться;
    3. блок Ссылки:
    4. кнопка “Добавить” - при клике должен появиться диалог добавления ссылки;
    5. диалог добавления и редактирования ссылки, состоит из:
      1. Подпись ссылки - не обязательное;
      2. Ссылка - обязательное, в формате url;
      3. кнопка “Добавить” - при клике должна происходить валидация данных и в случае успеха должна добавится ссылка к материалу;
      4. кнопка “Закрыть” - при клике должно закрываться диалоговое окно;
    6. список ссылок, где каждый элемент состоит из:
      1. подпись в виде ссылки (если подпись не задана, то должна выводиться ссылка);
      2. кнопка редактирования - при клике должен открываться диалог добавления и редактирования ссылки;
      3. кнопка удаления ссылки - при клике должно запрашиваться подтверждение удаления, в случае подтверждения ссылка должна удаляться;
  6. Страница списка тегов На данной странице должны располагаться: 20. кнопка “Добавить” - при клике должна открываться страница создания и редактирования тега; 21. список тегов, где каждый элемент состоит из:
    1. название - название тега;
    2. кнопка “Редактировать” - при клике должна открываться страница создания и редактирования тега;
    3. кнопка “Удалить” - при клике должно запрашиваться подтверждение удаления, в случае подтверждения тег должен удалиться;
  7. Страница создания и редактирования тега На данной странице должны располагаться: 22. поле “Название” - обязательное; 23. кнопка “Добавить” - при клике должна происходить валидация данных, если успешна, то тег должен сохраниться и открыться страница списка тегов;
  8. Страница списка категорий На данной странице должны располагаться: 24. кнопка “Добавить” - при клике должна открываться страница создания и редактирования категории; 25. список категорий, где каждый элемент состоит из:
    1. название - название категории;
    2. кнопка “Редактировать” - при клике должна открываться страница создания и редактирования категории;
    3. кнопка “Удалить” - при клике должно запрашиваться подтверждение удаления, в случае подтверждения категория должна удалиться;
  9. Страница создания и редактирования категория На данной странице должны располагаться: 26. поле “Название” - обязательное; 27. кнопка “Добавить” - при клике должна происходить валидация данных, если успешна, то категория должна сохраниться и открыться страница списка категорий;
  10. Не функциональные требования
    1. выполнять задание можно на Yii2, Laravel или чистом PHP;
    2. версию PHP использовать не менее версии 7.4;
    3. в качестве базы данных можно использовать MySql или PostgreSql;
    4. в работе нужно использоваться систему версионирования кода Git (gitlab.com ,github.com, bitbucket.org);
    5. Приветствуется наличие развернутой версии на хостинге и/или описание по развертыванию проекта.
      1. Так же приветствуется заполнение проекта тестовыми данными для демонстрации отображения;
  11. Перечисления
    1. Типы материала
      1. Книга
      2. Статья
      3. Видео
      4. Сайт/Блог
      5. Подборка
      6. Ключевые идеи книги

Запустить

Поменять в docker-compose.yml пароль и название базы данных по усмотрению;
Скопировать .env-example в .env, заменить DB_HOST на название сервиса базы данных в docker-compose.yml, по умолчанию db, заменить DB_PASSWORD на пароль базы данных в docker-compose.yml, если поменяли имя базы на прошлом шаге замените и здесь;
Смонтировать composer в репозиторий docker run --rm -v $(pwd):/app composer install;
Сменить владельца репозитория на www-data - sudo chown -R www-data:root ~/laravel-app;
Запустить docker-compose up -d; Сгенерировать ключ docker-compose exec app php artisan key:generate && docker-compose exec app php artisan config:cache;
Запустить миграцию docker-compose exec app php artisan migrate;

startup-it-test's People

Contributors

exi66 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.