1. Why Web Technologies Matter

The web is the largest software platform ever created. Over five billion people use it every day for everything from reading news and sending emails to running entire businesses. Behind every website, web app, and API is a stack of carefully chosen technologies — and as a CS/IT student in India, understanding this stack is one of the highest-leverage skills you can build. Learn with LSGP's Web Technologies curriculum is designed around a single conviction: you should understand not just how to use a tool but why it exists and what problem it solves.

The Scale of the Web

Consider a few numbers: Google indexes over 100 billion web pages. Netflix streams to 238 million subscribers simultaneously using web protocols. The Indian government's UMANG app serves 2,000+ government services over HTTP APIs. WhatsApp's web client — a single-page React application — handles over 100 billion messages daily. Every single one of these systems is built on the technologies you will study in this guide.

Web development is also the most accessible form of software development: you need only a browser and a text editor to start. No SDK downloads, no hardware requirements, no compilation step for your first HTML file. This low barrier to entry combined with enormous career demand makes web technologies one of the best investments a CS/IT student can make in their skill set.

Full-Stack vs Specialised Roles

The web industry generally divides engineering roles into frontend (what the user sees and interacts with), backend (servers, databases, business logic), and full-stack (both). Infrastructure and DevOps engineers manage the systems that deploy and run web applications at scale. As a student, Learn with LSGP recommends starting with a solid foundation in all three layers before specialising — this breadth makes you a far more effective engineer and gives you better context for system design discussions in interviews.

Web Technologies in Indian Placements

In campus drives and off-campus recruitment, web development skills show up in two ways: technical interviews that test your knowledge of how things work (HTTP, browsers, REST APIs, JavaScript event loop), and practical assessments where you build a small feature or fix a bug in a codebase. Companies like Razorpay, Atlassian, ShareChat, Meesho, Groww, and Swiggy put significant weight on web fundamentals. Even product-focused companies like Google and Microsoft have frontend, backend, and full-stack SDE roles where web tech is the primary focus.

Learn with LSGP's Web Technologies section is your structured path from "I know what a website is" to "I can build, optimise, secure, and deploy a full-stack web application."

💡 Learn with LSGP Tip Build something real as you read this guide. A personal portfolio, a to-do app, a weather dashboard — anything that forces you to touch HTML, CSS, JavaScript, a backend, and a database together. Theory without practice in web development is especially useless because the feedback loop is immediate: you save a file, refresh the browser, and instantly see whether your idea worked.

2. How the Web Works

Before writing a single line of HTML, every web developer should understand the journey a request takes from a user's browser to a server and back. This journey involves multiple layers of networking, addressing, and protocol translation that work together seamlessly — usually in under 200 milliseconds for a well-optimised site.

Clients and Servers

The web is built on the client-server model. A client (typically a browser like Chrome or Firefox) initiates requests for resources. A server (a computer running software like Nginx or Apache) responds with those resources — HTML files, images, JSON data, and so on. The server waits; the client speaks first. This asymmetry is fundamental to how the web is architected.

In practice, a "server" for a modern web application is often many servers — a CDN edge node delivers static assets, an application server runs business logic, a database server stores persistent data, a cache server stores frequently accessed data in memory, and a message queue handles background jobs. Understanding this distributed architecture is the foundation of system design.

DNS — Turning Names into Addresses

Every device on the internet has an IP address — a numerical label like 142.250.182.78. But humans use domain names like learnwithlsgp.in. The Domain Name System (DNS) is the distributed directory that translates domain names to IP addresses. When you type a URL in your browser:

  1. The browser checks its own DNS cache. If found, done.
  2. If not, it asks the operating system's DNS resolver.
  3. The OS resolver asks the configured DNS server (usually your ISP's or Google's 8.8.8.8).
  4. If that DNS server doesn't know, it recursively queries root name servers → TLD name servers (.in, .com) → authoritative name servers for the specific domain.
  5. The IP address is returned and cached at each level with a TTL (time-to-live).

This entire process typically takes 1–100ms and happens before a single byte of the actual web page is transferred. Slow DNS resolution is a real performance bottleneck for some users — which is why DNS prefetching and CDN name servers close to users matter.

TCP/IP — Reliable Data Delivery

Once the browser has the server's IP address, it establishes a connection using TCP (Transmission Control Protocol). TCP ensures that data arrives complete and in order, even though the underlying internet may deliver packets out of order or drop some entirely. It does this through acknowledgement, sequencing, and retransmission. The cost is a three-way handshake before any data flows: SYN → SYN-ACK → ACK. This takes one round-trip time (RTT).

For HTTPS, there is an additional TLS handshake after the TCP handshake to establish encryption keys — another 1–2 RTTs. Modern TLS 1.3 and HTTP/2 reduce this overhead significantly. Understanding these handshakes is essential for understanding web performance — every millisecond of latency between client and server multiplies these handshakes.

The Full Request Journey

StepWhat HappensTypical Time
1. DNS LookupResolve domain to IP1–100ms
2. TCP HandshakeEstablish reliable connection1 RTT (~10–100ms)
3. TLS HandshakeNegotiate encryption (HTTPS)1–2 RTTs
4. HTTP RequestBrowser sends GET/POST request<1ms
5. Server ProcessingApp logic, database queries10–500ms
6. HTTP ResponseServer sends HTML/JSONDepends on payload size
7. Browser RenderingParse HTML, fetch sub-resources, paint100ms–2s

3. HTTP & HTTPS — Deep Dive

HTTP (HyperText Transfer Protocol) is the application-layer protocol that powers the web. Every time your browser loads a page, it sends an HTTP request and receives an HTTP response. Understanding HTTP deeply — not just "it's how browsers talk to servers" — is essential for building reliable, performant web applications and for debugging problems when things go wrong.

HTTP Request Anatomy

An HTTP request has four parts: the request line (method + URL + HTTP version), headers (metadata about the request), an optional body (data sent to the server, used by POST/PUT), and a blank line separating headers from body.

GET /api/courses HTTP/1.1 Host: learnwithlsgp.in Accept: application/json Authorization: Bearer eyJhbGciOiJIUzI1NiJ9... User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Connection: keep-alive

HTTP Methods

MethodPurposeHas Body?Idempotent?
GETRetrieve a resourceNoYes
POSTCreate a new resourceYesNo
PUTReplace a resource entirelyYesYes
PATCHUpdate part of a resourceYesNo (usually)
DELETERemove a resourceNoYes
HEADGET without body (check headers)NoYes
OPTIONSList allowed methods (used by CORS)NoYes

Idempotent means calling the method multiple times with the same input produces the same result. Deleting a resource twice is idempotent (second call finds nothing to delete, state is the same: resource is gone). Creating a resource twice is not — you might get two records.

HTTP Status Codes

Status codes are grouped by their first digit:

HTTP/1.1 vs HTTP/2 vs HTTP/3

HTTP/1.1 (1997): One request at a time per connection. Browsers work around this by opening 6–8 parallel TCP connections per domain — wasteful and limited. Head-of-line blocking: a slow response blocks later requests on the same connection.

HTTP/2 (2015): Multiplexing — multiple requests/responses over a single TCP connection simultaneously, using binary framing. Header compression (HPACK). Server push (server can send resources the browser will need before it asks). Used by ~65% of websites today.

HTTP/3 (2022): Replaces TCP with QUIC (UDP-based). Eliminates TCP's head-of-line blocking entirely. Faster connection establishment (0-RTT resumption). Better performance on lossy mobile networks. The future of HTTP.

HTTPS and TLS

HTTPS is HTTP over TLS (Transport Layer Security). TLS provides three guarantees: confidentiality (data is encrypted, eavesdroppers see gibberish), integrity (data cannot be tampered with in transit), and authentication (you are actually talking to the server whose certificate you trust, not an impersonator). Every website handling any user data must use HTTPS — browsers now mark HTTP sites as "Not Secure" and many APIs refuse HTTP connections entirely. HTTPS certificates are free via Let's Encrypt, so there is no excuse not to use it.

4. HTML — Structure of the Web

HTML (HyperText Markup Language) is not a programming language — it is a markup language that describes the structure and meaning of web content. Every webpage is ultimately an HTML document. Understanding HTML well means understanding both the syntax (tags and attributes) and the semantics (what each element means to browsers, search engines, and screen readers).

Document Structure

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Learn with LSGP</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h1>Welcome to Learn with LSGP</h1> <nav><a href="/courses">Courses</a></nav> </header> <main> <article> <h2>DSA for Placements</h2> <p>Learn arrays, trees, graphs and more.</p> </article> </main> <footer>© 2025 Learn with LSGP</footer> </body> </html>

Semantic HTML

Semantic HTML means using elements that convey meaning, not just appearance. Compare <div class="nav"> with <nav> — both render identically by default, but the latter tells browsers, search engine crawlers, and screen readers that this is navigation. Semantic HTML is the foundation of good SEO and accessibility.

Key semantic elements: <header>, <nav>, <main>, <article>, <section>, <aside>, <footer>, <figure>, <figcaption>, <time>. Use headings in order (h1 → h2 → h3) — skipping heading levels confuses screen readers and hurts SEO.

Forms and Input

Forms are how users send data to servers. Every form element has accessibility and UX implications. Always use <label> elements linked to inputs via the for attribute. Use appropriate type attributes on inputs (type="email" triggers email keyboard on mobile, type="tel" triggers number pad, type="password" masks input). HTML5 built-in validation (required, minlength, pattern) catches common errors before the server ever sees the data.

HTML5 Features Worth Knowing

5. CSS — Styling & Layout

CSS (Cascading Style Sheets) controls the visual presentation of HTML. The word "cascading" is key: multiple style rules can apply to the same element, and CSS has a defined system — the cascade — for determining which rule wins. Mastering CSS requires understanding this cascade, the box model, and modern layout systems. CSS is far more than "making things pretty" — it is a complete visual programming system.

The Box Model

Every HTML element is a rectangular box. The box model defines four layers: content (the actual text or image), padding (space inside the border), border (visible edge), and margin (space outside the border, between elements). The default box-sizing: content-box means width/height apply only to content — setting box-sizing: border-box makes width include padding and border, which is almost always what you want and is set by most CSS resets.

CSS Specificity and the Cascade

When multiple rules match the same element, CSS uses a specificity score to decide which wins. Specificity is calculated as (inline styles, IDs, classes, elements): style="" beats #id beats .class beats tag. When specificity is equal, the later rule in the stylesheet wins (the "cascade"). !important overrides all — use sparingly, as it makes debugging painful.

/* Specificity: 0-1-0 (one class) */ .title { color: green; } /* Specificity: 1-0-0 (one ID) — wins over .title */ #hero-title { color: blue; } /* Specificity: 0-1-1 (one class + one element) */ h1.title { color: red; }

Flexbox — One-Dimensional Layout

Flexbox is the go-to tool for arranging items in a single row or column. Set display: flex on a container, and its children become flex items. justify-content controls alignment along the main axis (left-right for row); align-items controls the cross axis (top-bottom for row). Flexbox eliminates the need for float-based hacks that plagued CSS layouts for years.

.nav { display: flex; justify-content: space-between; /* spread items across the row */ align-items: center; /* vertically center items */ gap: 16px; /* space between items */ }

CSS Grid — Two-Dimensional Layout

Grid is for two-dimensional layouts (rows and columns simultaneously). It is what you use for full page layouts, card grids, and complex visual designs that Flexbox would struggle with. grid-template-columns: repeat(3, 1fr) creates three equal columns. The fr unit means "fraction of available space," making fluid layouts trivial.

.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; } /* auto-fill + minmax = responsive grid with no media queries */

Responsive Design & Media Queries

Responsive design means your layout adapts gracefully to different screen sizes — from a 4-inch mobile screen to a 32-inch monitor. The primary tool is media queries, which apply CSS rules only when certain conditions are met (screen width, height, orientation, resolution).

/* Mobile-first: base styles are for small screens */ .sidebar { display: none; } /* Tablet and up: show sidebar */ @media (min-width: 768px) { .sidebar { display: block; width: 240px; } }

Mobile-first is the recommended approach: write CSS for mobile by default, then override for larger screens. This keeps your base CSS lean and avoids the performance cost of loading desktop CSS on mobile.

CSS Custom Properties (Variables)

CSS variables (officially "custom properties") let you define reusable values. They are especially powerful for design systems and theming because changing one variable updates every element that uses it — and unlike preprocessor variables (Sass/Less), they are dynamic and can be changed with JavaScript at runtime.

:root { --color-primary: #2e7d32; --font-size-base: 16px; --spacing-md: 24px; } h1 { color: var(--color-primary); } .card { padding: var(--spacing-md); }

6. JavaScript — Behaviour & Interactivity

JavaScript is the only programming language that runs natively in every browser. It transforms static HTML/CSS documents into interactive applications. With the advent of Node.js, JavaScript now runs on servers too — making it the only language where you can share code between frontend and backend. Learn with LSGP covers JavaScript in depth because it is indispensable for any web career path.

The JavaScript Engine & Event Loop

JavaScript is single-threaded — it executes one operation at a time on a single call stack. This sounds limiting, but the event loop makes asynchronous operations possible without multiple threads. Here is how it works:

This is why setTimeout(fn, 0) does not run immediately — it runs after the current synchronous code finishes and the call stack empties. Understanding the event loop is one of the most commonly tested JavaScript concepts in frontend interviews.

ES6+ Modern JavaScript Features

// Arrow functions — concise, lexical 'this' const add = (a, b) => a + b; // Destructuring const { name, score } = student; const [first, ...rest] = array; // Template literals const msg = `Hello, ${name}! Your score is ${score}.`; // Spread operator const merged = { ...defaults, ...overrides }; // Optional chaining — avoids "cannot read property of undefined" const city = user?.address?.city; // Nullish coalescing — use right side only if left is null/undefined const theme = userPref ?? 'light';

Promises and Async/Await

Asynchronous code used to be written with nested callbacks ("callback hell"). Promises introduced a cleaner chain. async/await makes asynchronous code look synchronous, dramatically improving readability.

// Fetch data with async/await async function getCourses() { try { const response = await fetch('/api/courses'); if (!response.ok) throw new Error(`HTTP ${response.status}`); const data = await response.json(); return data; } catch (err) { console.error('Failed to fetch:', err); } }

Closures

A closure is a function that "closes over" (remembers) variables from its outer scope even after the outer function has returned. Closures enable data privacy, function factories, and memoisation patterns. They appear in almost every JavaScript interview and in real code constantly.

function makeCounter() { let count = 0; // private — no external access return { increment: () => ++count, decrement: () => --count, value: () => count }; } const counter = makeCounter(); counter.increment(); // 1 counter.increment(); // 2

Prototypes and the 'this' Keyword

JavaScript's object system is prototype-based: every object has an internal [[Prototype]] link to another object, forming a chain. Property lookup walks up this chain. ES6 classes are syntactic sugar over this prototype system — they make OOP code more readable but don't change the underlying mechanics.

The value of this in JavaScript depends on how a function is called, not where it is defined (except for arrow functions, which inherit this from the surrounding scope). This context-dependence is a frequent source of bugs and a very common interview topic.

7. The DOM & Browser APIs

When a browser parses HTML, it builds an in-memory tree representation called the Document Object Model (DOM). JavaScript can read and modify this tree — adding, removing, and changing elements in real time. This is the mechanism behind every interactive web page, from a simple form validation to a rich single-page application.

DOM Manipulation

// Selecting elements const btn = document.querySelector('#submit-btn'); const items = document.querySelectorAll('.course-card'); // Modifying content and attributes btn.textContent = 'Submit'; btn.setAttribute('disabled', ''); btn.classList.add('loading'); // Creating and inserting elements const card = document.createElement('div'); card.className = 'course-card'; card.innerHTML = `<h3>DSA Masterclass</h3>`; document.querySelector('.grid').appendChild(card); // Event listeners btn.addEventListener('click', (event) => { event.preventDefault(); // stop form submission submitForm(); });

Event Bubbling and Delegation

When you click a button inside a div inside a section, the click event "bubbles" upward: button → div → section → body → document. This is event bubbling. Event delegation exploits this: instead of attaching a listener to every button in a list, attach one listener to the parent container and check which child was clicked using event.target. This is more efficient and works for dynamically added elements.

// Event delegation — one listener handles all cards document.querySelector('.course-grid').addEventListener('click', (e) => { const card = e.target.closest('.course-card'); if (card) openCourse(card.dataset.courseId); });

Key Browser APIs

8. Frontend Frameworks — React, Vue & Angular

As web applications grew more complex — with hundreds of interactive components, complex state, real-time updates — managing the DOM manually became impractical. Frontend frameworks abstract DOM manipulation and provide structured patterns for building UIs. Learn with LSGP focuses on React as the primary framework, as it dominates the Indian job market, but covers the principles that apply to all frameworks.

Why Frameworks Exist

Consider a simple comment section: when a user posts a comment, you need to update the comment count, add the comment to the list, possibly update a "first to comment" badge, and clear the input field — four DOM updates for one user action. For a large app with hundreds of interactions, manually coordinating these DOM updates becomes error-prone and slow. Frameworks solve this by letting you describe what the UI should look like for a given state, then efficiently computing the minimal DOM changes needed when that state changes.

React — Component-Based UI

React (created by Meta) is the most widely used frontend library. Its core idea: build your UI as a tree of components, each of which is a JavaScript function that takes data (props) and returns what to render (JSX). When data changes, React re-renders only the components that depend on that data using its virtual DOM diffing algorithm.

// A simple React component for Learn with LSGP import { useState } from 'react'; function CourseCard({ title, duration, level }) { const [enrolled, setEnrolled] = useState(false); return ( <div className="course-card"> <h3>{title}</h3> <p>{duration} · {level}</p> <button onClick={() => setEnrolled(!enrolled)}> {enrolled ? 'Enrolled ✓' : 'Enrol Now'} </button> </div> ); }

React Hooks

Hooks (introduced in React 16.8) let function components use state and lifecycle features. The most important ones:

Vue.js

Vue is a progressive framework — you can add it to a single page or build a full SPA. It uses a single-file component format (.vue) that keeps HTML, CSS, and JavaScript for one component in one file. Vue's reactivity system is arguably more intuitive than React for beginners. Vue 3 with the Composition API offers similar patterns to React Hooks. Vue is popular in Southeast Asia and is used by Alibaba, GitLab, and others.

Angular

Angular (by Google) is a full opinionated framework with TypeScript at its core, a built-in dependency injection system, a router, form handling, and HTTP client. Angular's strictness makes it excellent for large enterprise teams where consistency matters. It has a steeper learning curve but produces highly structured, maintainable code. Angular is widely used in Indian banking, insurance, and enterprise software.

State Management

For large applications, component-local state is insufficient. State management libraries provide a single, predictable state container shared across components. Redux (React ecosystem) uses a strict unidirectional data flow: action → reducer → store → view. Zustand is a simpler, modern alternative. Pinia is the recommended state manager for Vue 3. NgRx is the Angular equivalent of Redux.

9. Backend Development — Node.js, Django & Flask

The backend is the server-side of a web application. It handles business logic, talks to databases, enforces authentication and authorisation, sends emails, processes payments, generates reports, and exposes APIs for the frontend to consume. Learn with LSGP covers the three most relevant backend stacks for Indian students: Node.js (JavaScript), Django (Python), and Flask (Python).

Node.js — JavaScript on the Server

Node.js runs JavaScript outside the browser using Chrome's V8 engine. Its non-blocking I/O model makes it excellent for I/O-intensive services like APIs, chat servers, and real-time dashboards. It is not ideal for CPU-heavy computation (like video encoding or ML inference) because its single-threaded event loop would block on those tasks.

The most popular Node.js web framework is Express.js — minimal, unopinionated, and the backbone of millions of APIs worldwide. Fastify is a faster modern alternative. NestJS brings Angular-style structure and TypeScript to Node backends, making it popular for larger teams.

// A minimal Express.js API server const express = require('express'); const app = express(); app.use(express.json()); // GET all courses app.get('/api/courses', async (req, res) => { const courses = await db.query('SELECT * FROM courses'); res.json(courses); }); // POST enrol in a course app.post('/api/enrol', async (req, res) => { const { userId, courseId } = req.body; await db.query( 'INSERT INTO enrolments (user_id, course_id) VALUES (?, ?)', [userId, courseId] ); res.status(201).json({ message: 'Enrolled successfully' }); }); app.listen(3000);

Django — Batteries-Included Python Framework

Django is a full-featured Python web framework with a "batteries included" philosophy — it comes with an ORM, authentication, admin panel, form validation, CSRF protection, and templating engine out of the box. Django REST Framework (DRF) extends it for building REST APIs. Django is heavily used in Indian startups and is the primary backend framework for many data-science-adjacent web apps because of Python's dominance in that space. Instagram was built on Django; it scaled to billions of users.

Flask — Microframework for Python

Flask takes the opposite approach to Django: give you the minimum and let you choose every component. A "Hello World" Flask app is six lines of code. This makes it perfect for small services, rapid prototyping, and machine learning model deployment (a Flask endpoint serving a PyTorch model is a common pattern). The downside: you assemble the architecture yourself, which requires more experience to do well.

# Flask API endpoint — serve an ML prediction from flask import Flask, request, jsonify import model # your trained model app = Flask(__name__) @app.route('/predict', methods=['POST']) def predict(): data = request.get_json() result = model.predict(data['features']) return jsonify({ 'prediction': result }) if __name__ == '__main__': app.run(debug=True)

Choosing Between Them

FactorNode.js / ExpressDjangoFlask
LanguageJavaScriptPythonPython
PhilosophyMinimal (Express)Batteries-includedMicroframework
Best forReal-time, I/O-heavy APIsFull-stack web appsSmall services, ML APIs
ORM included?No (use Prisma, Sequelize)Yes (Django ORM)No (use SQLAlchemy)
Admin panel?NoYes (built-in)No
Learning curveLow–MediumMedium–HighLow

10. Databases & Data Storage

Almost every web application needs to store data persistently. Choosing the right database is a critical architectural decision. The two main categories — relational (SQL) and non-relational (NoSQL) — have different strengths, and modern applications often use both.

Relational Databases (SQL)

SQL databases store data in tables with rows and columns. Relationships between tables are expressed through foreign keys, and complex queries joining multiple tables are SQL's superpower. The ACID properties (Atomicity, Consistency, Isolation, Durability) guarantee that transactions are reliable even in failure scenarios. Popular choices: PostgreSQL (feature-rich, open-source, production favourite), MySQL/MariaDB (widely deployed, strong ecosystem), SQLite (embedded, zero-config, great for development).

-- Create a courses table CREATE TABLE courses ( id SERIAL PRIMARY KEY, title VARCHAR(255) NOT NULL, level VARCHAR(50), created_at TIMESTAMP DEFAULT NOW() ); -- Join query: get all enrolments with student and course names SELECT u.name, c.title, e.enrolled_at FROM enrolments e JOIN users u ON e.user_id = u.id JOIN courses c ON e.course_id = c.id WHERE c.level = 'beginner' ORDER BY e.enrolled_at DESC;

NoSQL Databases

NoSQL databases sacrifice strict relational constraints for horizontal scalability, flexible schemas, and specific access pattern optimisations. Main types:

ORMs — Object-Relational Mapping

Writing raw SQL in application code is verbose and error-prone. ORMs let you interact with databases using the language's native objects. Django's ORM, SQLAlchemy (Python), Prisma (Node.js/TypeScript), and Hibernate (Java) are widely used. The trade-off: ORMs can generate inefficient SQL for complex queries — knowing when to drop down to raw SQL is an important skill.

Database Indexing

An index is a separate data structure (usually a B-Tree) that the database maintains to speed up queries on specific columns. Without an index on users.email, a query like SELECT * FROM users WHERE email = 'x@y.com' scans every row. With an index, it jumps directly to the matching row. Indexes make reads faster but writes slower (the index must be updated). Only index columns you frequently filter or sort by.

11. REST APIs

REST (Representational State Transfer) is an architectural style for building APIs. A RESTful API exposes resources (courses, users, orders) at predictable URLs and uses HTTP methods to perform operations on them. REST is the dominant API design pattern for web services — virtually every cloud platform, payment gateway, and SaaS product exposes a REST API.

REST Constraints

RESTful URL Design

ActionMethodURL
List all coursesGET/api/courses
Get course #42GET/api/courses/42
Create a coursePOST/api/courses
Update course #42 fullyPUT/api/courses/42
Update course #42 partiallyPATCH/api/courses/42
Delete course #42DELETE/api/courses/42
List modules in course #42GET/api/courses/42/modules

URLs represent nouns (resources), not verbs. /api/getCourses is not RESTful — /api/courses with a GET method is. Nest resources only up to two levels deep; deeper nesting becomes unwieldy.

API Versioning

APIs evolve — you add fields, change types, remove deprecated endpoints. Versioning prevents breaking existing clients. Common strategies: URL versioning (/api/v1/courses, /api/v2/courses), header versioning (Accept: application/vnd.lsgp.v2+json), or query parameter (?version=2). URL versioning is the most visible and widely used.

API Documentation

A REST API is only as useful as its documentation. OpenAPI (Swagger) is the industry standard for documenting REST APIs — you define your endpoints, request/response schemas, and authentication in a YAML or JSON file, and tools generate interactive documentation, client SDKs, and server stubs automatically. Every professional API should have OpenAPI documentation.

12. GraphQL

GraphQL (created by Meta and open-sourced in 2015) is an alternative to REST for APIs. Instead of multiple REST endpoints each returning fixed data shapes, GraphQL exposes a single endpoint where clients specify exactly what data they need in a query. The server returns precisely that — no more, no less.

The Problems GraphQL Solves

Over-fetching: A REST endpoint for a user might return 30 fields; the mobile app only needs 5. All 30 fields travel the network unnecessarily. Under-fetching: Displaying a dashboard might require data from /users/1, /courses/1/progress, and /notifications — three round trips. GraphQL solves both with a single query.

# GraphQL query — client specifies exactly what it needs query { user(id: "1") { name avatar enrolments { course { title } progress } } } # Response contains exactly this — nothing more { "data": { "user": { "name": "Venky", "avatar": "/img/avatar.jpg", "enrolments": [ { "course": { "title": "DSA Masterclass" }, "progress": 68 } ] } } }

GraphQL vs REST — When to Use Which

ConsiderationRESTGraphQL
Learning curveLowMedium–High
Best forSimple CRUD, public APIsComplex data, multiple clients
CachingHTTP cache (easy)Requires custom caching
Type safetyVia OpenAPIBuilt-in schema and type system
Real-timeWebhooks / pollingSubscriptions (built-in)
File uploadsSimple (multipart)More complex

GraphQL is not strictly better than REST — it is a different tool. Use REST for public APIs and simple services. Use GraphQL when you have multiple frontend clients (web, iOS, Android) with different data needs, or when your data model is deeply relational.

13. Authentication & Security

Security is not an optional layer you add after launch — it is a design discipline baked into every decision. A compromised web application damages users, destroys trust, and can have legal consequences. Learn with LSGP treats security as a first-class topic, not an afterthought.

Authentication vs Authorisation

Authentication answers "Who are you?" — verifying identity (login with email + password, Google OAuth, fingerprint). Authorisation answers "What are you allowed to do?" — checking permissions (can this user view this course? Can this admin delete that record?). Both are required; confusing them is a common security mistake.

Session-Based vs Token-Based Auth

Session-based: After login, the server creates a session, stores it in memory or a database, and sends the session ID in a cookie. Every subsequent request sends the cookie; the server looks up the session. Stateful — the server must remember sessions. Works well for traditional web apps.

JWT (JSON Web Token): After login, the server creates a signed token containing user data and returns it to the client. The client sends the token in the Authorization header with every request. The server verifies the signature — no database lookup needed. Stateless and scalable. Used heavily in SPA + REST API architectures.

// JWT structure: header.payload.signature (Base64URL encoded) // Header: { "alg": "HS256", "typ": "JWT" } // Payload: { "userId": 42, "role": "student", "exp": 1735689600 } // Signature: HMACSHA256(base64(header) + "." + base64(payload), secret) // Never store sensitive data in JWT payload — it is only Base64 encoded, not encrypted! // Verify on every request; check expiry (exp claim).

OAuth 2.0 & Social Login

OAuth 2.0 is an authorisation framework that lets users grant third-party apps access to their data without sharing passwords. "Sign in with Google" uses OAuth: Google authenticates the user and issues an access token that your app can use to read the user's profile. OpenID Connect (OIDC) extends OAuth for identity — it adds a standardised way to get basic user profile information.

OWASP Top 10 — Critical Web Vulnerabilities

14. Web Performance & Optimisation

Performance is a feature. Studies consistently show that a 100ms increase in page load time reduces conversion rates by 1–7%. For an e-commerce site or an EdTech platform like Learn with LSGP, this translates directly to users who leave before they see value. Performance optimisation is both a user experience concern and a business concern.

Core Web Vitals

Google's Core Web Vitals are the key performance metrics that affect search ranking and user experience:

Frontend Performance Techniques

Backend Performance Techniques

15. DevTools, Build Tools & Deployment

Professional web development requires a toolchain — tools for bundling code, managing dependencies, testing, and deploying to production. Understanding this toolchain is what separates "I write code in a file" from "I ship software to users."

Browser DevTools

Every browser's built-in developer tools (F12 or Ctrl+Shift+I) are one of the most powerful debugging environments in software development. The key panels:

Package Managers — npm and others

npm (Node Package Manager) is the default package manager for JavaScript. package.json declares your project's dependencies; npm install downloads them into node_modules. yarn and pnpm are faster alternatives with deterministic lockfiles. For Python, pip and poetry serve the same role.

Build Tools & Bundlers

Version Control — Git

Git is non-negotiable for any serious software project. Every change you make should be committed, with a clear message explaining why the change was made (not what — the diff shows that). Learn branches (create a branch for each feature or bug fix, merge when done), pull requests (code review before merging), and rebasing (keeping a clean history).

Key Git commands every developer uses daily: git clone, git pull, git checkout -b, git add, git commit -m, git push, git merge, git log --oneline, git stash, git revert.

Deployment Options

PlatformBest ForFree Tier?
VercelFrontend (React, Next.js)Yes
NetlifyFrontend + serverless functionsYes
RenderFull-stack apps, APIsYes
RailwayBackend + databasesLimited
AWS / GCP / AzureProduction at scaleFree tiers available
DigitalOceanVPS, managed databases$4/month minimum

CI/CD Pipelines

Continuous Integration (CI) automatically runs tests every time you push code. Continuous Deployment (CD) automatically deploys code that passes tests to production. GitHub Actions is the most accessible CI/CD tool — define workflows in YAML that run on every push, pull request, or schedule. A basic web app CI pipeline: lint → test → build → deploy. This automation ensures no broken code reaches users and frees developers from manual deployment steps.

16. Career Path & Learn with LSGP Study Plan

Web development is one of the broadest fields in software engineering. Understanding the landscape — the roles available, the skills each requires, and how to position yourself — is as important as the technical knowledge itself. Learn with LSGP is designed to serve students across this entire spectrum.

Web Development Career Paths

12-Week Learn with LSGP Web Technologies Study Plan

WeekFocusMilestone
1–2HTML + CSS fundamentalsBuild a responsive personal portfolio page
3–4JavaScript core + DOM + Fetch APIBuild an interactive quiz app using a public API
5–6React (components, hooks, state)Build a multi-page React app with routing
7HTTP deep dive + REST API designDesign a RESTful API spec for a blog on paper
8Node.js + Express + REST APIBuild a REST API with CRUD for a resource
9Databases (PostgreSQL or MongoDB)Connect your API to a real database
10Authentication (JWT + OAuth)Add login and protected routes to your project
11Security + Performance + DevToolsAudit your project with Lighthouse, fix top issues
12Deployment + CI/CDDeploy your full-stack project live on the internet

Interview Preparation for Web Roles

Web development interviews typically involve three components: conceptual questions (how does the browser render a page? explain the event loop. what is CORS?), practical coding (build a component, fix a bug in a React codebase, write a SQL query), and system design (design the backend for a URL shortener / chat app / notification service).

Common interview topics from Learn with LSGP's placement prep database: JavaScript closures, hoisting, event loop, prototypes, async/await. React component lifecycle, hooks, virtual DOM. HTTP methods, status codes, REST principles. SQL joins, indexing, query optimisation. Authentication flows, JWT vs sessions, OAuth. CORS, XSS, CSRF, SQL injection. Browser storage mechanisms. CSS specificity, Flexbox vs Grid, responsive design.

🚀 Learn with LSGP Final Word The web is the most visible platform in human history. The skills you build studying web technologies will let you create things that real people use every day — learners on Learn with LSGP, customers of businesses you build, citizens using government services. Start with one small project today. Deploy it. Show it to someone. Then make it better. That cycle of build → ship → improve → repeat is the entire career of a web engineer, distilled. Learn with LSGP is here to support every step.

17. Quick-Reference Glossary

These terms appear regularly in web development interviews, documentation, and team discussions. Learn with LSGP recommends revisiting this list after completing each section of the guide.

Networking & Protocols

Frontend

Backend & APIs