DEV Community

Cover image for If you would create a small social network in 2020 what stack it would have?
Timur Iskakov
Timur Iskakov

Posted on • Updated on

If you would create a small social network in 2020 what stack it would have?

Hey everyone 👋

Let me ask you a question. Imagine that you are a full-stack developer and you are going to create a social network for relatively small group of people to sharing pictures and chat (I know how is sounds like, but it's not an Instagram or something like that 🙂). You already have a web-design (PC and mobile versions) with good specification and a some front-end (just HTML/CSS with basic JS functionality like tabs, modals and so on).

What stack do you prefer for backend if you needed to build a web-version and a mobile app?

My choose is MongoDB for database to store a posts and comments. Laravel for sloving the main backend development tasks. Vue.js - for the frontend. For mobile app I prefer to try Dart and Flutter for building an app. It's cool that you can build iOS and Android app either using just one language.

What would be your choice?

Top comments (18)

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt • Edited

I think it's more MVA and scaling, not just some small and throwaway things.

Maybe, Neo4J, Kotlin on the backend. But, I don't think it is hard to use MongoDB and migrate later.

Frontend does not matter that much, but for me, maybe Vue, so that I can launch my product fast.

Collapse
 
champernet profile image
Timur Iskakov

Thank you for answer.
I agree that Vue.js can reduce time for launch.

Collapse
 
masterroshan profile image
TJ Johnson

Expo for a unified code base of native and web on the front end. I've read that NoSQL databases are not good for social apps, the many-to-many relationships between users will lead to writing a lot of logic around joining data. I'm personally more comfortable in Django/Postgres, but I think Laravel/MySQL is fine.

Collapse
 
champernet profile image
Timur Iskakov

Yes, there is an opinion that MongoDB not a good choice for store that kind of data. PostgreSQL is the second tool I have been thinking about.
Thank you.

Collapse
 
olafsulich profile image
Olaf Sulich

For me it would be probably Express/Nest, PostgreSQL, TypeScript, React and GraphQL

Collapse
 
champernet profile image
Timur Iskakov

Cool stack.
It was hard decision for me between React and Vue.js. If I might not use Flutter, I'll rather prefer React and React Native for building an app.

I like realy GraphQL. Maybe it's a best choice for soical network, but I need to improve my knowledge of if before I can use it in production.

Maybe you know any good courses of it?
Thank you!

Collapse
 
olafsulich profile image
Olaf Sulich

Vue.js is also good choice :) Honestly, documentation - it's well written. When you start reading it, just implement some features in your app, play with it, imo this is the best way to learn new technologies.

Thread Thread
 
champernet profile image
Timur Iskakov

Ok. Thanks for the advice.

Collapse
 
seanmclem profile image
Seanmclem

Prisma?

Collapse
 
michi profile image
Michael Z • Edited

Solid stack, just wondering why you chose mongo over a relational database? You will need a bunch of *relation*ships for such an app.

Collapse
 
champernet profile image
Timur Iskakov

Just because I haven't a lot experience of using PostgreSQL in my projects. But I can try it. Thanks.

Collapse
 
michi profile image
Michael Z

It will probably make things easier as it has excellent first-party support in Laravel.

Collapse
 
rikoroku profile image
rikoroku • Edited

I think the better solution in this case is using Dart/Flutter for the mobile app and Angular/Firestore for Front-end/Backend.

Collapse
 
champernet profile image
Timur Iskakov

I haven't seen a working social netwotk built using only Dart yet. But I'll try to build that one.
Angular is a good framework, but I have more experience in Vue.js.

What's about Firestore? Never worked with that technology 🤔

Thank you.

Collapse
 
patarapolw profile image
Pacharapol Withayasakpunt

Firestore might be fast, real time, and encourage indexing, but not as fully featured as MongoDB.

Also, no joins. They have to be done manually.

Thread Thread
 
champernet profile image
Timur Iskakov

MongoDB can give an app a good speed, I agree. So that is why I choose it.
No JOINs? It can be a lot of work doing them manually 🤔
Thanks.

Collapse
 
bajwolf profile image
Bajro

I will use golang with vuejs for mobile app probably flutter

Collapse
 
champernet profile image
Timur Iskakov

Golang is a cool language. I've heard a lot good things about it. But it's unfortunately not the one of my skills.

Thank you.