Разработка примитивного мессенджера

Сергей6 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
11.02.2019

ТЗ 

Программа обмена сообщениями 

Программа работает как на персональном компьютере (windows, macos), так на мобильных устройствах под управлением iOS и андроид. 

Программа состоит из двух частей: клиент и сервер. 

Клиент: 

При первом входе появляется диалоговое окно ввода логина и пароля. Последующие входы авторизация происходит автоматически. Если введенный пароль не верен выдается соответствующее сообщение. 

Клиент разделен на две части: список контактов и область чата. 

- В списке контактов указываются только ники. Цветом подсвечивается строка контакта с которым на данный момент открыт диалог. В случае если контакты не умещаются на экран создается вертикальная прокрутка. 

- область чата. Вверху указывается ник пользователя, с которым открыт диалог. Под ником указывается статус пользователя (онлайн/либо дата последней активности в формате аа:бб xx:yy:zzzz). Входящие и исходящие сообщения отличаются по цвету (как в популярных мессенджерах). У каждого сообщения присутствует дата и время отправки в формате (аа:бб xx:yy:zzzz). В самом низу находится область ввода сообщения, в конце этой области находится галочка, при нажатии на которую сообщение отправляется (или же по нажатию клавиши Ввод на клавиатуре). 

При помощи клиента пользователи могут передать друг другу файлы. Значок передачи файла располагается рядом с кнопкой отправить сообщение. При клике на него открывается диалоговое окно выбора файла. После выбора файла программа автоматически начинает его отправку. После успешной отправки в окне чата появляется сообщение успешно отправлен файл_имя_файла, в случае не успешной отправки файла в окне чата появляется сообщение ошибка! имя_файл отправлен не был. 

Если пользователю отправлен файл, ему поступает сообщение Вам прислали файл имя_файла рядом с которым находится кнопка скачать. После нажатия которой появляется диалоговое окно выбора пути сохранения файла, в котором присутствует чекбокс запомнить этот путь, если он активен следующий раз программа автоматически прописывает ранее указанный путь, пользователю остается только нажать сохранить на диалоговом окне, если же чек бок не активен, при каждом сохранении файла в программе будет отсутствовать предполагаемый пусть сохранения файла. 

Отправленные сообщения имеют три статуса: отправлено (сообщение успешно отправлено с устройства и получено сервером), доставлено (сообщение успешно отправлено сервером получателю, о чем получен отклик устройства получателя), прочитано (пользователь, которому было отправлено сообщение открыл диалог с отправителем). 

Статус отправленного сообщения отправитель может узнать по количеству точек под сообщением. 1 – отправлено, 2 – получено, 3 – прочитано. 

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

Сервер 

Обмен данными пользователи осуществляют не на прямую, а через сервер. Сообщения и файлы изначально отправляются от отправителя на сервер, далее сервер отправляет полученные данные получателю. 

Программа имеет главную админку для входа на сервер. Авторизация каждый раз осуществляется через логин и пароль. Администратор создает учетные записи пользователей. Указывает для них ник и пароль, а так же выбирает из списка имеющихся контактов тех, с кем конкретный пользователь может общаться (в списке контактов пользователя будут присутствовать только те, кого выбрал администратор). 

Пароль и список контактов пользователя могут редактироваться администратором в любое время. 

На сервере для каждого созданного пользователя автоматически создается папка с наименование соответствующем нику пользователя, в которой в свою очередь создаются папки с названиями, соответствующими никам пользователей, с которыми общался пользователь или обменивался файлами, в эти папки автоматически сохраняются все диалоги пользователя. Сохранение происходит в текстовые файлы (txt), которые называются по нику собеседника пользователя. Так же в эти папки сохраняются файлы (принятые и отправленные), наименования файлов обозначаются как тип файла (отправлен либо получен)_время и дата отправки в формате аа:бб_xx:yy:zzzz_имя_файла