I’m a C++ game developer who uses Unreal Engine with 8~ years of experience. My goal is to learn web development, as I have a lot of interest in building tools similar to Notion and Miro. I understand it will be a ways off before I can do that, but I want to begin executing a plan so I can learn everything I need to know.
I’ve built some pretty advanced voxel mesh generation systems, extremely complicated inventory systems/UIs, and many other things in C++. I feel like my skills should translate somewhere, but I’m a bit unsure and slightly lost when it comes to understanding what I actually need to learn, and what projects to set for myself.
As for the plan, it’s a list of projects to help me learn each language/tool one by one. I was wondering if anyone could correct me in any mistakes I’ve made in this list, and possibly make suggestions for modifications and/or projects to add to my list to help me learn all I need to know to build tools like I mentioned above.
I think what I need help with the most is figuring out what tools I need to learn. Web dev from my perspective feels verrrrrry convoluted/saturated with tools. I understand there’s use cases for everything, but it’s difficult to even formulate a plan for what tools to learn to eventually be able to build my own advanced web apps.
I also want to host the projects (somewhere?) so that they’re actually websites, not just local files. I’ll probably just swap out each project wherever I’m hosting it as I progress through the list.
So here’s my current list, please feel welcome to roast it/me and tear it to pieces lol, I’ve surely missed a lot:
- Basic html page - very simple with headings, paragraphs, links, and lists.
- Languages/Tools: html (free hosting recommendations - github?)
- Basic html page with CSS styling - Style project 1 with fonts, colors, spacing, and a custom layout
- Languages/Tools: html, CSS
- Basic html page, CSS styling, using Sass - Take project 2 and implement Sass (learn how it compiles into regular CSS?) .
- Languages/Tools: html, CSS, Sass
- Interactive html page with JavaScript - Add JavaScript to make the page interactive, add buttons that change text, (maybe simple form validation?) .
- Languages/Tools: html, CSS, Sass, JavaScript
- Mobile-friendly page - Use a CSS flexbox to make the page mobile-friendly.
- Languages/Tools: html, CSS, Sass, JavaScript
- Form submission & storage with JavaScript - Make a simple contact form, store its data in a database.
- Languages/Tools: html, CSS, Sass, JavaScript , (database?)
- Form submission display - Take the most recent form submission and display it on the page, update it when there’s a new form submission .
- Languages/Tools: html, CSS, Sass, JavaScript (Unsure what I need if I want to store form submissions in a database?)
- Simplified Pokédex website - Make a simple version of a Pokédex, just for a few basic pieces of info about 5-10 Pokémon I decide to add using some kind of Pokédex page template, also with a page to provide info on typings.
- Languages/Tools: html, CSS, Sass, JavaScript
- To-do list React web app - the user can enter items onto a list, and check/uncheck the items, the items are persistent as they are saved to/retrieved from a database .
- Languages/Tools: html, CSS, Sass, JavaScript, React
- Account creation/login - the user can sign up for an account, then use their credentials to log in/out of the website, let the user set a few basic things about themselves like name/bio, then display that on their own profile page that is only accessible to them.
- Languages/Tools: I’m pretty lost at this point
- 2-factor auth - take project 10, and add a layer of account security that can be added/removed by the user.
- Languages/Tools: ^^^
- Payment processing - take project 11, add a stripe payment that grants access to something, maybe just another page that mimics a fake SaaS tool (as in, the functionality of it doesn’t matter that much), I might just add some buttons and custom text fields etc.
- Languages/Tools: ^^^
- Not a project, but maybe find some people who want to try to break project 12 to see where I might’ve gone wrong
- Again not a project, but maybe do some more learning about everything else I’ve learnt, I see a lot of people saying use TypeScript over JavaScript so I might learn that, and same thing for other languages/tools.
And for each project, share all of my code publicly to anyone who is able to review it for me - On that note, does anyone have recommendations on where I could do this? Discords, forums, subreddits, etc?
My guess is that from here, I might have a decent enough understanding to begin attempting the most simple tools?
And one final question: For the experienced web devs here, if you were to build a tool like Notion, where would you start, and what does your tech stack look like (and why)?