Реконструкция на CodeJ

jazz

Опубликован:  2024-03-03T05:06:41.012254Z
Отредактирован:  2024-03-03T05:06:41.012254Z
Статус:  публичный
11
0
1

Затеял на CodeJ большую реконструкцию. В общем-то текущее состояние сервиса меня полностью устраивает в его серверной части, поэтому реконструкция коснётся в основном клиентского кода. Основой клиентской части любого web-приложения является дизайнерский макет, а поскольку дизайнера у меня нет, и сам я - очень плохой дизайнер, макет разрабатывать некому. Он конечно же присутствует где-то в глубинах моего воображения, но материализовать этот образ мне приходится исключительно вёрсткой, которая у меня тоже хромает. Я всего лишь начинающий бэкэнд-web-программист...

Макет сайта

На текущий момент некоторые элементы дизайна страниц CodeJ меня крайне не удовлетворяют, а именно, чрезмерная полосатость, мелкий шрифт текста статей, используемая цветовая гамма. Это именно то, что очень сильно хочется исправить.

Макет CodeJ базируется на уже достаточно стареньком фреймворке Bootstrap версии 3.4. Я было подумывал совсем от него отказаться, и сверстать макет самостоятельно. Но, оценив количество проблем, которые мне принесло бы такое решение, я всё-таки остался верен, и в архив с вендорскими библиотеками для фронтэнда дистрибутив Bootstrap всё-таки положил. С моими возможностями в части связки HTML-CSS такое решение будет единственно разумным и не потребует на реконструкцию с избытком много времени.

Для сравнения предлагаю пару снимков экрана со страницей запроса регистрации пользователя. Как было, как будет, вернее, уже стало в моей экспериментальной песочнице.

Страница в текущем состоянии CodeJ:

BnQGJ0EYas.png

Страница после реконструкции:

pBio9C4RpM.png

В макете сайта после реконструкции будет использована валидная для web гамма цветов, я надеюсь, что в итоге сайт будет выглядеть одинаково на всех устройствах. Кроме этого, в браузерах на основе Firefox теперь шрифты будут отображаться иначе, мне очень не нравился шрифт в этих браузерах в текущей версии сайта, и поэтому я предпочитал браузеры на основе Chromium, с этой особенностью тоже поработаю.

Бэкэнд приложения

Бэкэнд приложения в текущем состоянии лично меня полностью устраивает. Но в процессе тестирования сайта на разных устройствах я выявил одну характерную особенность. А именно, сайт очень отзывчив и работает великолепно на быстрых клиентах с SSD дисками. В то же время на машинах с медленными HDD до полного накопления клиентского кэша сайт заметно заикается при переходах со страницы на страницу.

Дело в том, что бэкэнд основывается на колхозном, недокументированном API, как говорят англичане do it yourself API, в связи с этим на медленных клиентах случаются задержки получения данных по всем запросам на страницах сайта. Эти задержки слишком бросаются в глаза, и я знаю, как их нивелировать. Поэтому с бэкэндом тоже придётся поработать и кое-чего исправить. При этом данные сайта никаких изменений не получат, вся логика будет построена на одной и той же базе данных с одним и тем же составом таблиц и запросов.

Текущее состояние

Разработка песочницы для CodeJ пока размещена в открытой репе на github.com. Я намерен оставить её открытой вплоть до полной разработки всего предусмотренного комплекта сценариев. Следить за разработкой можно в режиме реального времени в моём профиле. Там же можно найти ссылку, куда все заинтересованные могут перевести свой скромный донат.

Надо сказать, что парни активно клонируют репу на регулярной основе, но "лайков", "подписок", "донатов" и "комментариев" я от них пока не дождался. Сидят, молчат, каждый коммит за мной подбирают, всякую фигню про меня думают... Пусть. :)

5NQbkhaB9j.png

Уже сейчас в песочнице готова система авторизации: вход в сервис, самостоятельная регистрация пользователей, сброс забытого пароля, смена пароля и e-mail в профиле, аватар пользователя, профиль пользователя, администрирование пользователей с набором предусмотренных администратором разрешений для каждого конкретного пользователя, возможность добавлять в список друзей и в список заблокированных других пользователей.

На текущий момент я закончил переработку системы авторизации и пользовательского профиля. С понедельника приступаю к разработке встроенного в сервис хостинга изображений. Поскольку бэкэнда изменения коснутся в меньшей степени, разработка будет продвигаться довольно быстро. Учитывая, что я не IT-шник, и автоматизированные тесты мне не нужны, тратить на них время пока не собираюсь.

Для справки

CodeJ разрабатывается на базе асинхронного web-фреймворка общего назначения Starlette. Проект имеет некоторые особенности в архитектуре. Возможно, что кто-то скажет, что так делать нельзя. Но я-то не IT-шник, и мне никто не запретит делать так, как мне нравится. Хобби есть хобби...

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

  • проект разрабатывается на Python 3.12 на базе операционной системы Debian sid;

  • приложение основывается на две базы данных (PostgreSQL и Redis);

  • в проекте не используется ORM, работа с данными в PostgreSQL осуществляется прямыми запросами с помощью асинхронного адаптера asyncpg;

  • большинство ключевых запросов авторизованных пользователей сервиса осуществляется с API, в том числе регистрация в сервисе и авторизация;

  • сервис администрируется в web-интерфейсе во всех ключевых аспекта и возможностях.

Продолжение следует

Как я уже отметил выше, код CodeJ открыт, и у каждого желающего есть возможность следить за последовательностью разработки этого web-проекта в реальном времени, все необходимые ссылки выше. Лайки, донаты, подписки, комментарии и все остальные аттрибуты социальной жизни крайне приветствуются. Жалуйтесь..! :)