Have been on the coding journey a few years now. Understand the basics of the big 3 front end languages. As far as back end I am overwhelmed with all options and routes you can go down.
I am building a social networking web app. I see that mongo is a great go to but is it the best choice? Do I opt for server or “server less” options like AWS?
I have been in tutorial hell and have learned a bit but just need to mash everything together. I am also looking for proper tutorials that can show me good examples of the following
- Image upload and cropping with uploads of photos into a database.
- Implementing forgot email and forgot
- Emails to users when they receive messages.
If there is anyone that can guide me to some resources that can increase my knowledge that would be much appreciated.
I have been in tutorial hell and have learned a bit but just need to mash everything together.
Start mashing, and learn as you go. Don’t try to learn everything before starting, as you will end up never starting.
So for your project requirements I’d give you this advice.
Mongo or any NOSQL database should be just as good as any SQL based database. Mongo is more flexible, and is probably good if know you will end up “evolving” how your data is saving, but it doesn’t scale as well as a well designed SQL database. Don’t fret over which is the “right” choice for this use-case, there isn’t one. You should be ok with any database, i’d say fine one that is cheapest to run (mlabs has a free tier to get you started with Mongo)
How you architect your back-end shouldn’t matter at this point in time. You could go learn how to setup and manage a serverless backend, or go more classic with a monolith backend. Don’t fret over this to much, its more important to start and learn as you go than trying to pick the “best” architecture
Finding specific tutorials for your specific problems probably wont work. You should look into things more generically, for example:
- how to crop an image using language X
- how to upload photos to a database (I’d use a blob store)
- how to “get” data from your database.
I’d also not worry about authentication and security, rather use an external API login. This way you don’t have to worry about user information leaking, and its more reliable. (login with Google, Facebook, Github, etc)
Use an API to send emails.
I’d focus on what you want to learn with the project and just try to get by with all the other features. If you care more about building the “social networking” part of the app, then don’t spend 2 weeks determining what language, or db, or email API, just pick something and go with it.