Перечитал прошлый план развития https://otvechai.com/blog/devnews/3105/
Многое изменилось с тех пор :)
Версия "Только для чтения" была запущена, но стала вторым интерфейсом к активной базе. Онлайн в ней вполне реальный, а не искусственный.
Уведомления были переделаны и уже реализованы на текущем сайте, а переделка дизайна текущего сайта и не планируется вовсе...
В любом случае "первый значительный шаг" был выполнен :)
Второй значительный шаг - развертывание полноценной версии нового движка, параллельно с текущей. Чтоб можно было между ними переключаться и полноценно пользоваться обеими.
Третий шаг - полный переход на новую версию (отключение и полное прекращение поддержки текущей версии).
После второго шага можно будет заниматься разработкой мини версии (и похоже её придется полностью переделать - прошлые наработки всё менее актуальны).
После третьего шага можно будет заняться внедрением нового функционала (который требует изменения в базе).
Что нужно для второго шага?
- Удаление постов - уже начал этим заниматься, частично что-то даже реализовал.
- Редактирование постов.
- Полное внедрение уведомлений на новый движок (они сейчас внедрены частично, из-за отсутствия удаления постов)
- Страницы удалившихся и забаненных (пока они сделаны на отъежись :) )
- Блокировка пользователей в своих блогах
- Проверка корректности работы ограничений на написание постов (черные списки, немота, также думаю сделать как на спрашке - можно смотреть на удаленный вопрос, но нельзя на него отвечать. Комментировать ответы к удаленным вопросам можно, смотреть на удаленный ответы нельзя).
- Отправка уведомлений на почту (и в телеграм модераторам) - думаю этот функционал просто перенесу со старой версии с минимальными изменениями.
- Шапка. Пока не совсем определился, что там будет. Так как концепция нового движка не подразумевает перезагрузку страницы, шапка не будет перезагружаться при переходе пользователей с одной страницы на другую (как это в текущем движке). Следовательно, нужно сделать, чтоб её контент обновлялся как-то иначе (по таймеру, например). В качестве контента думаю сделать там номинации, ссылки на соцсети и общую рекламу блогов (не конкретных блогов, а именно функционала). В дальнейшем эта шапка будет использоваться как некий информационный блок (типа внутренней рекламы - "смотрите, как у нас круто" :) ). Также я обратил внимание на просьбу Капы о поздравлениях с ДР - думаю эта информация как раз для шапки ("сегодня празднуют день рождения..." и кнопка "поздравить" :) ). Но это уже на далекое будущее планы (новый функционал :) )
- Какое-то оповещение нужно о грядущих и текущих техработах. Также проверка обновлений клиентского приложения (если было обновление, но у Вас приложение ещё не обновилось, Вам будет предложено обновить страницу)
- Какая-то обработка ошибок. Приложение запросило не ту страницу, сервер не доступен (упал, или у Вас какие-то проблемы со связью). Думаю будет небольшой всплывающий блок, который будет указывать на ошибку ("потеряна связь с сервером, переподключаемся" и крутилка, указывающая на процесс :) ). Блок при этом не должен мешать. Например Вы читаете длинный пост в блог и в этот момент пропадает связь (Вы в метро, например). Ну и ладно, продолжаете читать пост.
- Автофокусировка на поле ввода (где и когда это надо), реакция на нажатие клавиш (enter для отправки сообщения, если не отключено, ctrl+enter - пропуск).
- Кнопка "поделиться"
- Топ 10 вопросов
- Поиск
- Теги вопросов доработать.
Далее мне нужно будет разобраться с развертыванием нового движка - Пока он у меня на сервере. После развертывания версии "только для чтения" я внедрил новый модуль - Django Channels (те самые вебсокеты, о которых ранее писал), и я пока не знаю, как его разворачивать (не знаю, потому что не разворачивал - как разверну - узнаю :) ). Вроде как это отдельный сервис.
В планах у меня максимально упростить переход между старой и новой версиями. Ни каких новых адресов. Просто заходишь в настройки, или какую-то отдельную страницу, и нажимаешь кнопку "хочу перейти на новый движок". При этом адрес не меняется, и в дальнейшем заходя на otvechai.com пользователь сразу будет оказываться на новом движке. Вернуться назад можно будет тем же способом.
Примерно есть идея, как это реализовать. Насколько она правильная - узнаю в процессе реализации :). Думаю, что у нового сервера приложения (на этом этапе) не будет своего веб сервера. Основной же вебсервер будет решать, куда пользователя направить - на старое приложение или на новое. При нажатии на кнопку "хочу перейти на новый движок" пользователю будет устанавливаться какой ни будь куки, при нажатии на кнопку "хочу вернуться на старый" этот куки будет удаляться. По наличию куки веб сервер будет решать, куда пользователя направить (вроде nginx это умеет)
Ну и в принципе протестировать совместимость старого и нового движка (уже вижу пару моментов, которые не заработают, но думаю ими пренебречь можно будет - главное чтоб новое приложение не портило данные :) )
Далее, после того как приложение будет развернуто.
- Думаю пустить на него ограниченное количество людей (например подписчиков этого блога, ну и сам конечно буду там сидеть). На этом этапе должны будут выявиться (и устраниться) какие-то грубые косяки.
- Объявить о том, что доступен новый движок для полноценного использования и всячески форсировать переход на него. Например завлекать туда людей новым функционалом - тёмной темой, удалением сообщений в личке (если реализую), новыми блогами, ну и скоростью работы. На этом этапе также должны будут выявиться и устраниться косяки :)
Что нужно для третьего шага?
- Понять, что мы к этому готовы. Новый движок реализовал функционал старого и этот функционал корректно работает.
- Реализовать раздельный интерфейс для зарегистрированных и не зарегистрированных пользователей. Незарегистрированным пользователям пофиг на все преимущества одностраничного приложения. Они могут зайти на сайт из поисковика ради какого-то одного вопроса или поста в блоге (и не стать постоянным пользователем сайта). Для них главное скорость загрузки страницы. А простая веб страница загрузится куда быстрее, чем одностраничное приложение (плюсы приложения когда вы постоянно им пользуетесь, тогда и трафик снижается и скорость увеличиватеся, а если вы зашли на одну страницу, то качать ради неё приложение не стоит, оно хоть и не большое, но всё же...). Кроме того к незарегистрированным пользователям относятся поисковые боты, которые индексируют сайт (им гораздо проще работать с простыми веб страницами, чем с одностраничниками), а также функционал "поделиться" с одностраничниками как-то плохо работает (попробуйте скопировать ссылку с https://2.0.otvechai.com в какой ни будь ВК - предварительного просмотра этой страницы в ВК не будет).
В общем нужно сделать простые веб странички и показывать их всем незарегистрированным (для них интерфейс не полноценен - они могут только вопросы, ответы и посты смотреть, но не могут комменты и тем более личку, так что не думаю, что тут много работы).
Также этот интерфейс должен быть правильно свёрстан, для эффективной индексации поисковиками (содержать в себе особую разметку и теги). А вот зарегистрированным пользователям эта разметка не нужна...
Вот как-то так... Даже интересно, что из этого будет реализованно именно в том виде, как я описал :)
Многое изменилось с тех пор :)
Версия "Только для чтения" была запущена, но стала вторым интерфейсом к активной базе. Онлайн в ней вполне реальный, а не искусственный.
Уведомления были переделаны и уже реализованы на текущем сайте, а переделка дизайна текущего сайта и не планируется вовсе...
В любом случае "первый значительный шаг" был выполнен :)
Второй значительный шаг - развертывание полноценной версии нового движка, параллельно с текущей. Чтоб можно было между ними переключаться и полноценно пользоваться обеими.
Третий шаг - полный переход на новую версию (отключение и полное прекращение поддержки текущей версии).
После второго шага можно будет заниматься разработкой мини версии (и похоже её придется полностью переделать - прошлые наработки всё менее актуальны).
После третьего шага можно будет заняться внедрением нового функционала (который требует изменения в базе).
Что нужно для второго шага?
- Удаление постов - уже начал этим заниматься, частично что-то даже реализовал.
- Редактирование постов.
- Полное внедрение уведомлений на новый движок (они сейчас внедрены частично, из-за отсутствия удаления постов)
- Страницы удалившихся и забаненных (пока они сделаны на отъежись :) )
- Блокировка пользователей в своих блогах
- Проверка корректности работы ограничений на написание постов (черные списки, немота, также думаю сделать как на спрашке - можно смотреть на удаленный вопрос, но нельзя на него отвечать. Комментировать ответы к удаленным вопросам можно, смотреть на удаленный ответы нельзя).
- Отправка уведомлений на почту (и в телеграм модераторам) - думаю этот функционал просто перенесу со старой версии с минимальными изменениями.
- Шапка. Пока не совсем определился, что там будет. Так как концепция нового движка не подразумевает перезагрузку страницы, шапка не будет перезагружаться при переходе пользователей с одной страницы на другую (как это в текущем движке). Следовательно, нужно сделать, чтоб её контент обновлялся как-то иначе (по таймеру, например). В качестве контента думаю сделать там номинации, ссылки на соцсети и общую рекламу блогов (не конкретных блогов, а именно функционала). В дальнейшем эта шапка будет использоваться как некий информационный блок (типа внутренней рекламы - "смотрите, как у нас круто" :) ). Также я обратил внимание на просьбу Капы о поздравлениях с ДР - думаю эта информация как раз для шапки ("сегодня празднуют день рождения..." и кнопка "поздравить" :) ). Но это уже на далекое будущее планы (новый функционал :) )
- Какое-то оповещение нужно о грядущих и текущих техработах. Также проверка обновлений клиентского приложения (если было обновление, но у Вас приложение ещё не обновилось, Вам будет предложено обновить страницу)
- Какая-то обработка ошибок. Приложение запросило не ту страницу, сервер не доступен (упал, или у Вас какие-то проблемы со связью). Думаю будет небольшой всплывающий блок, который будет указывать на ошибку ("потеряна связь с сервером, переподключаемся" и крутилка, указывающая на процесс :) ). Блок при этом не должен мешать. Например Вы читаете длинный пост в блог и в этот момент пропадает связь (Вы в метро, например). Ну и ладно, продолжаете читать пост.
- Автофокусировка на поле ввода (где и когда это надо), реакция на нажатие клавиш (enter для отправки сообщения, если не отключено, ctrl+enter - пропуск).
- Кнопка "поделиться"
- Топ 10 вопросов
- Поиск
- Теги вопросов доработать.
Далее мне нужно будет разобраться с развертыванием нового движка - Пока он у меня на сервере. После развертывания версии "только для чтения" я внедрил новый модуль - Django Channels (те самые вебсокеты, о которых ранее писал), и я пока не знаю, как его разворачивать (не знаю, потому что не разворачивал - как разверну - узнаю :) ). Вроде как это отдельный сервис.
В планах у меня максимально упростить переход между старой и новой версиями. Ни каких новых адресов. Просто заходишь в настройки, или какую-то отдельную страницу, и нажимаешь кнопку "хочу перейти на новый движок". При этом адрес не меняется, и в дальнейшем заходя на otvechai.com пользователь сразу будет оказываться на новом движке. Вернуться назад можно будет тем же способом.
Примерно есть идея, как это реализовать. Насколько она правильная - узнаю в процессе реализации :). Думаю, что у нового сервера приложения (на этом этапе) не будет своего веб сервера. Основной же вебсервер будет решать, куда пользователя направить - на старое приложение или на новое. При нажатии на кнопку "хочу перейти на новый движок" пользователю будет устанавливаться какой ни будь куки, при нажатии на кнопку "хочу вернуться на старый" этот куки будет удаляться. По наличию куки веб сервер будет решать, куда пользователя направить (вроде nginx это умеет)
Ну и в принципе протестировать совместимость старого и нового движка (уже вижу пару моментов, которые не заработают, но думаю ими пренебречь можно будет - главное чтоб новое приложение не портило данные :) )
Далее, после того как приложение будет развернуто.
- Думаю пустить на него ограниченное количество людей (например подписчиков этого блога, ну и сам конечно буду там сидеть). На этом этапе должны будут выявиться (и устраниться) какие-то грубые косяки.
- Объявить о том, что доступен новый движок для полноценного использования и всячески форсировать переход на него. Например завлекать туда людей новым функционалом - тёмной темой, удалением сообщений в личке (если реализую), новыми блогами, ну и скоростью работы. На этом этапе также должны будут выявиться и устраниться косяки :)
Что нужно для третьего шага?
- Понять, что мы к этому готовы. Новый движок реализовал функционал старого и этот функционал корректно работает.
- Реализовать раздельный интерфейс для зарегистрированных и не зарегистрированных пользователей. Незарегистрированным пользователям пофиг на все преимущества одностраничного приложения. Они могут зайти на сайт из поисковика ради какого-то одного вопроса или поста в блоге (и не стать постоянным пользователем сайта). Для них главное скорость загрузки страницы. А простая веб страница загрузится куда быстрее, чем одностраничное приложение (плюсы приложения когда вы постоянно им пользуетесь, тогда и трафик снижается и скорость увеличиватеся, а если вы зашли на одну страницу, то качать ради неё приложение не стоит, оно хоть и не большое, но всё же...). Кроме того к незарегистрированным пользователям относятся поисковые боты, которые индексируют сайт (им гораздо проще работать с простыми веб страницами, чем с одностраничниками), а также функционал "поделиться" с одностраничниками как-то плохо работает (попробуйте скопировать ссылку с https://2.0.otvechai.com в какой ни будь ВК - предварительного просмотра этой страницы в ВК не будет).
В общем нужно сделать простые веб странички и показывать их всем незарегистрированным (для них интерфейс не полноценен - они могут только вопросы, ответы и посты смотреть, но не могут комменты и тем более личку, так что не думаю, что тут много работы).
Также этот интерфейс должен быть правильно свёрстан, для эффективной индексации поисковиками (содержать в себе особую разметку и теги). А вот зарегистрированным пользователям эта разметка не нужна...
Вот как-то так... Даже интересно, что из этого будет реализованно именно в том виде, как я описал :)