linksplatform / linksplatform/InfiniteDepthTreeWebUIPrototype

Реализовать древовидный анонимный P2P чат на react, синхронизирующийся в режиме реального времени по WebRTC, хранящий данные в localStorage

Open
#14 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
HTML
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

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

Механизм работы чата:
* Изначально, если все клиенты подключились к странице с чатом в первый раз, там всего лишь одно сообщение - "начало".
* Пользователь выбирает сообщение, оно помечается оранжевым цветом.
* Далее он начинает вводить сообщение (если при этом текстовое поле не в фокусе, оно автоматически фокусируется при нажатии любой из буквы/цифры без CTRL и ALT).
* После того как ввод сообщения окончен, пользователь нажимает Enter и сообщение тут же появляется в качестве вложенного в то сообщение, которое было выделено в самом конце находящихся там сообщений.
* Новое сообщение тут же выделяется после добавление и страница осуществляет перемещение к нему.
* При этом уведомление об изменениях отправляется всем клиентам подключенным по WebRTC.

Хранение данных:
* У сообщений в качестве идентификаторов используется время их создания, чтобы можно было определять их порядок относительно друг друга.
* Сообщения хранятся в виде пар значений _время создания сообщения родителя_ - _JSON объект, содержащий текст сообщения и массив временных меток сообщений-детей_.
* Изначально удаление и обновление сообщений не предусмотрено, только добавление.

Реализацию этого чата желательно делать после того как прототип веб-интерфейса будет превращён в соответствующие React-пакеты (https://github.com/linksplatform/InfiniteDepthTreeWebUIPrototype/issues/13).
Реализация должна размещаться в отдельном для этого репозитории, и возможно быть доступна в виде React пакета.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the referenced prototype visualization and issue #13, since this work is intended to follow the React package conversion. Then scope the separate repository or React package around the described tree chat, WebRTC synchronization, localStorage persistence, input behavior, and message insertion flow; it is done when those requirements work together.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, react
Domain
distributed-systems, frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.