Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/exi66/startup-it-test

Тестовое задание Startup-it
https://github.com/exi66/startup-it-test

docker-compose laravel php

Last synced: 21 days ago
JSON representation

Тестовое задание Startup-it

Awesome Lists containing this project

README

        

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