Tutorials
Step-by-step series to learn JavaScript from scratch.
Browser APIs
Storage: localStorage, sessionStorage, and IndexedDB
Learn how to store data in the browser using localStorage, sessionStorage, and IndexedDB. Understand when to use each storage API.
Fetching Data: fetch vs XMLHttpRequest
Learn the differences between fetch() and XMLHttpRequest for making HTTP requests in the browser, and when to use each API.
The Geolocation API
Learn how to get the user's location in the browser using the Geolocation API with navigator.geolocation.
The Notifications API
Learn how to use the browser Notifications API to display desktop notifications to users, request permission, and handle notification events.
The Clipboard API
Learn how to read from and write to the system clipboard using the modern Clipboard API in JavaScript.
The Intersection Observer API
Learn how to detect when elements enter or leave the viewport using the Intersection Observer API for performant lazy loading and scroll-based features.
The Resize Observer API
Learn how to track element size changes with the Resize Observer API for responsive components, dynamic layouts, and adaptive interfaces.
The Mutation Observer API
Learn how to detect and respond to DOM changes using the Mutation Observer API for monitoring element additions, attribute changes, and text modifications.
WebSockets in the Browser
Learn how to establish persistent bidirectional communication between browser and server using WebSockets. Build real-time features like chat and live updates.
IndexedDB: Client-Side Databases
Learn how to store large amounts of structured data in the browser using IndexedDB, the powerful client-side database API for offline apps.
browser-apis
Web Workers: Running Code Off the Main Thread
Learn how to use Web Workers to run JavaScript in background threads, keeping your UI responsive during heavy computations.
Service Workers and Caching
Learn how to use Service Workers to cache resources, enable offline functionality, and intercept network requests for faster web applications.
design-patterns
fullstack-javascript
File Uploads: Client to Server to Storage
Handle file uploads end-to-end with working code. FormData, fetch, multer, S3 presigned URLs, validation, and security — all with copy-paste examples.
Full-Stack Form Handling and Validation
Learn to build secure forms with HTML5 constraint validation, Express backend validation using Zod, and CSRF protection.
fullstack-js
Full-Stack JS Project Setup
Learn how to structure, build, and run a full-stack JavaScript app with a Node.js Express backend and a Vite frontend.
Client-Server Communication Patterns
Learn how to connect your JavaScript apps to servers using REST APIs, WebSockets, and Server-Sent Events.
Server Rendering vs. Client Rendering
Understand the trade-offs between server-side rendering and client-side rendering, and when to use each approach in JavaScript applications.
Real-Time Features with WebSockets
Build real-time features with WebSockets: chat, live dashboards, collaborative tools. Covers server setup, scaling, rooms, auth, and production deployment.
Integration Testing a Full-Stack App
Integration tests for full-stack JavaScript with Vitest and Supertest. Covers API testing, database transaction rollback, and auth flows.
functional-javascript
Currying and Partial Application
Learn how currying and partial application let you transform JavaScript functions into reusable, composable pieces.
Functors and Monads in Practice
Learn how Functors and Monads work in JavaScript using familiar examples like Array.map, Promise.then, and custom Option types.
Algebraic Data Types in JS
Learn how product types and sum types work in JavaScript using TypeScript's union types and discriminated unions.
javascript
JavaScript Design Patterns
The Module Pattern in JavaScript
Learn how to use the module pattern to encapsulate code, create private state, and organize your JavaScript applications.
Observer and Pub/Sub Patterns in JavaScript
Master the observer pattern and its pub/sub variant for building decoupled, event-driven JavaScript applications.
The Singleton Pattern in JavaScript
Learn how to implement the Singleton pattern in JavaScript to ensure a class has only one instance with global access point.
JavaScript Fundamentals
JavaScript Fundamentals: Variables and Types
Learn the difference between var, let, and const, and master JavaScript's primitive data types in this beginner-friendly tutorial.
Functions and Scope in JavaScript
Learn how to define functions in JavaScript, understand variable scope (global, function, and block scope), and master closures.
JavaScript Fundamentals: Objects and Arrays
Master objects and arrays in JavaScript—learn how to create, manipulate, and use these fundamental data structures effectively.
JavaScript Fundamentals: Control Flow
Master control flow in JavaScript with if/else statements, switch cases, and loops. Learn how to direct the execution path of your programs.
JavaScript Fundamentals: Classes in JavaScript
Learn how to create and use classes in JavaScript, including constructors, methods, inheritance, and private fields.
Error Handling in JavaScript
Learn how to handle errors gracefully in JavaScript using try/catch blocks, throw custom errors, and debug effectively.
Working with the DOM
Learn how to select, create, modify, and remove DOM elements, handle events, and build interactive web pages with JavaScript.
Callbacks, Promises, and async/await
Learn how JavaScript handles asynchronous operations from callbacks to modern async/await syntax.
JavaScript Fundamentals: ES Modules: import and export
Learn how to use ES Modules (import/export) in JavaScript to organize code into reusable modules.
Symbols and Iterators in JavaScript
Master JavaScript Symbols, well-known symbols, and the iterator protocol. Learn to create custom iterables and use for...of loops effectively.
javascript-functional-programming
Higher-Order Functions
Learn how JavaScript higher-order functions let you pass and return functions to build reusable, declarative code.
Function Composition and Pipelines
Combine small, focused functions into elegant data transformation pipelines. Learn how compose and pipe work, their mental models, and when to use each.
js-design-patterns
Factory and Abstract Factory Patterns in JavaScript
Learn how factory functions and the abstract factory pattern help you create objects flexibly and consistently in JavaScript.
Command Pattern
Learn the Command Design Pattern in JavaScript — turns requests into objects for undo/redo, queuing, and decoupling.
State Machines in JavaScript
Learn how to implement state machines in JavaScript using XState — manage complex application logic with predictable, visualizable state transitions.
js-functional-programming
Pure Functions and Side Effects
Learn what pure functions are, how side effects impact your JavaScript code, and why they matter for writing predictable, testable programs.
Immutability in JavaScript
Learn how immutability in JavaScript prevents bugs, makes code predictable, and works with React state and functional programming.
node-api-security
Input Validation and Sanitization in Node.js
Learn how to validate and sanitize user input in Node.js applications using Zod, Joi, express-validator, DOMPurify, and prevent SQL injection.
Error Handling in Production
Learn battle-tested error handling patterns for Node.js applications in production.
node-backend-development
node-performance
node-tutorials
Node.js API Development
Node.js Essentials
Getting Started with Node.js
Learn what Node.js is, how to install it, and write your first JavaScript programs outside the browser.
Node.js Essentials: Modules and npm
Learn how to create, import, and share modules in Node.js, plus how to use npm to manage dependencies in your projects.
Working with the File System in Node.js
Learn how to read, write, and manipulate files using Node.js built-in fs module. Covers fs, fs/promises, streams, and common patterns.
Building an HTTP Server
Learn how to create HTTP servers from scratch using Node.js built-in http module, handle routes, and process requests.
Node.js Essentials: Building a Web App with Express
Learn how to build a complete web application from scratch using Express.js, the most popular Node.js web framework.
Streams in Node.js
Learn how to work with streams in Node.js to handle large amounts of data efficiently with readable, writable, and transform streams.
Worker Threads in Node.js
Learn how to use Worker Threads in Node.js to run CPU-intensive JavaScript tasks in parallel and improve application performance.
Middleware Patterns in Node.js
Master the middleware pattern in Express.js — learn how to create, chain, and compose middleware functions for scalable Node.js applications.
nodejs-security
React
Components and JSX
Learn how to build reusable UI components with JSX syntax, props, and composition in modern React.
Props and State
Learn how React components communicate with props and manage data with state.
Event Handling in React
Learn how to handle clicks, form inputs, keyboard events, and more in React with synthetic events and controlled components.
react-essentials
Building Custom Hooks
Extract and reuse stateful logic across components with custom React hooks. Learn patterns, rules, and common gotchas.
Context API and useReducer
Learn how React's Context API eliminates prop drilling and how useReducer handles complex state logic, with patterns for combining both.
react-fundamentals
React: Introduction and Project Setup
Learn React from scratch: project setup with Vite, JSX fundamentals, components, props, and your first app.
Hooks: useState and useEffect
Learn how to manage state and side effects in React function components with useState and useEffect hooks.
Performance Patterns and Memoization
Optimize React renders with React.memo, useMemo, and useCallback to avoid expensive recalculations and unnecessary re-renders.
security
Security Fundamentals
Security Hardening
Testing JavaScript
JavaScript Testing: Getting Started
Learn the fundamentals of testing JavaScript code, from understanding why testing matters to writing your first test with Jest and Vitest.
Unit Testing with Jest
Learn how to write unit tests with Jest, the most popular JavaScript testing framework. Cover matchers, setup/teardown, async testing, and mocking.
Unit Testing with Vitest
Learn how to write fast, modern unit tests with Vitest — the blazing fast test runner built on Vite.
Testing Asynchronous Code
Learn how to test async functions, promises, and handle timing in your JavaScript tests with Jest and Vitest.
Mocking Modules and Dependencies
Learn how to mock modules, functions, and dependencies in Jest and Vitest. Master jest.mock, vi.mock, spies, and timer faking for effective unit testing.
Testing DOM Code with jsdom
Learn how to test DOM manipulation code using jsdom, a pure JavaScript implementation of web standards that runs in Node.js.
End-to-End Testing with Playwright
Learn how to write powerful end-to-end tests with Playwright, from basic assertions to advanced browser automation for modern web applications.
Code Coverage and CI Integration
Learn how to measure code coverage, interpret coverage reports, and integrate testing into your CI pipeline for reliable JavaScript projects.
Snapshot Testing Patterns
Master snapshot testing in JavaScript with Jest and Vitest. Learn when to use snapshots, how to manage them, and best practices for effective test maintenance.
TypeScript Basics
Getting Started with TypeScript
Learn what TypeScript is, why you should use it, and how to set up your first TypeScript project in this beginner-friendly tutorial.
Types and Interfaces in TypeScript
Learn the difference between types and interfaces in TypeScript, when to use each, and how to create powerful type definitions for your applications.
Generics in TypeScript
Learn how to write reusable, type-safe code with TypeScript generics — from basic type parameters to advanced constraints.
Type Narrowing and Guards in TypeScript
Learn how to narrow types, use type guards, and handle union types effectively in TypeScript.
Utility Types in TypeScript
Learn how to use TypeScript's built-in utility types like Partial, Required, Pick, Omit, and more to transform and manipulate types efficiently.
TypeScript Mapped Types
Learn how to transform existing types into new ones using mapped types in TypeScript. Master key remapping, modifiers, and practical patterns.
Conditional Types in TypeScript
Master TypeScript conditional types to create flexible, reusable type transformations that adapt based on type relationships.
TypeScript Intermediate
web-authentication
web-security
CSRF Protection Patterns
How SameSite cookies, synchronizer tokens, double-submit cookies, and custom headers stop cross-site request forgery attacks in JavaScript apps.
Content Security Policy
How CSP headers control which resources load on your page. Learn to configure directives, use nonces, and stop XSS attacks in JavaScript apps.