Lemmy
Стан розробки UJournal 3.0
Привіт, хочу поділитися тим як проходить розробка бекенда для UJ 3.0.
Я не пишу багато апдейтів, тому що багато займаюся архітектурою бекенду, а це потребує багато часу для того щоб протестувати та обкатати бібліотеки, та щоб навчитися зв’язувати все разом.
Виділив наступні пріорітети:
- Індексація пошуковими системами
- Швидкість інтерфейса
- Оптимізація графіки
- Самомодерація
- Стабільність та швидкість розробки
Для того щоб сайт добре індексувався я використовую NextJS та серверний рендерінг.
Серверний рендерінг також покрищить швидкість відмальовки інтерфейса. Тепер немає плашек-плейсхолдерів які зараз показуються перед загрузкою контента.
Графіка оптимізується двома способами: на клієнті і на сервері. На клієнті у той момент коли додається картинка відбувається зжимання до максимального розміру 1 МБ. На сервері усі картинки відправляються на CDN (типу AWS S3). Такі оптимізації дають можливість завантажувати меньший об’єм інформації та інформація йде з єдиного місця, яке можно оптимізувати вже на рівні CloudFlare.
Самомодерація є важливим пріорітетом. Ми вже маємо рейтинг поста, але тепер є окремі налаштування для того щоб прибирати пости з низьким рейтингом зі стрічки. Ще додаєтсья можливість ігнорувати людей та теги, що дає можливість налаштувати сайт під себе. Ще обмірковую функцію “Поскаржитися”. Хочеться максимально автоматизувати цю функцію, щоб люди самі могли блокувати шкідливий контент. В голові тримаю такі приклади як: “телеграм бот, який показує голосування при якому людина блокується коли набере більшість голосів від учасників” та “така сама функція /votekick з гри Counter-Strike”. Поки ще напевно не можу сказати за яким критерієм обирати людей котрі зможуть забанити людину, але можливо, цей крітерій буде рейтинг користувача. Тобто від 5% до 20% людей з найвищим рейтингом автоматично отримують можливість голосувати за блокування інших людей, але ініціатором голосування може стати будь хто.
Стабільність та швидкість розробки. Тут найгловнішим є обрані інструменти. Пріорітетним крітерієм у виборі інструмента для мене є підтримка цим інструментом TypeScript. Наприклад, найулюбленішим інструментом для мене стала ORM Prisma. Чому? Тому що є можливість описати схему бази даних та зберігти її в коді і трекати зміни в Git, але найголовнішим є те що Prisma вміє генерувати міграції, попереджувати якщо є загроза видалення даних, підтримує типи даних на рівні кода. Тобто коли я роблю зміну в схемі БД, то VSCode автоматично підсвічує всі місця де треба зробити рефакторінг. Це дуже сильно підвищує стабільність додатка. Можу рекомендувати.
Ще одним інструментом, або мабуть архітектурним принципом, є черги. Я дуже силньно відчув користь з використання черг, тому що вони дають можливість не робити всю роботу в одному місці, а відкладати її і обробляти в іншому місці. Також вони дозволяють планувати важливі системні задачі. Це такий собі Cron, але з людяним інтерфейсом та можливістю відслідкувати різні процеси.
Який поточний стан розробки? Останнє що я реалізував: це систему сповіщень. При додаванні відповіді та реакції на пост відправляється електроний лист зі списком нових сповіщень.
Також в планах є додавання сповіщень, які будуть приходити у вигляді Push повідомлення, звісно якщо користувач дозволив це у браузері.
Якщо зробити загальний підсумок на якій стадії розробка, то я доробив всі основні розділи: Пости, Люди, Теги, Сповіщення, Налаштування, Профіль. Функціонально сайт працює. Можно сказати, що більшість шляху пройдено. Зараз наступним кроком є: реалізація стрічки Відповіді, Дайджесту за тиждень та впровадження дизайну.
Хочу показати скрін, який з першого погляду не вражає дизайном, але тому що першим пріорітетом є бекенд та функціонал, а не дизайн.
Можу скзати, що підхід, коли робиться спочатку повністю функціонал (без дизайну), є дуже вдалим, з мого погляду, тому що я не відволікаюсь на прикрашення інтерфейсу чи шріфти, а сконцентрований на функціях.
Можу тільки побажати собі успіху в подальшій розробці, а вам бажаю терпіння та сил. Потрошку йдемо вперед, наша мета рух. Всім тепла у ці зимові тиждні!
Добридень! нова версія краще ніж lemmy. хороша робота. Чи будете публікувати в гітхаб? чи продаєте скрипт? хочу зробити платформу казахською мовою. Дякую!
Долучаюсь до твоїх побажань. Щиро дякую за твою працю
Upd: дивно, що в мене цей пост тільки зараз в стрічці виплив, зараз бачу йому місяць.
@lemmy@ujournal.com.ua @GoodComedian@ujournal.com.ua
кажи <s>паляница</s> мені, будь ласка
як коректно поставити, скажімо, ||спойлер||
я вже RTFM’ed всю документацію на markdown, markup і навіть на lemmy
і затестив
працювало ж( ти щось зламав?
Дякую за роботу!
Може колись буде час додати можливість відправляти репорт на помилку в тексті по Ctrl+Enter, було б супер 🥸
Так буде доречна функція, дякую за пропозицію.