Join a room as a helper or a help seeker and share your specific issues
Live video chat system using WebRTC and Socket.IO coupled with a text chat. Tested on mobile and desktop both.
Realtime anonymous chat system
Reporting suggestive nudity and content moderation via API
Prompt system messages for user friendly feedback
Responsive real-time video and chat UI
Responsive landing page! Ready for the mobile experience.
Since the start of coronavirus, many people have been facing greater mental stress. This could be due to the untimely loss of a loved one to corona, being away from home, being unable to meet friends and family - the people that keep you positive or because of some other deep issues. There are issues that at times you are unable to share with your closest friends or family members. Therefore, we wanted to create an application that did not only allow us to connect to the people we regularly talk to but also to others whom we have never met. It helps create a safe space where people can talk to each other, discuss their problems, and look for advice. It's like a free therapy session!
What it does
Save our Soul is an anonymous Video and Chat Web Application developed to help such people. It allows users to anonymously connect with other users, tell them their stories, easier their burden by sharing with them. The application allows users to chat with other users or share their stories via video call. It features advanced reporting and is primarily based on linking such helpers and help seekers together regarding life issues in these tough times of quarantine.
- How do we connect people in unique ways to prevent loneliness when isolation is their only option?
- How do we help people engage with each other in safe ways when social distancing is not an option?
The application tries to implement the following goals:
The application has been developed in such a way to protect the anonymity of the users. It does not show the IP addresses of the users, neither does the app keep a record of the messages being communicated between two users. Once the user clicks on next, the messages are removed from everywhere.
Ability to Help others
The application lets the users choose, the reason they are using the platform. It allows users to either seek help or help those in need. The application provides specific categories that the users can choose. While paring the users, the server tries to match someone who is there to help with someone who wants to seek help first. If no such users are available, the server tries to match people seeking help within the same category first, before moving on to people in other categories.
These categories are kept anonymous and the stranger can not know the reason why a user is there.
One key challenge that most anonymous video chats face is that the users tend to use the platform to conduct sexual activities anonymously. We strongly discourage such acts on our platform and have tried to keep this platform a safe space for users of all ages. Therefore, we implemented a nudity detection feature within our app that uses remote API to detect whether the stream contains nudity. The user has to report the stranger, and if the stream coming from a stranger contains nudity, the user is blocked.
To ensure the application is a safe space for such vulnerable users, the application has been designed with such a UI that calms the users. Bright colors, ads, animation, and any other feature that may irritate such users has been disabled. The application makes use of a grayscale model for its chat page, which helps calm the user. The landing page is dull and welcoming.
Whereas the members of the community will be trying to provide as much help to each other as they can, there are steps taken by the platform that ensures that the person visiting the page starts feeling better. Therefore, apart from the design and other features, we are sending out motivational messages to the users. These are displayed on the screen and keep changing every few minutes. These include messages like - 'This quarantine will end' and 'We are in this together' to try to provide a little reassurance to the person. These messages provide an additional feature, aiding to improving the mental health of the user.
How I built it
Using WebRTC for realtime video conferencing and Socket.IO to handle peer-to-peer intercommunication as well as with the NodeJS HTTP server with socket listeners which mediates the waiting lists and block lists and the priority algorithmic matching of participants based on their preference (to seek help or to help) and problem category. ReactJS with HTML and CSS was used for the front-end of the application, reactively generates random positive messages and fetches the chat in realtime as well as online users. Deployed on Heroku.
Challenges we ran into
- Connecting the video between two clients was a tedious task. There were more than a few errors that resulted. These were sorted out.
- Audio issues with streams and video elements
- Intertwined socket pairing functions for WebRTC had to be traced over and over
- Deployment complications including stream disconnection
Accomplishments that I'm proud of
The application turned out to better than the expectations. We randomly asked the opinions of our family members and the responses were all positive. The Interface was better than our initial thought and we were able to add further functionalities.
What we learned
The most important outcome was the ability to work in teams. The application had its challenges and without the efforts of the complete team, this application would not have been developed. The use of RTC for video streams helped add an additional skill. This is an extremely important component that is used in many websites and applications and therefore, developing video streaming from scratch, increased our knowledge of such apps.
What's next for Save our Soul
The application is ready for deployment. The relevant licenses and agreements need to be achieved and the application will be ready to be deployed.
- We can create a mobile application, that provides ease of access and better availability.
- Better responsiveness
- Reporting based on chat text using a trained model