1.Python (Django) or golang 2.Python or Erlang for chat 3.Relational or NoSQL
Edit:I am not doing this project for grades.Thanks for the suggestions
Edit2:I want this project to be "well-engineered".I want this to perform well,scale well,etc.I want to do it "right".I am going to spend about an year on this project ( I could take less.But the main purpose is to learn as much as I could and to work on the best tech stack out there for this type of project).So I want the stack to be worth learning.
Thanks for all the suggestions
ActivityPub is built on ActivityStreams[0], which already has a way of representing relationships[1] so it could be extended with the relation "Would Like To Know"[2].
You could take something like Mastodon and add a property to the profile data[3] so that users can state whether they are willing to receive such introductions from other users. (Users should perhaps also be able to specify a maximum number of such introductions that a user attempting to contact them can send per month, to stop people from sending out introductions to everyone that's available).
Unfortunately there isn't currently a universal search feature in Mastodon[4], but it might be possible to add that as a hack by caching all opted-in profiles on each instance.
[0] https://www.w3.org/wiki/Activity_Streams_extensions
[1] https://www.w3.org/TR/activitystreams-vocabulary/#connection...
[2] https://vocab.org/relationship/#wouldLikeToKnow
The generic advice is use a technology that lets you talk to users right away.
I would say you’ll have a slicker UI if you’re able to separate the front end and backend and use modern tech like react or Vue.
If you go that route, FastAPI is a good choice for a backend, and it has friendly docs.
Is this solo or in a team?
2. JavaScript + WebSockets + Go/C server
3. Relational. You'll need those unique key integer indices. Also, PostgreSql can do high-dimensional similarity matching, which you'll need for matching profiles.