An expert guide to taking a Next.js App Router app to production with TypeScript — authentication done in layers (middleware, Data Access Layer, sessions with httpOnly cookies), environment variables and keeping secrets server-only, performance with next/image, next/font, dynamic imports and bundle analysis, error handling with error.tsx and not-found, and deployment on Vercel or self-hosted with standalone output — with common mistakes and exercises.
An expert guide to the Next.js App Router's powerful routing features with TypeScript — route groups for organization and multiple root layouts, dynamic and catch-all segments with generateStaticParams, parallel routes with named slots, intercepting routes for modals, route handlers (route.ts) as API endpoints, middleware for auth and redirects, template vs layout, and metadata files — with common mistakes and exercises.
An expert guide to changing data in the Next.js App Router with Server Actions and TypeScript — what a Server Action is and how 'use server' works, form actions and progressive enhancement, useActionState for form state and validation errors, useFormStatus for pending UI, useOptimistic for optimistic updates, revalidating and redirecting after a mutation, binding extra arguments, calling actions outside forms, and the security rules that matter because actions are public endpoints — with common mistakes and exercises.
An expert guide to how the Next.js App Router renders and caches — static vs dynamic rendering and what triggers each, the four caching layers (Request Memoization, Data Cache, Full Route Cache, Router Cache), fetch caching in Next 15+ (uncached by default), time-based and on-demand revalidation with revalidateTag/revalidatePath, unstable_cache for non-fetch data, route segment config, streaming with Suspense and loading.tsx, and Partial Prerendering — with common mistakes and exercises.
A practical guide to regex in JavaScript — literal vs constructor syntax, character classes, quantifiers, anchors, groups and alternation, flags, the string methods (test, match, matchAll, replace, split), capture and named groups, lookahead/lookbehind, and common pitfalls — with hands-on exercises and solutions.
A practical guide to handling errors and debugging in JavaScript — try/catch/finally, the Error object and custom error classes, throwing well, async error handling, global handlers, and a working DevTools debugging toolkit (breakpoints, the call stack, console methods, source maps) — with hands-on exercises and solutions.
A deeper guide to JavaScript's execution model — lexical scope and the scope chain, hoisting and the temporal dead zone, closures and the patterns they enable (private state, factories, memoization), the four rules of this, call/apply/bind, and arrow functions — with hands-on exercises and solutions.
A practical guide to functional programming in JavaScript — pure functions and side effects, immutability and how to update data without mutation, first-class and higher-order functions, map/filter/reduce, composition and currying, and why this style underpins React — with hands-on exercises and solutions.
A practical guide to storing data in the browser — localStorage and sessionStorage, cookies and their flags, when to use each, IndexedDB for larger structured data, the Cache API, security and size limits, and patterns for persisting app state — with hands-on exercises and solutions.
A practical guide to making JavaScript fast — the single-threaded model and avoiding main-thread blocking, debounce and throttle, memoization, efficient DOM updates and batching, memory leaks and how they happen, garbage collection, WeakMap/WeakSet, and measuring with DevTools — with hands-on exercises and solutions.
The type-level programming layer of TypeScript — conditional types and infer, mapped types with key remapping and modifiers, template literal types, recursive types, building your own utility types, declaration files and module augmentation, assertion functions and overloads, and bridging compile-time types to runtime validation — with hands-on exercises and solutions.
A practical guide to JavaScript's iteration protocol — what makes something iterable, the iterator protocol, for...of and the spread operator, writing generator functions with function* and yield, lazy and infinite sequences, generator delegation, and async iterators — with hands-on exercises and solutions.
A practical guide to TypeScript — why static types matter, basic and inferred types, interfaces and type aliases, unions and literals, generics, optional and readonly, narrowing, typing functions and async, and how it integrates into a real project — with hands-on exercises and solutions.
A practical guide to testing JavaScript — why tests matter, unit vs integration vs end-to-end, the arrange-act-assert structure, writing tests with Vitest, assertions and matchers, mocking, testing async code, what to test (and what not to), and test-driven development — with hands-on exercises and solutions.