There are 2 areas in this project: User Management and Audio Chat.
We have an existing set of users that are always logged on. Group and one to one audio chat will be between users who already are in regular chat and want to switch to audio chat. If user is not already in chat database ( you need to detect it), user need to register. The page will pass all existing user information to API except for the password: there will be password text box where user need to enter password.. You need to pass all error messages from API if the registration was not successful. After registration the user will join the conversation.
The registration above is for existing users of our website. For new users who is going to register at our website we want to simultaneously register them for audio chat database. On registration page will will use AJAX call and pass all user information to the API. You need to validate that user is registered in both places.
When we have 1 to 1 or group text chat we always have information on participants in browser session. You will use this information to initiate audio chat session. You will need to add additional button with icon of headset to existing chat page. The button will have 4 states: disabled, off - grey, on-green, and ringing - alternating between them every 1 second . If one of the chat participants clicks the button, all others will receive push notification and ringing audible/visible signal. The button for the caller becomes green and for all others it starts alternating between green and grey. If user accepts call and clicks the button it becomes green. If user doesn't accept the call, the ringing stops after 1 min. To disconnect from call user need to click button again and it becomes grey. There will be additional button with crossed microphone (grey - off, green -on) for mute.
Our existing chat has restrictions who can initiate conversation to whom. There is a hierarchy with 3 levels of users: top level (grandfather) can initiate conversation with everybody, middle level can initiate conversation with his parent, siblings, and his children, and lower level can only initiate conversation with parent. The page will provide you that information and you need to disable calling button when appropriate. Also, the grandchild should never be able to start conversation, so the button is disabled by default. Our chat is written in C# - it is a DNN module. You will need to make small changes to chat pages to read values and add buttons.
You need to make sure all API errors as passed to client side, so we can take care of them.
Proposed milestones for project:
1. User Management. Register new user or create new user during website signup process.
2. One to one chat.
3. Group chat.
There is a potential for additional projects on mobile applications later.