Lemmy
Чергова реструктуризація UJournal
Вітаю, я обмірковую поточний стан речей на сайті, і розумію, що багато чого не працює. Деякі частини системи недороблені, а деякі я не роблю усвідомлено. Хочу написати про причину.
Я програміст, і в мене завжди є бажання створити ідеальну версію. Коли я дописую до якогось моменту одну версію – я вже размірковую над її недоліками і планую писати наступну. Тому у колективі зазвичай є менеджер, який обмежує такі схильності.
У мене нема менеджера, тому я є тим ким я є – роблю нові версії. Зараз я почав це визнавати, але все ще не прийшов до усвідомлення що це треба обмежувати.
Я написав поточну версію UJ і усвідомив в яких місцях ця версія має слабкості. Поділюся.
Код розрісся і багато речей мають спільні залежності, що ускладнює додавання нових речей. Це проблема росту, коли в одному кодовому просторі є і код відповідальний за ранжування стрічки, код для створення поста, валідація, купа перелінкованих моделей. Все це створює велике когнетивне навантаження і призводить до вигорання. Тому кожна нова зміна провокує купу багів, демотивацію та ваші недоволені відгуки.
І не все обмежується кодом. Дизайн теж не є пристосованим до змін. В дизайні UJ все ще відчувається спадщина TJournal/VC. Ці проєкти розроблялися геть з іншими думками, ніж UJ та значно більшою командою. Так як я працюю один, мені вкрай важко створювати і підтримувати купу елементів які мають складну структуру.
Тому я відновив пошуки комбінації дизайну та структури коду, щоб я міг з ними працювати один і це не викликало значних вигорань.
Здається я знайшов дизайн і структуру які буде простіше підримувати.
Якщо назвати зміни, то це буде «твіттерізація» UJournal. В новому дизайні більше Твіттера ніж TJournal.
Пост. Пост буде маленького розміру. Пост має:
- невеликий об’єм тексту без форматування (до 1000 символів)
- додатково може мати декілька зображень
- або декілька відео
- або лонгрід
- або опитування
Чому так? Форматування тексту моя боль. Я дуже багато часу проводжу виправляючи баги форматування. Тому хочу звести форматування до мінімуму. Але забирати поточні можливості редактора не хочеться – буде можливість, як і зараз, писати лонгріди, але в окремій вкладці.
Боль обрання зображення для тайтлу. З користувацької точки зору тут нема ніяких проблем, але з точки зору коду є ад – треба парсити HTML, треба завантажувати зображення на CDN. Ще треба враховувати щоб воно працювало швидко. Дуже складний підхід, який хочеться спростити.
Лонгріди. Це новий тип контенту, для якого буде розроблен окремий сайт. Щось накшталт:
Можливо, там буде ще додатковий функціонал переглядання статистики по переглядам.
Як і Telegraph, цей сайт можно буде використовувати незалежно від UJournal. Цей сайт буде інтегровано в UJ при додаванні поста кнопка «Лонгрід» буде відкривати вікно з редактором.
Коментарі стануть повідомленнями. Все що можно робити з повідомленням – можно буде робити і у відповіді на повідомлення.
Це нарешті дасть змогу додавати картинки, відео, красиві посилання як реакцію на повідомлення.
Краща мобільна версія. Поточну мобільну версію навряд можно назвати ідеальною. Причина – я був більше зайнятий десктопом і робив мобільну на останок. Після збору статистики я зрозумів, що треба спочатку перейматися за мобільну версію, тому що переважна більшість відвідувань надходить з мобільних девайсів.
API та боти. Великим недоліком поточної версії є відсутність API та ботів. Я хочу зробити API та додати бота якого можно буде конфігурувати на парсінг Твіттера, Телеграма, Ютуба. В цього бота можно буде кидати посилання на канали які він повинен парсити. Пости від бота будуть потрапляти в безодню. Звідти їх можно буде доставати через підняття рейтингу та переводу їх у Популярне. Можно буде створювати власних ботів, API буде доступним кожному.
Що стало триггером до цих змін? Я бачу, що мене не вистачає на створення контенту та програмування. Або перше, або друге. Лонгріди в мене трапляються не дуже часто, а той контент який я здатен робити щодня – це репости з сайтів 9GAG, Reddit, Telegram. Коли заходжу на UJ і бачу старий контент – мотивація згасає. Я подумав, що подняти мотивацію можно коли контент буде регулярно поновлюватися. Новий контент можно напарсити. Може просто публікувати в стрічку Свіжі пости з 9GAG?
Свіжі. Стрічка постів, відсортована за датою (останні пости вгорі). Існує спеціально для того щоб залишалась можливість підняти пост з нульовим рейтингом.
Стрічка. Хочу повернутися до стрічки UJ, коли переход до посту був не обов’язковим. Всеж, бачу, що переход в пост додає додаткові незручності. Приберу незручності при перегляді відео. Переход у середену посту буде тільки задля читання гілки відповідей.
Підсумую
Для себе я виділив наступні пріорітети:
- Спростити редактор, надати йому стабільності і передбачуваності
- Сильно покращити мобільну версію
- Додати API та бота для парсінгу новин з інших сайтів
- Додати генерацію стрічки Google News та RSS
На що вплинуть зміни? Я очікую, якщо створення постів буде простішим – то й постів буде більше. Буде більше постів з картинками та відео, так як форма створення поста буде мати спеціальні кнопки. Відповіді теж будуть мати зображення та відео.
Це жарт? Останній мій пост був на майже 2,5к знаків, без форматування це нечитабельна каша. Таки пороблено і максимум, що світить це тг канали.
@sumni3bochennia Трошки поясню. Редактор нікуди не дінеться, просто він винесеться в окремий сервіс.
Логіка наступна: заходиш в створення посту, нажимаєш на кнопку Лонгрід – відкривається нова вкладка зі старим редактром (трішки зміненим, врахую твої побажання щодо меню). Ти можеш в ньому створити красивий пост з форматуванням. Нажати Зберегти. Автоматично вкладка закриється і ти повернешся до основного редактора в якому вже буде вставлено Лонгрід-пост як Вставка.
Переходимо до стрічки – бачимо твій пост, нажимаємо на вставку і тут же пост розкривається до лонгріда з форматованим текстом і картинками, як і раніше.
З моєї сторони простіше те що код розділений на декілька сайтів і все не валяється в одному місці, створюючи безлад.
@sumni3bochennia Сервіс Логнг-рідів буде схожий на Документи гугл, тобто на окрему сторінку де буде список Лонг-рідів. При переході з UJournal за спеціальним посиланням – ти автоматично логінешся в сервісі Лонгрідів і бачиш свої лонгріди і статистику по переглядам.
Ти можеш створити Лонгрід в сервісі лонгрідів і не публікувати його на UJ. Таку можливість я теж передбачаю.
План приблизно такий.
@sumni3bochennia Тобто UJ буде дуже простим сайтом, накшталт Твіттера. А всі медіа та великі тексти будуть винисено в окремі сервіси, які будуть безшовно відкриватися прямо на сайті.
@lemmy А підтримувати декілька сайтів точно простіше ніж один?
@sumni3bochennia Кодова база основного сайту стане значно меньшою. Кодова база другого сайту буде меньшою. Два простих сайта простіше утримувати, аніж один складний.
Тим паче можно буде простіше пояснити комусь як працює сайт Лонгрідів, аніж пояснити як працює Основний сайт в якому є і код коментарів і поряд код постів з форматуванням. Банально буде меньше головного болю.
Можливо хтось зможе почати комітити зміни в сервіс Лонгрідів, щоб можно було розділити роботу.
Код основного сайту поки що не хочеться опенсорити, тому що в мене нема впевненості що в коді нема дірок.
@lemmy Коли чекати ці зміни і що буде зі вже написаними постами?
@sumni3bochennia Поточні пости будуть сконвертовані в Лонгріди. Конетнт залишиться як є, з графікою. Функцілнально нічого не зміниться – можно буде відкрити і читати. Коментарі збережуться.
Ці зміни хочу запровадити поступово впродовж місяця.
Ідея для бота: Прогноз погоди.
В заданий час бот підключається до sinoptik.ua, отримує данні для конкретного міста. Створює пост з прогнозом погоди.
Ще треба продумати як зробити так щоб користувачі не бачили прогноз погоди для інших міст, а тільки для свого. Один з варіантів гео-фільтрування, тобто якимось чином помічати пост, щоб він був доступен тільки для конкретної географічної точки. Можливо буде добре мати гео-теги, які прив’язані до геоточки. Якщо пост помічений таким геотегом та користувач має схожі координати (вираховувати по провайдеру) – показувати пост.
Кидайте ідеї для бота. Бажано щоб на приміті у вас було джерело необмежених варіантів для цікавого контента.
Приклад:
Бот який кожен день буде створювати опитування. Алгоритм: бот підєднується до ChatGPT, постить промпт:
У відповідь отримує:
Бот парсить відповідь та створює опитування. Бот підключається по API до UJournal і створює пост з посиланням на опитування.
@lemmy тобто голосувалки таки будуть?
@himarstime Голосувалки будуть. Це теж окремий сайт для голосувалок буде створено.
Я хоч і погроміст за освітою, але шось саме веб мені взагалі не дається ніяк. Хочеться допомогти, але якось заглянув у код на гітхабі ще весною, злякавсі і подумав шо ну нафіг.
Але якшо треба буде якась допомога, може там якусь таску накодувати, то ти кажи, може якраз і сам шось підівчу і з сайтом поможу
@himarstime Є код на PHP, там все сильно спрощено порівняно з попередньою версією. Попередня була на реакті, доволі великий порог входу. Поточна – PHP, HTML, CSS, AlpineJS.
@himarstime Можеш спробувати додати Google News, я навіть десь вже пакет пригледів.
Та не переживай ти так, все буде ґуд. І я все ж наполягаю що для початку таки треба зайнятись потраплянням у рекомендації стрічки новин Гугл, бо без цього ніяк. Більшість новинних сайтів чи взагалі всього шо відбувається в світі особисто я беру звідти. Там в стрічці іноді навіть сайти з піратським кіном мені попадаються, тому думаю і цей сайт заслужив там бути
@himarstime Так це трохи розмиє пріорітети, але поставлю четвертим преорітетом.