Understand web developing languages in a hierarchical way
The Basics (1990s - 2000s) : webpages were static (reload for new data) and simple (few hundred lines of code).
HTML (structure)
purpose: Tell the browser what is on the page.
CSS (style)
purpose: Control how it looks (colors, layout)
JavaScript[JS] (interaction)
purpose: Add behavior (buttons, forms, animations)
Issues
Pages became bigger and interactive (e.g. Facebook, Gmail).
Writing long JS code was messy: spaghetti code, hard to maintain.
Reusing UI parts (buttons, forms) was difficult.
Developers wanted faster updates without page reloads.
Frameworks & Libraries (2010s)
Frontend: React, Angular, Vue
purpose: Need to reuse components (not rewrite same code).
Manage state (data that changes with user actions).
Build Single Page Applications [SPA] -> pages update instantly without reloading.
Example: React lets you write a Button component once and reuse it everywhere.
Backend: Node.js
JavaScript originally only worked inside browsers.
Node.js allows running JS on servers -> so you can use one language (JS) for both frontend & backend.
Make it easier to handle real-time apps (chat, games).
Modern Enhancements
Next.js
purpose: React is great, but setting up routing, SEO, and performance optimization is hard.
Next.js adds server-side rendering (SSR) and static site generation (SSG)-> fast, SEO-friendly,
It also adds API routes -> so frontend and backend can live in one project.
TypeScript
purpose: JavaScript is dynamic -> easy to make bugs.
TypeScript adds static typing -> safer, better for large projects.