Hey everyone!<p>I’d like to show you SOCCA, the first project I’m releasing. It is a text-only chat application, centered around philosophical discussions. It aspires to be a platform where people from all backgrounds and horizons can meet up for a few minutes to learn new things, share ideas and challenge their beliefs (although that latter part might be the most idealistic part of the pitch).<p>It is quite straightforward:<p>1. You either go with the Discussion of the Day, i.e. a pre-selected question to discuss, or choose among 50+ topics (an account is required for the latter)<p>2. You are matched with a random person with whom you can exchange around the question discussed, and share your experience<p>3. You can also vote for the questions that you’d like to discuss next. A new question is selected every few days, based on the votes received. All the questions and their description are also released under CC0 (in the public domain).<p>On the technical side:<p>- The front end is all made with React. I initially started the project without any JS framework in 2019, but in the meantime I started to learn React and decided to remake what I had thus far with it, to get practice.<p>- On the backend, it is a Node application hosted on a DO droplet. Socket.IO is used to provide the real-time discussions, although I’d like to refactor it at some point using ws, which is allegedly faster than Socket.IO. I’m using MongoDB to store the relevant information but I’m leveraging Redis as much as I can for the data that is constantly changing, and to get sticky sessions.<p>At the moment there is no “Connect with” / “Add as a Friend” feature. I understand that people might want to keep chatting with the person when they got a good match and enjoyed the discussion, but I wanted to try with the “randomised only” approach first. That being said, I wrote the backend with the “Connect with” feature in mind, so that can be quickly deployed if there’s any interest.<p>I’m looking forward to hearing what you think, and if you have any questions and suggestions, I’d be happy to answer.