The project consists of a chatroom system / audio chatroom with breakdown by category and subcategories (2 levels only). There must be the ability to add, edit, remove categories chat (eg "Chinese cuisine", chat category divided by all those interested in Chinese cuisine, etc, etc).
The mechanism should include a user registration system with your username and passwords and personal data (plus fundamental insertion of nationalities and languages known).
Once logged in, the user selects the category that is of his interest. You will have the ability to search for a chat (similar to the chat-roulette mode) and will be able to select how much you want to talk to the casual person on chat.
The system will select the user to communicate with, fishing from all
connected users to that specific category, based on points of interest in common. (eg: I tried to connect to the Chinese category, I know Italian food, I would like to talk to a person who has an interest in a cultural exchange about 2 kitchens). In the rare case there is no matching of requests, the system will search for the closest thing there may be and, of course, people who are not already engaged. Otherwise it will return a notice that there are no people currently engaged with that topic.
The called user may choose to express his willingness to talk to the
Caller chat / audio chat (eg: I only reply in chat, I also speak on audio chat, and so on). The call will last according to the time set by the user. To avoid the issue of speaking only about the argument of a user rather than of another, there will be an audible / visual icon marking the passage from one topic to another. (For instance, 10 minutes of talk time, 5 are reserved to the topic that interests the caller and the remaining 5 for the topic that interests the person on the receiving end of the chat). Once the call ends, both users must give a vote (from 0 to 10) on the quality of the conversation. This would in turn affect the “expertise” score of the users and assign a long-term classification on the degree of expertise they possess in the respective field (for example, advanced knowledge of Italian cuisine, basic knowledge of Chinese cuisine, etc). The rating will be made visible in the call notification received by the person standing on the other side of the chat.
At the end of the prescribed time the caller can choose whether to extend the call or not. If he chooses to prolong it, the called party can accept or reject. Should they refuse, the call would be permanently terminated. At the end of the call, it should be possible to make another call immediately after but there will have to be a waiting time of at least 15 minutes.
The system will run on the LAMP platform and thus sensitive data of user registrations must be encrypted in the database (preferable encryption md5 or sha). All actions must be logged in on a MySQL database.