Many people who want to build a side project want to build a website that does something, or an “app” that does something (and could just be a website that can be opened on a smartphone).
So I want to add recommendations to save some searching:
React. You can learn react from their official tutorial, or from an online course. Don’t forget to also learn any prerequisites they mention (but you don’t need to invent your own prerequisites)
If you want a React competitor, like Vue, that’s also ok (assuming you’re more excited about it).
Choices I don’t think are legit: JQuery, vanilla javascript.
I can elaborate.
(If someone sent you to “learn the basics” then I probably disagree with them. Yes it has value, but it’s not the most effective path to a first job with mentorship nor to getting far in 5 years. There are other times to learn these things which are not “before your first job”)
For graphics (making your website nice)
If you don’t care about graphics, you can skip all that (including css)
If you don’t want to put effort into graphics but you want your website to look nice anyway, you can use Material UI or Bootstrap. They have ready components like a pretty button or a pretty checkbox, you just import them and only do minimal customization like “hey checkbox, you’re disabled by default”.
If you think making a pretty website is really cool and is obviously the exciting thing to do: you can learn css, and perhaps Tailwind. This isn’t a path I took myself and I don’t know it well. Just remember—it’s a higher priority to get a first project done even if bad and ugly. But as part of “looking for things that excite you to learn more”, graphics might be one of them
Deploying (having a url that you can send to your friends, or put on your CV)
There are many fun ways to deploy websites, including React, I’m specifically recommending Firebase because you might want to use it to solve other problems too (which I might write about).
Backend
If you mainly wanted to make a website-that-does-something, I’d start with that before getting into backend. Once you reach this point on a real project, check if you actually want to continue here. The main important thing is that you work on something that excites you, so you have my official permission to leave your project “not perfect”, without a backend (even if it needs one), if you think that part will be less fun.
Main things a backend will give you (written here so you can check if this seems exciting or meh)
User login
Communication between users (for example if it’s anything like a chat)
Saving information that will still exist if you open the website in a new browser (for example, if you have a TODO list, you probably want to see the list both in your phone and in your computer)
If you want a working backend with minimal effort, because actually the React part was the fun thing
Firebase (Firestore) :
This gives you, sort of, an autogenerated backend, if only you describe the structure of your database. I’d mainly recommend this if you’re not interested in writing a backend but you still want things to work as if you built an amazing backend.
The main disadvantage is it will be different from what many databases look like.
You could skip the “subscribe for changes” feature and only use the “read” feature and it will be a bit more realistic, but I don’t actually recommend that.
If you want to write backend in a way that will push you towards best practices, using a technology that is very popular (and specifically documented well for beginners)
Django
A big disadvantage is you’d need to learn some pyhton, and you might be reading this because you already built a fun React project and you want to get it done without learning lots of new tech
DB:
Postgres is the default normal DB for most use cases. SQLite might be easier for local development (on your laptop), and is missing some features that you’ll almost surely not notice, so please don’t care about them until a concrete problem comes up.
Things that automatically override this advice:
If you’re picking technologies for your startup or something then remember this wasn’t written for you.
If you have a senior developer who will mentor you if you work on some different technology that they know well, then probably go with them.
Tech stack recommendations:
Many people who want to build a side project want to build a website that does something, or an “app” that does something (and could just be a website that can be opened on a smartphone).
So I want to add recommendations to save some searching:
React. You can learn react from their official tutorial, or from an online course. Don’t forget to also learn any prerequisites they mention (but you don’t need to invent your own prerequisites)
If you want a React competitor, like Vue, that’s also ok (assuming you’re more excited about it).
Choices I don’t think are legit: JQuery, vanilla javascript.
I can elaborate.
(If someone sent you to “learn the basics” then I probably disagree with them. Yes it has value, but it’s not the most effective path to a first job with mentorship nor to getting far in 5 years. There are other times to learn these things which are not “before your first job”)
For graphics (making your website nice)
If you don’t care about graphics, you can skip all that (including css)
If you don’t want to put effort into graphics but you want your website to look nice anyway, you can use Material UI or Bootstrap. They have ready components like a pretty button or a pretty checkbox, you just import them and only do minimal customization like “hey checkbox, you’re disabled by default”.
If you think making a pretty website is really cool and is obviously the exciting thing to do: you can learn css, and perhaps Tailwind. This isn’t a path I took myself and I don’t know it well. Just remember—it’s a higher priority to get a first project done even if bad and ugly. But as part of “looking for things that excite you to learn more”, graphics might be one of them
Deploying (having a url that you can send to your friends, or put on your CV)
Firebase Hosting
There are many fun ways to deploy websites, including React, I’m specifically recommending Firebase because you might want to use it to solve other problems too (which I might write about).
Backend
If you mainly wanted to make a website-that-does-something, I’d start with that before getting into backend. Once you reach this point on a real project, check if you actually want to continue here. The main important thing is that you work on something that excites you, so you have my official permission to leave your project “not perfect”, without a backend (even if it needs one), if you think that part will be less fun.
Main things a backend will give you (written here so you can check if this seems exciting or meh)
User login
Communication between users (for example if it’s anything like a chat)
Saving information that will still exist if you open the website in a new browser (for example, if you have a TODO list, you probably want to see the list both in your phone and in your computer)
((I might continue in a sub-comment))
Backend recommendations:
I’m much less confident about this.
If you want a working backend with minimal effort, because actually the React part was the fun thing
Firebase (Firestore) :
This gives you, sort of, an autogenerated backend, if only you describe the structure of your database. I’d mainly recommend this if you’re not interested in writing a backend but you still want things to work as if you built an amazing backend.
The main disadvantage is it will be different from what many databases look like.
You could skip the “subscribe for changes” feature and only use the “read” feature and it will be a bit more realistic, but I don’t actually recommend that.
If you want to write backend in a way that will push you towards best practices, using a technology that is very popular (and specifically documented well for beginners)
Django
A big disadvantage is you’d need to learn some pyhton, and you might be reading this because you already built a fun React project and you want to get it done without learning lots of new tech
DB:
Postgres is the default normal DB for most use cases. SQLite might be easier for local development (on your laptop), and is missing some features that you’ll almost surely not notice, so please don’t care about them until a concrete problem comes up.
Things that automatically override this advice:
If you’re picking technologies for your startup or something then remember this wasn’t written for you.
If you have a senior developer who will mentor you if you work on some different technology that they know well, then probably go with them.