Доброго времени суток, любимые мои читатели. Каждый день вас становится всё больше, пусть и не очень большими темпами, но мне приятно видеть, что материалы читают, комментируют и ставят лайки. Продолжайте это делать и дальше, а я буду делиться своими проектами.
О чём статья?
В этой статье я хочу рассказать о процессе проектирования справочного сайта для своего приложения. Совсем недавно я опубликовал крупное обновление с добавлением большего количества правил и условий для работы, в том числе несколько нововведений для pro-version, поэтому надеюсь на увеличение платных подписчиков (о результатах расскажу позже).
У пользователей появляется много вопросов о том, как работать с приложением, поэтому создание справочного сайта стояло у меня давно в задачах, но приступить к его созданию я решил только сейчас. На самом деле есть его простая версия и сейчас, можно посмотреть здесь, если я ещё не выпустил новую версию. Но представляет он из себя сейчас одну страницу, на одном языке с небольшим описанием как настраивать приложение. Этого очевидно не достаточно, поэтому я задумался над созданием мультиязычного, ориентированного на мобильные устройства справочного сайта с несколькими разделами.
Статистика по посещениям справочного сайта сейчас стабильно даёт ~100 пользователей в сутки, это потенциальные платные пользователи, которые просто не смогли разобраться в приложении и поэтому создание грамотной справочной инфраструктуры очень важна.
Проектирование будущего сайта
Для начала я сформулировал несколько основополагающих идей, который должны лежать в основе справочного сайта, чтобы всегда держать их перед глазами:
- Сайт должен быть полностью адаптирован под мобильные устройства — удобное отображение текста, изображений, таблиц и интерфейса.
- Ввиду ориентированности на мобильные устройства необходимо продумать механизм догрузки нового контента без перезагрузки страницы. Необходимо отсутствие обновления страницы, а лишь замена текстовой части.
- Мультиязычность. Необходимо создать полностью мультиязычный сайт с поддержкой любого количества языков. Для начала Английский, Русский, Польский, Итальянский, Немецкий, Испанский, Японский, Французский, Иврит, Арабский.
- Стоит подумать над созданием администраторского интерфейса для добавления новых страниц с информацией и редактирования существующих. С каждым обновлением приложения может потребоваться изменение справочной информации.
Для решения задачи создания ориентированного на мобильные устройства сайта я планирую использовать технологии React, выбор её позволит решить проблему с подгрузкой информации и думаю имеет гибкие возможности для оптимизации под мобильные устройства. Скажу сразу, ранее я с React не работал, но не считаю это проблемой, изучу.
Структура сайта
Важным этапом в проектировании справочного сайта является выбор структуры предоставления информации, я долго думал об этом и решил разделить сайт на два крупных раздела — раздел с инструкциями по приложению и раздел с ответом на наиболее распространенные вопросы пользователей.
После этого я начал накидывать макет будущего сайта с разными разделами и даже немного начал продумывать то, как будет выглядеть каждый из этих разделов. Одной из важных возможностей сайта должен стать "Поиск", это основа любого справочного сайта, не забываем и держим в голове этот пункт.
Стрелочками показано то, куда ведут определенные ссылки. Вы можете посмотреть оригинал макета по ссылке. Вам доступен только просмотр. Это не окончательный вариант расположения элементов и структуры сайта, но пока что я ориентируюсь именно на него. Важное решение — продумать всё это до того, как я приступил к программированию.
Хранение информации
Важный вопрос, с которым я до конца не определился — способ хранения информации о статьях с учетом мультиязычности сайта. Предполагается, что будет более 5 языков и для каждого нужно подготовить свой вариант статьи и где-то его хранить.
На данный момент я рассматриваю вариант с MongoDB. Это одна из самых популярных NoSQL, по задумке для каждой отдельной страницы инструкции или Вопрос-ответа, и внутри каждого документа набор из переводов на разные языки. Я не уверен в плюсах и минусах этого подхода, напишите в комментариях, если вы сталкивались с таким или у вас есть какие-то идеи.
Второй вариант, к использованию которого я и склоняюсь, заключается в использовании MySQL. А для возможности хранить перевод на несколько языков планирую добавить столбец с идентификатором языка. Из минусов, для каждой сущности Инструкции/Вопрос-ответ будет храниться несколько записей в одной таблице, различающихся переводом и идентификатором языка.
Что дальше?
На этом я заканчиваю этап проектирования и подготовки, хотя ещё многое можно было бы сделать. В том числе проработать структуры данных, отрисовать дизайн. Но я принял решение, что проделанного достаточно, а остальное будет сделано по ходу программирования. Теперь остается лишь заняться самой разработкой.
Пишите ваше мнение в комментариях, подскажите, как поступить с базой данных и хранением информации, ставьте лайки, подписывайтесь и рассказывайте друзья о блоге.