Hi
I am a college student planning to develop a Tinder-like dating app.I have not developed any "production quality" applications before.What tech stack should I go with for back-end?
Based on development speed,less server cost,uptime etc.
I have some rough ideas.Please let me know your suggestions:<p>1.Python (Django) or golang
2.Python or Erlang for chat
3.Relational or NoSQL<p>Edit:I am not doing this project for grades.Thanks for the suggestions<p>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.<p>Thanks for all the suggestions
Perhaps the quickest way would be to reuse existing technology, especially one that already has an established user base. In particular, it should be possible to extend some Fediverse (ActivityPub) clients and servers to add a new type of message that represents introducing yourself to a prospective date.<p>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].<p>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).<p>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.<p>[0] <a href="https://www.w3.org/wiki/Activity_Streams_extensions" rel="nofollow">https://www.w3.org/wiki/Activity_Streams_extensions</a><p>[1] <a href="https://www.w3.org/TR/activitystreams-vocabulary/#connections" rel="nofollow">https://www.w3.org/TR/activitystreams-vocabulary/#connection...</a><p>[2] <a href="https://vocab.org/relationship/#wouldLikeToKnow" rel="nofollow">https://vocab.org/relationship/#wouldLikeToKnow</a><p>[3] <a href="https://docs.joinmastodon.org/spec/activitypub/#profile" rel="nofollow">https://docs.joinmastodon.org/spec/activitypub/#profile</a><p>[4] <a href="https://github.com/tootsuite/mastodon/issues/9529" rel="nofollow">https://github.com/tootsuite/mastodon/issues/9529</a>
If it's not for grades, then the choice of tech stack is pretty unimportant. The hard part of a dating app is getting people to use it. Getting the app to scale is not a technology problem. It is a sales problem.<p>The generic advice is use a technology that lets you talk to users right away.
Advice - if this is for a university project and you’re doing this for grades, use whatever you fancy. A good RDBMS (or even noSQL) will be just fine at any reasonable expectation of scale, unless this is for a distributed systems course.<p>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.<p>If you go that route, FastAPI is a good choice for a backend, and it has friendly docs.<p>Is this solo or in a team?
1. golang. OkCupid is C++ for performance reasons<p>2. JavaScript + WebSockets + Go/C server<p>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.<p><a href="https://stackshare.io/okcupid/okcupid" rel="nofollow">https://stackshare.io/okcupid/okcupid</a>
If I were you I wouldn't try to put more than one technology in production for the first time. I'd recommend TypeScript and Node.JS as it has a huge ecosystem, and you're probably going to have a web app anyways.