mirror of
https://github.com/StepanovPlaton/Chat.git
synced 2026-04-03 20:30:40 +04:00
Update readme
This commit is contained in:
@@ -1,10 +1,12 @@
|
|||||||
# Chat
|
# Chat
|
||||||
> Chat - это анонимный асинхронный мессенджер
|
> **Chat** - это анонимный асинхронный мессенджер
|
||||||
|
|
||||||
|
**Chat** написан *за 10 часов* как тестовое задание перед одним из моих собеседований. Я выполнял [это техническое задание](./Техническое%20задание.md)
|
||||||
|
|
||||||
## Стек
|
## Стек
|
||||||
- Frontend:
|
- Frontend:
|
||||||
- [TypeScript](https://www.typescriptlang.org)
|
- [TypeScript](https://www.typescriptlang.org)
|
||||||
- [React 19](https://react.dev)
|
- [React](https://react.dev) 19
|
||||||
- [Next.js](https://nextjs.org) 15 (App Router)
|
- [Next.js](https://nextjs.org) 15 (App Router)
|
||||||
- [Tailwind CSS](https://tailwindcss.com/)
|
- [Tailwind CSS](https://tailwindcss.com/)
|
||||||
- [Yup](https://github.com/jquense/yup)
|
- [Yup](https://github.com/jquense/yup)
|
||||||
|
|||||||
23
Техническое задание.md
Normal file
23
Техническое задание.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# NodeJS Мессенджер
|
||||||
|
|
||||||
|
## Основные требования к логике работы приложения:
|
||||||
|
1. Реализовать при помощи *любой* БД хранение последних 20 сообщений, которые были отправлены пользователями сайта
|
||||||
|
> Реализовывать регистрацию или какую бы то ни было идентификацию пользователя не надо
|
||||||
|
2. Сообщения должны приходить по WebSocket всем активным пользователям сайта в режиме live в виде "дельты"
|
||||||
|
> Как только произошел POST запрос, это же сообщение рассылается всем активным пользователям
|
||||||
|
3. Отправку сообщения отдельным POST запросом
|
||||||
|
> Других REST запросов быть на сайте не должно
|
||||||
|
4. Как только развернулся клиент, он должен установить WebSocket соединение с backend-ом и запросить snapshot всех актуальных сообщений на данный момент и впоследствии их редактировать с каждой новой "дельтой"
|
||||||
|
|
||||||
|
## Требования к оформлению:
|
||||||
|
1. Использовать **React** + *любые другие библиотеки*
|
||||||
|
2. *Дизайн может быть простым* и даже минималистичным, но *с логичным расположением* кнопок и появлением сообщений
|
||||||
|
3. Любыми анимациями или улучшенным визуалом можно пренебречь, но будет плюсом, если такое будет реализованно
|
||||||
|
|
||||||
|
|
||||||
|
## На что будет обращено внимание:
|
||||||
|
- ***Реализация REST/WS части***
|
||||||
|
- Отказоустойчивость ws соединения
|
||||||
|
> То есть сообщения не должны теряться. Не должно быть такого, чтоб была необходимость обновлять сайт, чтоб увидеть новые сообщения
|
||||||
|
- Добавление/удаление сообщений на бэке должно быть выполнено за O(1) по времени
|
||||||
|
- Вещание должно быть выполнено за O(N) N - кол-во активных слушателей
|
||||||
Reference in New Issue
Block a user