Authentication Patterns in Next.js
A practical guide to authentication in Next.js: NextAuth.js setup, middleware-based auth, server component auth checks, JWT vs session strategies, and protecting routes at every level.
442 posts · page 5 of 10
A practical guide to authentication in Next.js: NextAuth.js setup, middleware-based auth, server component auth checks, JWT vs session strategies, and protecting routes at every level.
A practical guide to Next.js caching: the data cache, full route cache, router cache, revalidation strategies, cache tags, and how to control caching behavior at every level.
Everything you need to know about Next.js middleware: how it works, matchers, redirects, rewrites, authentication checks, geolocation, rate limiting, and common patterns for production apps.
Understand the EventEmitter pattern in Node.js. Covers custom emitters, error handling, async events, memory leaks, and real-world patterns.
Learn to write tests with Node.js built-in test runner. Covers test organization, assertions, mocking, subtests, code coverage, and watch mode.
Master Node.js streams for efficient data processing. Covers readable, writable, transform, and duplex streams with real-world examples.
Learn Python's asyncio — coroutines, tasks, event loops, async generators, and building concurrent I/O-bound applications.
Master Python dataclasses — automatic __init__, __repr__, ordering, immutability, default factories, and post-init processing.
A thorough exploration of Python generators: yield mechanics, send and throw, generator pipelines, memory efficiency, coroutine basics, and practical patterns.
A practical guide to making React apps fast: memoization, virtualization, code splitting, the Profiler, and the patterns that actually matter in production.
Learn how useRef works in React — DOM access, persisting values across renders, and common patterns that avoid unnecessary re-renders.
Handle errors idiomatically in Rust — Result, Option, the ? operator, custom error types, and the thiserror/anyhow ecosystem.
Master Rust's pattern matching — match expressions, if let, while let, destructuring, guards, and patterns in function parameters.
Master Rust traits and generics — defining traits, trait bounds, default methods, trait objects, and generic data structures.
A practical guide to SQL Common Table Expressions: the WITH clause, recursive CTEs, readability improvements, materialization hints, and when CTEs outperform subqueries.
Extract reusable components from Tailwind utility classes: @apply, component extraction patterns, the plugin API, design tokens, and strategies for maintaining consistency at scale.
Build responsive layouts with Tailwind CSS: mobile-first breakpoints, responsive utilities, container queries, and practical patterns for real-world responsive components.
A system design deep dive into building search autocomplete: trie data structures, ranking algorithms, caching strategies, data collection pipelines, and real-time update mechanisms.
Write reliable E2E tests with Cypress — selectors, assertions, network stubbing, custom commands, and CI integration.
Understand the tradeoffs between unit tests and integration tests. Learn the testing pyramid, trophy, and practical strategies for effective test suites.
Learn when and how to mock dependencies in unit tests. Covers stubs, spies, fakes, mock patterns, and how to avoid over-mocking.
Master pytest fixtures for reusable test setup and teardown. Covers scopes, parameterization, factories, autouse, and fixture composition.
Learn to test React components the right way with React Testing Library. Covers rendering, queries, user events, async testing, and best practices.
Learn how to wire AWS CodeBuild and CodeDeploy together to build artifacts, run tests, and deploy to EC2, ECS, or Lambda with blue/green and canary strategies.
Build serverless ETL jobs with AWS Glue. Learn the Data Catalog, crawlers, Spark and Python shell jobs, partitioning, bookmarks, and how to avoid surprise DPU bills.
Understand AWS PrivateLink: interface endpoints, endpoint services, how it differs from VPC peering and Transit Gateway, and when to choose it for private connectivity.
A practical guide to AWS Secrets Manager: creating secrets, retrieving them from apps, automatic rotation, IAM access control, and choosing it over SSM Parameter Store.
Learn how to configure Amazon SQS dead-letter queues (DLQs) to isolate poison messages, debug consumer failures, and protect your workers from infinite retry loops.
Tour the most useful design patterns in modern C++ — singleton, factory, observer, strategy, RAII — and learn when each one earns its keep.
Compare exceptions and error codes in C++ for handling failures — performance, ergonomics, and when each style fits real codebases.
Learn how std::string_view gives you cheap, non-owning views into strings — when to use it, how it speeds up code, and how to avoid dangling references.
Set up GoogleTest in a CMake project and write clear unit tests with assertions, fixtures, and parameterized tests for confident C++ code.
Go beyond the default Django admin: customize ModelAdmin classes, list views, search, filters, inline editing, and admin actions to build a usable backoffice your team will actually enjoy.
Understand Django's class-based views by building from View up to ListView and UpdateView. Learn the MRO, mixins, and when CBVs beat function-based views in real projects.
Master the Django template language: contexts, inheritance, includes, custom tags and filters, autoescaping, and performance tips for building maintainable server-rendered UIs.
Configure CORS in FastAPI without security holes: how the browser preflight works, which origins and headers to allow, credentials and cookies, and the most common misconfigurations to avoid.
Tailor FastAPI's auto-generated OpenAPI schema: tags, summaries, examples, response models, custom operation IDs, security schemes, and a custom Swagger UI your team will actually use.
Add rate limiting to FastAPI using slowapi and Redis: token buckets vs fixed windows, per-user and per-IP limits, returning proper headers, and avoiding the most common production mistakes.
A working introduction to gRPC: protobuf schemas, code generation, the four RPC styles, deadlines, errors, and when to pick it over REST.
How idempotency keys work, where to use them, and how to implement them correctly so clients can safely retry POST requests without creating duplicates.
A practical introduction to MongoDB for developers familiar with relational databases: documents, collections, queries, indexes, and when to pick it over SQL.
A clear-eyed guide to JWTs: structure, signing, verification, refresh flows, and the real-world failure modes nobody warns you about.
OAuth2 demystified for working developers: the four flows, access and refresh tokens, PKCE, scopes, and where security actually breaks in practice.
Build a real WebSocket server in Node.js: handshake, broadcasting, heartbeats, backpressure, and scaling beyond a single process.
Practical Redis caching patterns: cache-aside, write-through, TTL choices, stampede protection, and invalidation strategies that survive production.
Use the AWS Cloud Development Kit to define cloud infrastructure in TypeScript with constructs, stacks, and CloudFormation as the deploy engine.
Learn how Amazon CloudFront works: origins, distributions, cache behaviors, invalidations, signed URLs, and pairing CloudFront with S3 for static sites.
Learn AWS IAM fundamentals: root vs IAM users, JSON policies, roles for services, least privilege, and common pitfalls that lead to security incidents.