Skip to content

bugsoff/indexbox-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание Indexbox

Описание

  1. Сайт с двумя страницами: главная (/) и детальный обзор (/blog/blog-name-xxx)

  2. На главной странице - предпросмотр статей из базы (сортировка по убыванию даты добавления). Отображаются поля: заголовок, краткое описание и количество просмотров

  3. При клике на предпросмотр - переход на страницу полной статьи с увеличением счетчика просмотров

  4. Страница полной статьи отображает заголовок, полный текст и дату добавления

  5. На главной странице также есть левый сайдбар с выбор количества статей на странице и фильтрами:

    • по количеству просмотров
    • по продукту, к которому принадлежит статья
    • по дате добавления
  6. Контент страницы подгружается асинхронно средствами JS без перезагрузки страницы

Техническая составляющая

Файловая структура

core                                        логика работы приложения (controller)
    \api                                    логика работы API-запросов
        \api.php                            общий контроллер API
        \get-blog-list.api.php              контроллер API-запроса списка статей для главной страницы
        \get-blog.api.php                   контроллер API-запроса одной статьи страницы детальной информации
        \init-db.api.php                    контроллер API-запроса для инициализации БД начальными данными и создания индексов
    \pub                                    логика для публичных страниц
        \blog.php                           контроллер страницы с детальной информацией
        \main.php                           контроллер главной страницы
    \core.php                               общие функции логики и загрузка конфигурации
data                                        данные для начальной загрузки в БД
    \blog.json                              данные таблицы статей
    \products.json                          данные таблицы продуктов
db                                          классы работы с БД (model)
    \blog.db.php                            методы работы со статьями (выборка списка, одной статьи, обновление статьи)
    \db.php                                 общий класс БД (подключение и вспомогательные функции)
    \init.db.php                            методы начальной загрузки данных и индексации
doc                                         документы
    \Тестовое задание.docx                  описание тестового задания
gui                                         пользовательский графический интерфейс
    \img                                    каталог с изображениями
        \favicon.ico                        иконка сайта
    \pub                                    публичные страницы (view)
        \blog.gui.php                       построение контента страницы с детальной информацией
        \main.gui.php                       построение контента главной страницы
    \scripts                                JS-скрипты
        \blog.js                            скрипты для загрузки контента на странице с детальной информацией
        \main.js                            скрипты для загрузки и фильтрации контента на главной странцие
        \types.js                           общие типы данных
    \styles                                 таблицы стилей для отображения интерфейса браузером
        \blog.css                           стили для страницы с детальной информацией
        \main.css                           стили для главной страницы
    \gui.php                                общие функции для построние графического интерфейса
    \page.gui.php                           HTML-шаблон страницы
logs                                        каталог с лог-файлами ошибок
src                                         исходные файлы TypeScript
    \blog.ts                                скрипты для загрузки контента на странице с детальной информацией
    \main.ts                                скрипты для загрузки и фильтрации контента на главной странцие
    \tsconfig.json                          конфигурация TypeScript-транслятора
    \types.ts                               общие типы данных
.gitignore                                  список файлов не включаемых в проект для загрузки на GitHub
config.php                                  файл конфигурации: доступ к БД, кодировки и т.д.
index.php                                   общий контроллер (точка входа в приложение)
nginx.indexbox.conf                         часть конфигурационного файла Nginx-сервера
readme.md                                   файл с этим описанием

Краткое описание работы

  1. Первоначальная загрузка данных производится API-вызовом: /api/init-db При этом в БД создаётся структура таблиц, описанная в файлах /data/products.json и /data/blog.json. Из них же загружаются данные. Таблицы связываются внешним ключом и создаются индексы полей по которым происходит поиск и фильтрация.

  2. При переходе на главную страницу веб-сервер отдаёт пустую HTML-страницу с левым сайдбаром и установленным начальным положеним филдьтров

  3. JS скрипт считывает состояние фильтров и, выполняя API-запрос загружает контент страницы. Аналогичная загрузка контента проиходит при изменении фильтров

  4. При переходе на страницу детальной информации веб-сервер также отдаёт пустую страницу, контент которой загружается JS-скриптом

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published