Друкарня від WE.UA

Телеграм бот. Нотатки. Стаді плани. Архітектура. Вебсокети. Част. 3

Вступ

Продовження розробки телеграм бота з попередніх частин. Там ми мінімально налаштовували середовище, а зараз детальніше про саму ідею.

Ідея

Цей телеграм-бот створений для агрегації, структурування та аналізу даних. Він дозволяє користувачам створювати та організовувати нотатки у вигляді тематичних "релмів" і отримувати аналітику щодо їхнього користування. Крім того, користувачі можуть створювати навчальні плани, розподіляючи час і теми для вивчення, і отримувати звіти про свій прогрес.

Архітектура

  • Notes CRUD

Через Telegram користувач може створювати, видаляти та переглядати створені нотатки. Щоб відредагувати якусь, він вибирає нотатку і йому генерується унікальна лінка на сторінку, де він може переглянути нотатку повністю та за потреби її відредагувати.

  • Web / WebSocket

При відкритті цієї сторінки, встановлюється WebSocket з’єднанням сервером, щоб будь-які зміни тексту були надіслані та збережені у Redis.

Після закриття WebSocket сесії, всі зміни по нотатці будуть збережені в основну базу до сутності.

Для чого Redis? Для відмовостійкості, розподіленості та для зменшення навантаження на основну БД — PostgreSQL (у випадку достатньої активності з боку юзерів, на початку звісно в цьому немає великої потреби. Це так, чисто щоб спробувати якісь дизайн-рішення)

  • PostgreSQL

Телеграм-користувачі, нотатки, інша інформація.

Трохи коду

Яким чином при відкритті вебсокет сесії ми розуміємо що це за юзер та нотатка?

  • MVC Controller

@GetMapping("/note/{uniqueNoteId}/edit")
public ModelAndView editNote(@PathVariable String uniqueNoteId, ModelAndView modelAndView) {
    Note note = noteRepository.getNoteByUniqueLinkId(uniqueNoteId).orElseThrow();
    modelAndView.addObject("note", note);
    modelAndView.setViewName("editNote");
    return modelAndView;
}

За допомогою Thymeleaf, ми повертаємо шаблон з нашим об’єктом Note.
Коли юзер дістає нотатку по ID, генерується URL посилання виду:

http://example.com/note/sdgf4yhrt/edit
  • editNote.html

let userId = /*[[${note.userId}]]*/ 'defaultId';
sock = new SockJS('/init?userId=' + encodeURIComponent(userId));

Я встановлюю WebSocket сесію по відповідному ендпоінту передаючи userId з отриманого об’єкта Note.

  • Зміни тексту нотатки

При будь-яких змінах, надсилаються дані про нотатку. Де ми це все обробляємо і зберігаємо у Redis.

document.getElementById('noteTextArea').addEventListener('input', function(event) {
    const message = {
        qualifier: 'UpdateNote',
        noteId: /*[[${note.id}]]*/ 'defaultNoteId',
        userIdentifier: /*[[${note.userId}]]*/ 'defaultUserId',
        correlationId: generateUUID(),
        noteText: event.target.value,
    };
    sendMessage(message);
});

Що далі?

Далі, розробка по визначеній роадмапі та покращення функціоналу і процесу CI/CD. У наступній частині я б хотів розкрити — встановлення Kubernetes і якісь мінімальні речі з оркестрацією наших контейнерів.

Статті про вітчизняний бізнес та цікавих людей:

  • Вітаємо з Різдвом Христовим!

    Друкарня та платформа WE.UA вітають всіх наших читачів та авторів зі світлим святом Різдва! Зичимо всім українцям довгожданого миру, міцного здоровʼя, злагоди, родинного затишку та втілення всього доброго і прекрасного, чого вам побажали колядники!

    Теми цього довгочиту:

    Різдво
  • Каблучки – прикраси, які варто купувати

    Ювелірні вироби – це не тільки спосіб витратити гроші, але і зробити вигідні інвестиції. Бо вартість ювелірних виробів з кожним роком тільки зростає. Тому купуючи стильні прикраси, ви вигідно вкладаєте кошти.

    Теми цього довгочиту:

    Як Вибрати Каблучку
  • П'ять помилок у виборі домашнього текстилю, які псують комфорт сну

    Навіть ідеальний матрац не компенсує дискомфорт, якщо текстиль підібрано неправильно. Постільна білизна безпосередньо впливає на терморегуляцію, стан шкіри та глибину сну. Більшість проблем виникає не через низьку якість виробів, а через вибір матеріалів та подальшу експлуатацію

    Теми цього довгочиту:

    Домашній Текстиль
  • Як знайти житло в Києві

    Переїжджаєте до Києва і шукаєте житло? Дізнайтеся, як орендувати чи купити квартиру, перевірити власника та знайти варіанти, про які зазвичай не говорять.

    Теми цього довгочиту:

    Агентство Нерухомості
  • Як заохотити дитину до читання?

    Як залучити до читання сучасну молодь - поради та факти. Користь читання для дітей - основні переваги. Розвиток дітей - це наше майбутнє.

    Теми цього довгочиту:

    Читання
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Oleksandr Klymenko
Oleksandr Klymenko@overpathz

Java Software Engineer

7.5KПрочитань
1Автори
95Читачі
На Друкарні з 19 квітня

Більше від автора

Це також може зацікавити:

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити: