linksplatform / linksplatform/InfiniteDepthTreeWebUIPrototype
Реализовать древовидный анонимный P2P чат на react, синхронизирующийся в режиме реального времени по WebRTC, хранящий данные в localStorage
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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